init.inc 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. #!/bin/bash
  2. hestia_setup_init() {
  3. echo "Initializing Hestia configuration..."
  4. mkdir -p $HESTIA/conf $HESTIA/log $HESTIA/ssl $HESTIA/data/ips \
  5. $HESTIA/data/queue $HESTIA/data/users $HESTIA/data/firewall \
  6. $HESTIA/data/sessions
  7. mkdir -p /var/run/php
  8. touch $HESTIA/data/queue/backup.pipe $HESTIA/data/queue/disk.pipe \
  9. $HESTIA/data/queue/webstats.pipe $HESTIA/data/queue/restart.pipe \
  10. $HESTIA/data/queue/traffic.pipe $HESTIA/log/system.log \
  11. $HESTIA/log/nginx-error.log $HESTIA/log/auth.log \
  12. $HESTIA/conf/hestia.conf
  13. chmod 750 $HESTIA/conf $HESTIA/data/users $HESTIA/data/ips $HESTIA/log
  14. chmod -R 750 $HESTIA/data/queue
  15. chmod 660 $HESTIA/conf/hestia.conf
  16. chmod 660 $HESTIA/log/*
  17. chmod 770 $HESTIA/data/sessions
  18. if [ ! -e /var/log/hestia ]; then
  19. ln -s $HESTIA/log /var/log/hestia
  20. fi
  21. HESTIA_VERSION=$(osal_package_getversion 'hestia')
  22. osal_kv_write $HESTIA/conf/hestia.conf 'VERSION' $HESTIA_VERSION
  23. echo " - Installing hosting packages and templates..."
  24. cp -rf $HESTIA_INSTALL_DIR/packages $HESTIA/data/
  25. cp -rf $HESTIA_INSTALL_DIR/templates $HESTIA/data/
  26. # General OS
  27. # Add nologin as a valid system shell
  28. if [ -z "$(grep nologin /etc/shells)" ]; then
  29. echo "/usr/sbin/nologin" >> /etc/shells
  30. fi
  31. if [ ! "$param_lang" ]; then
  32. param_lang='en'
  33. fi
  34. if [ ! "$param_server_name" ]; then
  35. param_server_name=$(hostname -f)
  36. fi
  37. if [ ! "${param_admin-email}" ]; then
  38. param_admin_email="admin@$param_server_name"
  39. fi
  40. lang=$(osal_kv_read $HESTIA/conf/hestia.conf 'LANGUAGE' '')
  41. if [ ! "$lang" ] || [ "$lang" != "$param_lang" ]; then
  42. osal_kv_write $HESTIA/conf/hestia.conf 'LANGUAGE' $param_lang
  43. lang=$param_lang
  44. fi
  45. # Default values
  46. if [ ! "$DB_PMA_ALIAS" ]; then
  47. osal_kv_write $HESTIA/conf/hestia.conf 'DB_PMA_ALIAS' 'phpMyAdmin'
  48. fi
  49. # Default values
  50. if [ ! "$DB_PMA_ALIAS" ]; then
  51. osal_kv_write $HESTIA/conf/hestia.conf 'DB_PGA_ALIAS' 'phpPgAdmin'
  52. fi
  53. if ! id "admin" &>/dev/null; then
  54. echo " - Creating admin user..."
  55. if [ ! "$param_admin_password" ]; then
  56. param_admin_password=$(osal_gen_pass)
  57. fi
  58. $HESTIA/bin/v-add-user admin ${param_admin_password} ${param_admin_email} default System Administrator
  59. $HESTIA/bin/v-change-user-shell admin nologin
  60. $HESTIA/bin/v-change-user-language admin $lang
  61. echo " Username : admin"
  62. echo " Password : $param_admin_password"
  63. fi
  64. chown admin:admin $HESTIA/data/sessions
  65. chown admin:admin $HESTIA/php/var/log
  66. chown admin:admin $HESTIA/php/var/run
  67. echo " - Configuring system environment..."
  68. echo "export HESTIA='$HESTIA'" > /etc/profile.d/hestia.sh
  69. echo 'PATH=$PATH:'$HESTIA'/bin' >> /etc/profile.d/hestia.sh
  70. echo 'export PATH' >> /etc/profile.d/hestia.sh
  71. chmod 755 /etc/profile.d/hestia.sh
  72. source /etc/profile.d/hestia.sh
  73. echo " - Installing sudo configuration..."
  74. mkdir -p /etc/sudoers.d
  75. cp -f $HESTIA_INSTALL_DIR/sudo/admin /etc/sudoers.d/
  76. chmod 440 /etc/sudoers.d/admin
  77. echo " - Configuring logrotate for Hestia logs..."
  78. cp -f $HESTIA_INSTALL_DIR/logrotate/hestia /etc/logrotate.d/
  79. echo " - Installing firewall rules..."
  80. cp -rf $HESTIA_INSTALL_DIR/firewall $HESTIA/data/
  81. echo " - Configuring server hostname..."
  82. echo " Server name : $param_server_name"
  83. $HESTIA/bin/v-change-sys-hostname $param_server_name > /dev/null 2>&1
  84. if [ ! -f $HESTIA/ssl/certificate.crt ]; then
  85. echo " - Generating default self-signed SSL certificate..."
  86. $HESTIA/bin/v-generate-ssl-cert $(hostname) $param_admin_email 'US' 'California' \
  87. 'San Francisco' 'Hestia Control Panel' 'IT' > $HESTIA/ssl/tmp.pem
  88. # Parsing certificate file
  89. crt_end=$(grep -n "END CERTIFICATE-" $HESTIA/ssl/tmp.pem |cut -f 1 -d:)
  90. key_start=$(grep -n "BEGIN RSA" $HESTIA/ssl/tmp.pem |cut -f 1 -d:)
  91. key_end=$(grep -n "END RSA" $HESTIA/ssl/tmp.pem |cut -f 1 -d:)
  92. # Adding SSL certificate
  93. echo " - Adding SSL certificate to Hestia Control Panel..."
  94. sed -n "1,${crt_end}p" $HESTIA/ssl/tmp.pem > $HESTIA/ssl/certificate.crt
  95. sed -n "$key_start,${key_end}p" $HESTIA/ssl/tmp.pem > $HESTIA/ssl/certificate.key
  96. chown root:mail $HESTIA/ssl/*
  97. chmod 660 $HESTIA/ssl/*
  98. rm $HESTIA/ssl/tmp.pem
  99. fi
  100. if [ -z "$(swapon -s)" ] && [ $memory -lt 1000000 ]; then
  101. echo " - Creating 1 GB swap file..."
  102. fallocate -l 1G /swapfile
  103. chmod 600 /swapfile
  104. mkswap /swapfile
  105. swapon /swapfile
  106. echo "/swapfile none swap sw 0 0" >> /etc/fstab
  107. fi
  108. if [ ! -f /etc/ssl/dhparam.pem ]; then
  109. cp -f $HESTIA_INSTALL_DIR/ssl/dhparam.pem /etc/ssl/
  110. fi
  111. echo " - Configuring system IP addresses..."
  112. $HESTIA/bin/v-update-sys-ip
  113. echo " - Enabling and starting Hestia service..."
  114. osal_service_enable hestia
  115. osal_service_restart hestia
  116. }