OpenPanel/docker/apache/entrypoint.sh

140 lines
3.4 KiB
Bash
Raw Normal View History

2024-05-08 07:12:08 +00:00
#!/bin/bash
echo "Container is starting..."
2024-05-10 05:28:28 +00:00
: '
CONFIGURATION
On restart grant sudo if set, store random ip
'
2024-05-08 07:12:08 +00:00
CONTAINER_IP=$(hostname -i)
OLD_IP="tst"
2024-05-10 05:28:28 +00:00
SUDO="NO"
2024-05-08 07:12:08 +00:00
# Configuration files and directories
memcached_dir="/var/run/memcached/"
apache_default_site="/etc/apache2/sites-available/000-default.conf"
: '
START SERVICES
On unpause conditionally start only those services that user already enabled
'
MONGODB_STATUS="off"
ELASTICSEARCH_STATUS="off"
REDIS_STATUS="off"
MEMCACHED_STATUS="off"
SSHD_STATUS="off"
PHP56FPM_STATUS="off"
PHP70FPM_STATUS="off"
PHP71FPM_STATUS="off"
PHP72FPM_STATUS="off"
PHP73FPM_STATUS="off"
PHP74FPM_STATUS="off"
PHP80FPM_STATUS="off"
PHP81FPM_STATUS="off"
PHP82FPM_STATUS="off"
PHP83FPM_STATUS="off"
PHP84FPM_STATUS="off"
MYSQL_STATUS="off"
CRON_STATUS="off"
APACHE_STATUS="off"
start_service() {
if [ "$1" == "on" ]; then
echo "Starting $2..."
service "$2" start
fi
}
start_service "$MONGODB_STATUS" "mongodb"
start_service "$ELASTICSEARCH_STATUS" "elasticsearch"
start_service "$REDIS_STATUS" "redis-server"
start_service "$MEMCACHED_STATUS" "memcached"
start_service "$SSHD_STATUS" "ssh"
start_service "$PHP56FPM_STATUS" "php5.6-fpm"
start_service "$PHP70FPM_STATUS" "php7.0-fpm"
start_service "$PHP71FPM_STATUS" "php7.1-fpm"
start_service "$PHP72FPM_STATUS" "php7.2-fpm"
start_service "$PHP73FPM_STATUS" "php7.3-fpm"
start_service "$PHP74FPM_STATUS" "php7.4-fpm"
start_service "$PHP80FPM_STATUS" "php8.0-fpm"
start_service "$PHP81FPM_STATUS" "php8.1-fpm"
start_service "$PHP82FPM_STATUS" "php8.2-fpm"
start_service "$PHP83FPM_STATUS" "php8.3-fpm"
start_service "$PHP84FPM_STATUS" "php8.4-fpm"
start_service "$MYSQ_STATUS" "mysql"
start_service "$CRON_STATUS" "cron"
start_service "$APACHE_STATUS" "apache2"
: '
CRON
fix for https://github.com/stefanpejcic/OpenPanel/issues/75
'
chown :crontab /var/spool/cron/crontabs/
: '
APACHE
Enable all user websites and create directory for access logs.
'
#Make domlogs
mkdir -p /var/log/apache2/domlogs
# Replace the old IP address with the containers new IP in nginx config files and enable website
replace_ip_in_sites() {
if [ -n "$OLD_IP" ]; then
local site_files="/etc/apache2/sites-available"
for file in $site_files; do
if [ -f "$file" ]; then
echo "Updating IP in $file..."
sed -i "s/$OLD_IP/$CONTAINER_IP/g" "$file"
echo "Added $file to apache2 sites-enabled..."
a2ensite "$file"
fi
done
fi
}
# (OLD_IP Has value only on re-run)
replace_ip_in_sites
# to prevent users from editing the files..
chmod 700 /etc/apache2/sites-available
chmod 700 /etc/apache2/sites-enabled
sites_available_dir="/etc/apache2/sites-available"
if [ "$(grep 'OLD_IP="tst"' /etc/entrypoint.sh)" ]; then
echo "Apache is not started, since there are no websites yet."
else
# if there are any sites, start the service
if [ "$(ls -A $sites_available_dir | grep -v 'default')" ]; then
service apache2 start
echo "Apache service started."
else
echo "No websites found in $sites_available_dir. Apache service not started automatically."
fi
fi
2024-05-10 05:28:28 +00:00
# sudo
if grep -q 'SUDO="YES"' /etc/entrypoint.sh; then
# Add user with UID 1000 to the sudo group
usermod -aG sudo -u 1000 $(getent passwd 1000 | cut -d: -f1)
fi
2024-05-08 07:12:08 +00:00
# Save the current IP for reuse
sed -i "s/$OLD_IP/$CONTAINER_IP/g" "$0"