install-debian-server.sh 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654
  1. #!/bin/sh
  2. # bachir soussi chiadmi
  3. #
  4. # http://www.pontikis.net/blog/debian-9-stretch-rc3-web-server-setup-php7-mariadb
  5. # http://web-74.com/blog/reseaux/gerer-le-deploiement-facilement-avec-git/
  6. #
  7. echo '\033[35m
  8. ____ __ _ _____
  9. / __ \___ / /_ (_)___ _____ / ___/___ ______ _____ _____
  10. / / / / _ \/ __ \/ / __ `/ __ \ \__ \/ _ \/ ___/ | / / _ \/ ___/
  11. / /_/ / __/ /_/ / / /_/ / / / / ___/ / __/ / | |/ / __/ /
  12. /_____/\___/_.___/_/\__,_/_/ /_/ /____/\___/_/ |___/\___/_/
  13. \033[0m'
  14. echo "\033[35;1mThis script has been tested only on Linux Debian 9 \033[0m"
  15. echo "Please run this script as root"
  16. echo -n "Should we start? [Y|n] "
  17. read yn
  18. yn=${yn:-y}
  19. if [ "$yn" != "y" ]; then
  20. echo "aborting script!"
  21. exit
  22. fi
  23. # get the current position
  24. _cwd="$(pwd)"
  25. echo '\033[35m
  26. __ ______ __________ ___ ____ ______
  27. / / / / __ \/ ____/ __ \/ | / __ \/ ____/
  28. / / / / /_/ / / __/ /_/ / /| | / / / / __/
  29. / /_/ / ____/ /_/ / _, _/ ___ |/ /_/ / /___
  30. \____/_/ \____/_/ |_/_/ |_/_____/_____/
  31. \033[0m'
  32. apt-get update
  33. apt-get upgrade
  34. echo '\033[35m
  35. __ ____
  36. / |/ (_)_________
  37. / /|_/ / / ___/ ___/
  38. / / / / (__ ) /__
  39. /_/ /_/_/____/\___/
  40. \033[0m'
  41. apt-get --yes --force-yes install vim
  42. sed -i "s/^# en_GB.UTF-8/en_GB.UTF-8/g" /etc/locale.gen
  43. locale-gen
  44. apt-get --yes --force-yes install ntp
  45. echo '\033[35m
  46. ______________ _______ _____ __ __
  47. / ____/ _/ __ \/ ____/ | / / | / / / /
  48. / /_ / // /_/ / __/ | | /| / / /| | / / / /
  49. / __/ _/ // _, _/ /___ | |/ |/ / ___ |/ /___/ /___
  50. /_/ /___/_/ |_/_____/ |__/|__/_/ |_/_____/_____/
  51. \033[0m'
  52. echo "\033[35;1mInstalling ufw and setup firewall (allowing only ssh and http) \033[0m"
  53. sleep 3
  54. apt-get --yes --force-yes install ufw
  55. # ufw allow ssh # knockd will open the ssh port
  56. ufw allow http
  57. ufw allow https
  58. ufw enable
  59. ufw status verbose
  60. echo "\033[92;1mufw installed and firwall configured\033[Om"
  61. echo '\033[35m
  62. ______ _ _____ __
  63. / ____/___ _(_) /__ \ / /_ ____ _____
  64. / /_ / __ `/ / /__/ // __ \/ __ `/ __ \
  65. / __/ / /_/ / / // __// /_/ / /_/ / / / /
  66. /_/ \__,_/_/_//____/_.___/\__,_/_/ /_/
  67. \033[0m'
  68. echo "\033[35;1mInstalling fall2ban \033[0m"
  69. apt-get --yes --force-yes install fail2ban
  70. cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  71. # ToDo ask for email and configure jail.local with it
  72. systemctl enable fail2ban
  73. systemctl restart fail2ban
  74. echo "\033[92;1mfail2ban installed and configured\033[Om"
  75. echo '\033[35m
  76. __ __ __
  77. / /______ ____ _____/ /______/ /
  78. / //_/ __ \/ __ \/ ___/ //_/ __ /
  79. / ,< / / / / /_/ / /__/ ,< / /_/ /
  80. /_/|_/_/ /_/\____/\___/_/|_|\__,_/
  81. \033[0m'
  82. echo "\033[35;1mInstalling knockd to control ssh port opening\033[0m"
  83. sleep 3
  84. apt-get --yes --force-yes install knockd
  85. mv /etc/knockd.conf /etc/knockd.conf.ori
  86. cp "$_cwd"/assets/knockd.conf /etc/knockd.conf
  87. echo -n "define a sequence number for opening ssh (as 7000,8000,9000) : "
  88. read sq
  89. sed -i "s/7000,8000,9000/$sq/g" /etc/knockd.conf
  90. sed -i 's/START_KNOCKD=0/START_KNOCKD=1/g' /etc/default/knockd
  91. /etc/init.d/knockd start
  92. echo "\033[92;1mknockd installed and configured\033[Om"
  93. echo "\033[92;1mplease note this sequence for future ssh knocking\033[Om"
  94. echo "$sq1"
  95. sleep 3
  96. echo '\033[35m
  97. __ _______ __________
  98. / / / / ___// ____/ __ \
  99. / / / /\__ \/ __/ / /_/ /
  100. / /_/ /___/ / /___/ _, _/
  101. \____//____/_____/_/ |_|
  102. \033[0m'
  103. echo "\033[35;1mCreate new user (you will be asked a user name and a password) \033[0m"
  104. sleep 3
  105. echo -n "Enter user name: "
  106. read user
  107. # read -p "Continue? (Y/N): " confirm && [[ $confirm == [yY] || $confirm == [yY][eE][sS] ]] || exit 1
  108. adduser "$user"
  109. echo "adding $user to admin group and limiting su to the admin group"
  110. groupadd admin
  111. usermod -a -G admin "$user"
  112. # allow admin group to su
  113. dpkg-statoverride --update --add root admin 4750 /bin/su
  114. echo "\033[92;1muser $user configured\033[Om"
  115. echo '\033[35m
  116. __ ______ ______
  117. / |/ / | / _/ /
  118. / /|_/ / /| | / // /
  119. / / / / ___ |_/ // /___
  120. /_/ /_/_/ |_/___/_____/
  121. \033[0m'
  122. echo "\033[35;1mEnable mail sending for php \033[0m"
  123. # http://www.sycha.com/lamp-setup-debian-linux-apache-mysql-php#anchor13
  124. sleep 3
  125. apt-get --yes --force-yes install exim4
  126. echo "\033[35;1mConfiguring EXIM4 \033[0m"
  127. while [ "$configexim" != "y" ] && [ "$configexim" != "n" ]
  128. do
  129. echo -n "Should we configure exim4 ? [y|n] "
  130. read configexim
  131. done
  132. if [ "$configexim" = "y" ]; then
  133. echo "choose the first option :internet site; mail is sent and received directly using SMTP. Leave the other options as default exepted for domain name which should be valid domain name if you want your mails to not be considered as spam"
  134. echo "press any key to continue."
  135. read continu
  136. dpkg-reconfigure exim4-config
  137. else
  138. echo 'exim not configured'
  139. fi
  140. systemctl enable exim4
  141. systemctl restart exim4
  142. # dkim spf
  143. # https://debian-administration.org/article/718/DKIM-signing_outgoing_mail_with_exim4
  144. echo "\033[35;1mConfiguring DKIM \033[0m"
  145. while [ "$installdkim" != "y" ] && [ "$installdkim" != "n" ]
  146. do
  147. echo -n "Should we install dkim for exim4 ? [y|n] "
  148. read installdkim
  149. done
  150. if [ "$installdkim" = "y" ]; then
  151. echo -n "Choose a domain for dkim (same domain as you chose before for exim4): "
  152. read domain
  153. selector=$(date +%Y%m%d)
  154. mkdir /etc/exim4/dkim
  155. openssl genrsa -out /etc/exim4/dkim/"$domain"-private.pem 1024 -outform PEM
  156. openssl rsa -in /etc/exim4/dkim/"$domain"-private.pem -out /etc/exim4/dkim/"$domain".pem -pubout -outform PEM
  157. chown root:Debian-exim /etc/exim4/dkim/"$domain"-private.pem
  158. chmod 440 /etc/exim4/dkim/"$domain"-private.pem
  159. cp "$_cwd"/assets/exima4_dkim.conf /etc/exim4/conf.d/main/00_local_macros
  160. sed -ir "s/DOMAIN_TO_CHANGE/$domain/g" /etc/exim4/conf.d/main/00_local_macros
  161. sed -ir "s/DATE_TO_CHANGE/$selector/g" /etc/exim4/conf.d/main/00_local_macros
  162. update-exim4.conf
  163. systemctl restart exim4
  164. echo "please create a TXT entry in your dns zone : $selector._domainkey.$domain \n"
  165. echo "your public key is : \n"
  166. cat /etc/exim4/dkim/"$domain".pem
  167. echo "press any key to continue."
  168. read continu
  169. else
  170. echo 'dkim not installed'
  171. fi
  172. echo '\033[35m
  173. __________ __ __
  174. / ___/ ___// / / /
  175. \__ \\__ \/ /_/ /
  176. ___/ /__/ / __ /
  177. /____/____/_/ /_/
  178. \033[0m'
  179. while [ "$securssh" != "y" ] && [ "$securssh" != "n" ]
  180. do
  181. echo -n "Securing ssh (disabling root login)? [y|n] "
  182. read securssh
  183. # securssh=${securssh:-y}
  184. done
  185. if [ "$securssh" = "y" ]; then
  186. sed -i 's/PermitRootLogin\ yes/PermitRootLogin no/g' /etc/ssh/sshd_config
  187. sed -i 's/PermitEmptyPasswords\ yes/PermitEmptyPasswords no/g' /etc/ssh/sshd_config
  188. sed -i 's/Protocol\ [0-9]/Protocol 2/g' /etc/ssh/sshd_config
  189. systemctl reload ssh
  190. echo "\033[92;1mSSH secured\033[Om"
  191. else
  192. echo 'root user can still conect through ssh'
  193. fi
  194. echo '\033[35m
  195. ______ _______ _____
  196. | ____|__ __| __ \
  197. | |__ | | | |__) |
  198. | __| | | | ___/
  199. | | | | | |
  200. |_| |_| |_|
  201. \033[0m'
  202. echo -n "Should we install ftp server? [Y|n] "
  203. read yn
  204. yn=${yn:-y}
  205. if [ "$yn" = "y" ]; then
  206. echo "installing proftpd"
  207. apt-get --yes --force-yes install proftpd
  208. while [ "$_server_name" = "" ]
  209. do
  210. read -p "enter a server name ? " _server_name
  211. if [ "$_server_name" != "" ]; then
  212. read -p "is server name $_server_name correcte [y|n] " validated
  213. if [ "$validated" = "y" ]; then
  214. break
  215. else
  216. _server_name=""
  217. fi
  218. fi
  219. done
  220. echo "Configuring proftpd"
  221. cp "$_cwd"/assets/proftpd.conf /etc/proftpd/conf.d/"$_server_name".conf
  222. sed -ir "s/example/$_server_name/g" /etc/proftpd/conf.d/"$_server_name".conf
  223. ufw allow ftp
  224. addgroup ftpuser
  225. systemctl enable proftpd
  226. systemctl restart proftpd
  227. echo "ftp installtion done"
  228. echo "to permit to a user to connect through ftp, add him to the ftpuser group by running : usermod -a -G ftpuser USERNAME"
  229. echo "FTP users are jailed on their home by default"
  230. fi
  231. # TODO : allow ssh/ftp connection only from given ips
  232. echo '\033[35m
  233. __
  234. / /__ ____ ___ ____
  235. / / _ \/ __ `__ \/ __ \
  236. / / __/ / / / / / /_/ /
  237. /_/\___/_/ /_/ /_/ .___/
  238. /_/
  239. \033[0m'
  240. echo "\033[35;1mLEMP server (Nginx Mysql Php) \033[0m"
  241. sleep 3
  242. while [ "$lemp" != "y" ] && [ "$lemp" != "n" ]
  243. do
  244. echo -n "Should we install lemp ? [y|n] "
  245. read lemp
  246. done
  247. if [ "$lemp" = "y" ]; then
  248. echo '\033[35m
  249. __ ___ __
  250. / |/ /_ ___________ _/ /
  251. / /|_/ / / / / ___/ __ `/ /
  252. / / / / /_/ (__ ) /_/ / /
  253. /_/ /_/\__, /____/\__, /_/
  254. /____/ /_/
  255. \033[0m'
  256. echo "\033[35;1minstalling Mysql \033[0m"
  257. sleep 3
  258. apt-get --yes --force-yes install mariadb-server
  259. mysql_secure_installation
  260. systemctl enable mariadb.service
  261. systemctl restart mariadb.service
  262. echo "\033[92;1mmysql installed\033[Om"
  263. echo '\033[35m
  264. _ __ _
  265. / | / /___ _(_)___ _ __
  266. / |/ / __ `/ / __ \| |/_/
  267. / /| / /_/ / / / / /> <
  268. /_/ |_/\__, /_/_/ /_/_/|_|
  269. /____/
  270. \033[0m'
  271. echo "\033[35;1mInstalling Nginx \033[0m"
  272. sleep 3
  273. apt-get --yes --force-yes install nginx
  274. cp "$_cwd"/assets/nginx.conf /etc/nginx/conf.d/
  275. systemctl enable nginx
  276. systemctl restart nginx
  277. echo "\033[92;1mNginx installed\033[Om"
  278. echo '\033[35m
  279. ____ __ ______
  280. / __ \/ / / / __ \
  281. / /_/ / /_/ / /_/ /
  282. / ____/ __ / ____/
  283. /_/ /_/ /_/_/
  284. \033[0m'
  285. echo "\033[35;1mInstalling PHP 7.0 \033[0m"
  286. sleep 3
  287. apt-get --yes --force-yes install php7.0-fpm php7.0-mysql php7.0-opcache php7.0-curl php7.0-mbstring php7.0-zip php7.0-xml php7.0-gd php7.0-mcrypt php-memcached
  288. echo "Configuring PHP"
  289. mkdir /var/log/php
  290. chown www-data /var/log/php
  291. cp "$_cwd"/assets/logrotate-php /etc/logrotate.d/php
  292. # echo "Installing memecached"
  293. # replaced by redis
  294. # apt-get --yes --force-yes install memcached
  295. # sed -i "s/-m\s64/-m 128/g" /etc/memcached.conf
  296. #
  297. # systemctl start memcached
  298. echo "\033[92;1mphp installed\033[Om"
  299. echo '\033[35m
  300. __ __ ___ ___ __ _
  301. ____ / /_ ____ / |/ /_ __/ | ____/ /___ ___ (_)___
  302. / __ \/ __ \/ __ \/ /|_/ / / / / /| |/ __ / __ `__ \/ / __ \
  303. / /_/ / / / / /_/ / / / / /_/ / ___ / /_/ / / / / / / / / / /
  304. / .___/_/ /_/ .___/_/ /_/\__, /_/ |_\__,_/_/ /_/ /_/_/_/ /_/
  305. /_/ /_/ /____/
  306. \033[0m'
  307. echo "\033[35;1mInstalling phpMyAdmin \033[0m"
  308. apt-get --yes --force-yes install phpmyadmin
  309. # echo "include /etc/phpmyadmin/apache.conf" >> /etc/apache2/apache2.conf
  310. # ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
  311. # a2enconf phpmyadmin.conf
  312. echo "\033[35;1msecuring phpMyAdmin \033[0m"
  313. # sed -i "s/DirectoryIndex index.php/DirectoryIndex index.php\nAllowOverride all/"
  314. cp "$_cwd"/assets/phpmyadmin_htaccess > /usr/share/phpmyadmin/.htaccess
  315. echo -n "define a user name for phpmyadmin : "
  316. read un
  317. htpasswd -c /etc/phpmyadmin/.htpasswd $un
  318. # service apache2 restart
  319. echo "\033[92;1mphpMyAdmin installed\033[Om"
  320. echo "\033[92;1mYou can access it at yourip/phpmyadmin\033[Om"
  321. echo '\033[35m
  322. ____ ___
  323. / __ \___ ____/ (_)____
  324. / /_/ / _ \/ __ / / ___/
  325. / _, _/ __/ /_/ / (__ )
  326. /_/ |_|\___/\__,_/_/____/
  327. \033[0m'
  328. echo "\033[35;1mInstalling Redis \033[0m"
  329. sleep 3
  330. apt-get --yes --force-yes install redis-server php-redis
  331. # cp "$_cwd"/assets/nginx.conf /etc/nginx/conf.d/
  332. systemctl enable redis-server
  333. systemctl restart redis-server
  334. echo "\033[92;1mRedis installed\033[Om"
  335. # echo '\033[35m
  336. # __ __
  337. # _ __/ /_ ____ _____/ /_
  338. # | | / / __ \/ __ \/ ___/ __/
  339. # | |/ / / / / /_/ (__ ) /_
  340. # |___/_/ /_/\____/____/\__/
  341. # \033[0m'
  342. # echo "\033[35;1mVHOST install \033[0m"
  343. # while [ "$vh" != "y" ] && [ "$vh" != "n" ]
  344. # do
  345. # echo -n "Should we install a vhost? [y|n] "
  346. # read vh
  347. # # vh=${vh:-y}
  348. # done
  349. # if [ "$vh" = "y" ]; then
  350. #
  351. # while [ "$_host_name" = "" ]
  352. # do
  353. # read -p "enter a hostname ? " _host_name
  354. # if [ "$_host_name" != "" ]; then
  355. # read -p "is hostname $_host_name correcte [y|n] " validated
  356. # if [ "$validated" = "y" ]; then
  357. # break
  358. # else
  359. # _host_name=""
  360. # fi
  361. # fi
  362. # done
  363. #
  364. # cp "$_cwd"/assets/example.org.conf /etc/apache2/sites-available/"$_host_name".conf
  365. # sed -ir "s/example\.org/$_host_name/g" /etc/apache2/sites-available/"$_host_name".conf
  366. #
  367. # mkdir -p /srv/www/"$_host_name"/public_html
  368. # mkdir /srv/www/"$_host_name"/logs
  369. # #set proper right to user will handle the app
  370. # chown -R root:admin /srv/www/"$_host_name"/
  371. # chmod -R g+w /srv/www/"$_host_name"/
  372. # chmod -R g+r /srv/www/"$_host_name"/
  373. #
  374. # # create a shortcut to the site
  375. # mkdir /home/"$user"/www/
  376. # chown "$user":admin /home/"$user"/www/
  377. # ln -s /srv/www/"$_host_name" /home/"$user"/www/"$_host_name"
  378. #
  379. # #activate the vhost
  380. # a2ensite "$_host_name".conf
  381. #
  382. # #restart apache
  383. # service apache2 restart
  384. # echo "\033[92;1mvhost $_host_name configured\033[Om"
  385. # else
  386. # echo "Vhost installation aborted"
  387. # fi
  388. # TODO supervising
  389. # echo '\033[35m
  390. # __ ___ _ __ __ __ ___ _
  391. # / |/ /__ ___ (_) /_ _/_/ / |/ /_ _____ (_)__
  392. # / /|_/ / _ \/ _ \/ / __/ _/_/ / /|_/ / // / _ \/ / _ \
  393. # /_/ /_/\___/_//_/_/\__/ /_/ /_/ /_/\_,_/_//_/_/_//_/
  394. # \033[0m'
  395. # echo "\033[35;1mInstalling Munin \033[0m"
  396. # sleep 3
  397. # # https://www.howtoforge.com/tutorial/server-monitoring-with-munin-and-monit-on-debian/
  398. # apt-get --yes --force-yes install munin munin-node munin-plugins-extra
  399. # # Configure Munin
  400. # # enable plugins
  401. # ln -s /usr/share/munin/plugins/mysql_ /etc/munin/plugins/mysql_
  402. # ln -s /usr/share/munin/plugins/mysql_bytes /etc/munin/plugins/mysql_bytes
  403. # ln -s /usr/share/munin/plugins/mysql_innodb /etc/munin/plugins/mysql_innodb
  404. # ln -s /usr/share/munin/plugins/mysql_isam_space_ /etc/munin/plugins/mysql_isam_space_
  405. # ln -s /usr/share/munin/plugins/mysql_queries /etc/munin/plugins/mysql_queries
  406. # ln -s /usr/share/munin/plugins/mysql_slowqueries /etc/munin/plugins/mysql_slowqueries
  407. # ln -s /usr/share/munin/plugins/mysql_threads /etc/munin/plugins/mysql_threads
  408. #
  409. # ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/
  410. # ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/
  411. # ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/
  412. #
  413. # # ln -s /usr/share/munin/plugins/fail2ban /etc/munin/plugins/
  414. #
  415. # # dbdir, htmldir, logdir, rundir, and tmpldir
  416. # sed -i 's/^#dbdir/dbdir/' /etc/munin/munin.conf
  417. # sed -i 's/^#htmldir/htmldir/' /etc/munin/munin.conf
  418. # sed -i 's/^#logdir/logdir/' /etc/munin/munin.conf
  419. # sed -i 's/^#rundir/rundir/' /etc/munin/munin.conf
  420. # sed -i 's/^#tmpldir/tmpldir/' /etc/munin/munin.conf
  421. #
  422. # sed -i "s/^\[localhost.localdomain\]/[${HOSTNAME}]/" /etc/munin/munin.conf
  423. #
  424. # # ln -s /etc/munin/apache24.conf /etc/apache2/conf-enabled/munin.conf
  425. # sed -i 's/Require local/Require all granted\nOptions FollowSymLinks SymLinksIfOwnerMatch/g' /etc/munin/apache24.conf
  426. # htpasswd -c /etc/munin/munin-htpasswd admin
  427. # sed -i 's/Require all granted/AuthUserFile \/etc\/munin\/munin-htpasswd\nAuthName "Munin"\nAuthType Basic\nRequire valid-user/g' /etc/munin/apache24.conf
  428. #
  429. #
  430. # service apache2 restart
  431. # service munin-node restart
  432. # echo "\033[92;1mMunin installed\033[Om"
  433. #
  434. # echo "\033[35;1mInstalling Monit \033[0m"
  435. # sleep 3
  436. # # https://www.howtoforge.com/tutorial/server-monitoring-with-munin-and-monit-on-debian/2/
  437. # apt-get --yes --force-yes install monit
  438. # # TODO setup monit rc
  439. # cat "$_cwd"/assets/monitrc > /etc/monit/monitrc
  440. #
  441. # # TODO setup webaccess
  442. # passok=0
  443. # while [ "$passok" = "0" ]
  444. # do
  445. # echo -n "Write web access password to monit"
  446. # read passwda
  447. # echo -n "ReWrite web access password to monit"
  448. # read passwdb
  449. # if [ "$passwda" = "$passwdb" ]; then
  450. # sed -i 's/PASSWD_TO_REPLACE/$passwda/g' /etc/monit/monitrc
  451. # passok=1
  452. # else
  453. # echo "pass words don't match, please try again"
  454. # fi
  455. # done
  456. #
  457. # # TODO setup mail settings
  458. # sed -i "s/server1\.example\.com/$HOSTNAME/g" /etc/monit/monitrc
  459. #
  460. # mkdir /var/www/html/monit
  461. # echo "hello" > /var/www/html/monit/token
  462. #
  463. # service monit start
  464. #
  465. # echo "\033[92;1mMonit installed\033[Om"
  466. # echo '\033[35m
  467. # ___ __ __
  468. # / |_ _______/ /_____ _/ /_
  469. # / /| | | /| / / ___/ __/ __ `/ __/
  470. # / ___ | |/ |/ (__ ) /_/ /_/ / /_
  471. # /_/ |_|__/|__/____/\__/\__,_/\__/
  472. # \033[0m'
  473. # echo "\033[35;1mInstalling Awstat \033[0m"
  474. # sleep 3
  475. # apt-get --yes --force-yes install awstats
  476. # # Configure AWStats
  477. # temp=`grep -i sitedomain /etc/awstats/awstats.conf.local | wc -l`
  478. # if [ $temp -lt 1 ]; then
  479. # echo SiteDomain="$_host_name" >> /etc/awstats/awstats.conf.local
  480. # fi
  481. # # Disable Awstats from executing every 10 minutes. Put a hash in front of any line.
  482. # sed -i 's/^[^#]/#&/' /etc/cron.d/awstats
  483. # echo "\033[92;1mAwstat installed\033[Om"
  484. else
  485. echo 'lemp server not installed'
  486. fi
  487. # echo '\033[35m
  488. # ______________ _______
  489. # /_ __/ ____/ |/ / __ \
  490. # / / / __/ / /|_/ / /_/ /
  491. # / / / /___/ / / / ____/
  492. # /_/ /_____/_/ /_/_/
  493. # \033[0m'
  494. # function check_tmp_secured {
  495. # temp1=`grep -w "/var/tempFS /tmp ext3 loop,nosuid,noexec,rw 0 0" /etc/fstab | wc -l`
  496. # temp2=`grep -w "tmpfs /tmp tmpfs rw,noexec,nosuid 0 0" /etc/fstab | wc -l`
  497. # if [ $temp1 -gt 0 ] || [ $temp2 -gt 0 ]; then
  498. # return 1
  499. # else
  500. # return 0
  501. # fi
  502. # } # End function check_tmp_secured
  503. # function secure_tmp_tmpfs {
  504. # cp /etc/fstab /etc/fstab.bak
  505. # # Backup /tmp
  506. # cp -Rpf /tmp /tmpbackup
  507. # rm -rf /tmp
  508. # mkdir /tmp
  509. # mount -t tmpfs -o rw,noexec,nosuid tmpfs /tmp
  510. # chmod 1777 /tmp
  511. # echo "tmpfs /tmp tmpfs rw,noexec,nosuid 0 0" >> /etc/fstab
  512. # # Restore /tmp
  513. # cp -Rpf /tmpbackup/* /tmp/ >/dev/null 2>&1
  514. # #Remove old tmp dir
  515. # rm -rf /tmpbackup
  516. # # Backup /var/tmp and link it to /tmp
  517. # mv /var/tmp /var/tmpbackup
  518. # ln -s /tmp /var/tmp
  519. # # Copy the old data back
  520. # cp -Rpf /var/tmpold/* /tmp/ >/dev/null 2>&1
  521. # # Remove old tmp dir
  522. # rm -rf /var/tmpbackup
  523. # echo -e "\033[35;1m /tmp and /var/tmp secured using tmpfs. \033[0m"
  524. # } # End function secure_tmp_tmpfs
  525. # check_tmp_secured
  526. # if [ $? = 0 ]; then
  527. # secure_tmp_tmpfs
  528. # else
  529. # echo -e "\033[35;1mFunction canceled. /tmp already secured. \033[0m"
  530. # fi
  531. echo '\033[35m
  532. ____ __ _______ __
  533. / __ \____ / /_ / ____(_) /__ _____
  534. / / / / __ \/ __/ / /_ / / / _ \/ ___/
  535. / /_/ / /_/ / /_ / __/ / / / __(__ )
  536. /_____/\____/\__/ /_/ /_/_/\___/____/
  537. \033[0m'
  538. #installing better prompt and some goodies for root
  539. echo "\033[35;1mInstalling shell prompt for root \033[0m"
  540. sleep 3
  541. echo "cloning github.com/bachy/dotfiles-server"
  542. git clone git://github.com/bachy/dotfiles-server.git ~/.dotfiles-server && cd ~/.dotfiles-server && ./install.sh && cd ~
  543. source ~/.bashrc
  544. echo "\033[92;1mDot files installed for root, you should installed them manually for $USER\033[0m"
  545. # TODO add warning message on ssh connection if system needs updates
  546. # TODO install and configure tmux
  547. echo '\033[35m
  548. ___ __ __ __ __ __
  549. / | __ __/ /_____ / / / /___ ____/ /___ _/ /____
  550. / /| |/ / / / __/ __ \ / / / / __ \/ __ / __ `/ __/ _ \
  551. / ___ / /_/ / /_/ /_/ / / /_/ / /_/ / /_/ / /_/ / /_/ __/
  552. /_/ |_\__,_/\__/\____/ \____/ .___/\__,_/\__,_/\__/\___/
  553. /_/
  554. \033[0m'
  555. # https://www.howtoforge.com/how-to-configure-automatic-updates-on-debian-wheezy
  556. # https://www.bisolweb.com/tutoriels/serveur-vps-ovh-partie-5-installation-apticron/
  557. echo "\033[35;1mInstalling apticron \033[0m"
  558. apt-get --yes --force-yes install apticron
  559. sleep 3
  560. echo -n "Enter an email: "
  561. read email
  562. sed -ir "s/EMAIL=\"root\"/EMAIL=\"$email\"/g" /etc/apticron/apticron.conf
  563. # sed -ir "s/# DIFF_ONLY=\"1\"/DIFF_ONLY=\"1\"/g" /etc/apticron/apticron.conf
  564. sed -ir "s/# NOTIFY_NEW=\"0\"/NOTIFY_NEW=\"0\"/g" /etc/apticron/apticron.conf
  565. echo "\033[92;1mApticron installed and configured\033[0m"
  566. echo '\033[35m
  567. __
  568. ___ ____ ____/ /
  569. / _ \/ __ \/ __ /
  570. / __/ / / / /_/ /
  571. \___/_/ /_/\__,_/
  572. \033[0m'
  573. echo "\033[35;1m* * script done * * \033[0m"