#!/bin/bash set -e # Si un setup a deja ete fait, on lance juste Supervisor if [ -f /data/.setup_done ]; then echo "[OMNITUBE] Setup deja effectue. Lancement des services..." exec supervisord -c /etc/supervisor/conf.d/supervisord.conf fi echo "==========================================" echo " OMNITUBE (AVideo) - Initialisation" echo "==========================================" # ----------------------------------------------------------------------------- # 0. FIX PERMISSIONS + CREATION DOSSIERS # ----------------------------------------------------------------------------- echo "[0/7] Preparation du volume /data..." mkdir -p /data/mysql /data/videos/cache /data/videos/session \ /data/videos/logs /data/videos/userPhoto /data/videos/thumbs \ /data/videos/chart /data/videos/configuration /var/run/mysqld chown -R mysql:mysql /data/mysql /var/run/mysqld chown -R www-data:www-data /data/videos /var/www/html chmod -R 777 /data/videos /var/run/mysqld chmod 755 /data echo " OK" # ----------------------------------------------------------------------------- # 1. NETTOYAGE PID MariaDB # ----------------------------------------------------------------------------- if [ -f /data/mysql/*.pid ]; then echo "[1/7] Nettoyage PID MariaDB residuel..." rm -f /data/mysql/*.pid echo " Nettoye." fi # ----------------------------------------------------------------------------- # 2. INITIALISATION MARIADB si premier demarrage # ----------------------------------------------------------------------------- NEED_INIT=false if [ ! -d /data/mysql/mysql ]; then echo "[2/7] Premier demarrage detecte - Initialisation MariaDB..." mysql_install_db --user=mysql --datadir=/data/mysql --auth-root-authentication-method=normal NEED_INIT=true else echo "[2/7] MariaDB deja initialise." fi # ----------------------------------------------------------------------------- # 3. DEMARRAGE TEMPORAIRE MARIADB # ----------------------------------------------------------------------------- if [ "$NEED_INIT" = "true" ]; then echo "[3/7] Demarrage temporaire MariaDB..." mysqld_safe --user=mysql --datadir=/data/mysql & until mysqladmin ping -h localhost -u root --silent 2>/dev/null; do echo " Attente MariaDB..." sleep 1 done echo " MariaDB OK" # Setup root + DB avideo + DB encoder mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}'; CREATE DATABASE IF NOT EXISTS ${MYSQL_DATABASE} CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER IF NOT EXISTS '${MYSQL_USER}'@'localhost' IDENTIFIED BY '${MYSQL_PASSWORD}'; GRANT ALL PRIVILEGES ON ${MYSQL_DATABASE}.* TO '${MYSQL_USER}'@'localhost'; CREATE DATABASE IF NOT EXISTS avideo_encoder CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER IF NOT EXISTS 'avideo_encoder'@'localhost' IDENTIFIED BY 'encoder123!'; GRANT ALL PRIVILEGES ON avideo_encoder.* TO 'avideo_encoder'@'localhost'; FLUSH PRIVILEGES;" echo " Bases de donnees creees." fi # ----------------------------------------------------------------------------- # 4. IMPORT DATABASE.SQL (premier boot uniquement) # ----------------------------------------------------------------------------- if [ "$NEED_INIT" = "true" ]; then echo "[4/7] Import schema AVideo..." if [ -f /var/www/html/install/database.sql ]; then mysql -u root -p${MYSQL_ROOT_PASSWORD} ${MYSQL_DATABASE} < /var/www/html/install/database.sql echo " Schema AVideo importe." else echo " WARNING: database.sql non trouve" fi if [ -f /var/www/html/upload/install/database.sql ]; then mysql -u root -p${MYSQL_ROOT_PASSWORD} avideo_encoder < /var/www/html/upload/install/database.sql echo " Schema Encoder importe." fi fi # ----------------------------------------------------------------------------- # 5. CONFIGURATION AVIDEO (configuration.php) # ----------------------------------------------------------------------------- echo "[5/7] Configuration AVideo..." if [ -z "$OMNITUBE_SALT" ] || [ "$OMNITUBE_SALT" = "__CHANGE_ME__" ]; then SALT=$(openssl rand -hex 16) echo " SALT genere automatiquement" else SALT=$OMNITUBE_SALT echo " SALT fourni" fi WEBURL="https://${OMNITUBE_WEBSERVER_HOSTNAME}/" cat < /data/videos/configuration.php /data/videos rm -rf /var/www/html/videos ln -s /data/videos /var/www/html/videos chown -R www-data:www-data /var/www/html /data/videos chmod -R 777 /data/videos chmod 644 /data/videos/configuration.php chmod 777 /var/www/html/.htaccess /var/www/html/upload/.htaccess echo " OK" # ----------------------------------------------------------------------------- # 6. VERIFICATION VARIABLES CRITIQUES # ----------------------------------------------------------------------------- echo "[6/7] Verification des variables..." MISSING=0 if [ -z "$OMNITUBE_WEBSERVER_HOSTNAME" ] || [ "$OMNITUBE_WEBSERVER_HOSTNAME" = "__CHANGE_ME__" ]; then echo " ⚠️ OMNITUBE_WEBSERVER_HOSTNAME non configure !" MISSING=1 fi if [ -z "$OMNITUBE_ADMIN_PASSWORD" ] || [ "$OMNITUBE_ADMIN_PASSWORD" = "__CHANGE_ME__" ]; then echo " ⚠️ OMNITUBE_ADMIN_PASSWORD non configure !" MISSING=1 fi if [ $MISSING -eq 1 ]; then echo "" echo " ⚠️ DES VARIABLES SONT MANQUANTES." echo " Va dans Settings → Variables d'environnement de ton Space HF" echo " et remplace tous les __CHANGE_ME__." echo "" fi # ----------------------------------------------------------------------------- # 7. ARRET MARIADB + LANCEMENT SUPERVISOR # ----------------------------------------------------------------------------- echo "[7/7] Finalisation..." if [ "$NEED_INIT" = "true" ]; then mysqladmin shutdown -u root -p${MYSQL_ROOT_PASSWORD} 2>/dev/null || true echo " MariaDB temporaire arrete." fi # Marque le setup comme fait touch /data/.setup_done echo "==========================================" echo " Lancement des services via Supervisor" echo "==========================================" exec supervisord -c /etc/supervisor/conf.d/supervisord.conf