You've already forked Atomcms-edit
Nitro V3 Update: configureerbare paths via Commandocentrum + sudoers fix
This commit is contained in:
Regular → Executable
+110
-15
@@ -3,10 +3,26 @@
|
||||
# Exit immediately if a command exits with a non-zero status
|
||||
set -e
|
||||
|
||||
# --- CONFIGURATION ---
|
||||
DB_NAME="JOUW_DATABASE_NAAM"
|
||||
EMULATOR_SERVICE="YOUR_SERVICE_NAME"
|
||||
SQL_DIR="/var/www/emulator/Emulator/sql"
|
||||
# --- CONFIGURATION (overschrijfbaar via omgevingsvariabelen) ---
|
||||
DB_NAME="${NITRO_DB_NAME:-habbo}"
|
||||
DB_HOST="${NITRO_DB_HOST:-127.0.0.1}"
|
||||
DB_PORT="${NITRO_DB_PORT:-3306}"
|
||||
DB_USER="${NITRO_DB_USER:-root}"
|
||||
DB_PASS="${NITRO_DB_PASS:-}"
|
||||
EMULATOR_SERVICE="${NITRO_EMULATOR_SERVICE:-emulator}"
|
||||
EMULATOR_DIR="${NITRO_EMULATOR_PATH:-/var/www/emulator}"
|
||||
SQL_DIR="${NITRO_SQL_DIR:-$EMULATOR_DIR/Database Updates}"
|
||||
GAMEDATA_CONF_DIR="${NITRO_GAMEDATA_DIR:-/var/www/Gamedata/config}"
|
||||
NITRO_SRC_DIR="${NITRO_CLIENT_DIR:-/var/www/Nitro-V3/public/configuration}"
|
||||
BACKUP_DIR="${NITRO_BACKUP_DIR:-$EMULATOR_DIR/Database Updates/backups}"
|
||||
NITRO_CLIENT="${NITRO_CLIENT_SRC:-/var/www/Nitro-V3}"
|
||||
NITRO_RENDERER="${NITRO_RENDERER_SRC:-/var/www/Nitro_Render_V3}"
|
||||
|
||||
# Build MySQL/MariaDB credentials argument
|
||||
MYSQL_CRED="-h $DB_HOST -P $DB_PORT -u $DB_USER"
|
||||
if [ -n "$DB_PASS" ]; then
|
||||
MYSQL_CRED="$MYSQL_CRED -p$DB_PASS"
|
||||
fi
|
||||
# ---------------------
|
||||
|
||||
echo "=== Starting EPIC WEB CONTROL Update ==="
|
||||
@@ -15,15 +31,20 @@ echo "=== Starting EPIC WEB CONTROL Update ==="
|
||||
# 1. Update and Build Emulator
|
||||
# ----------------------------------------
|
||||
echo "--> Updating Emulator..."
|
||||
cd /var/www/emulator/Emulator/
|
||||
cd "$EMULATOR_DIR/Emulator/"
|
||||
git pull
|
||||
|
||||
# --- Automatic Safe Database Backup ---
|
||||
echo "--> Creating automatic database backup before update..."
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
mariadb-dump $MYSQL_CRED "$DB_NAME" > "$BACKUP_DIR/backup_$(date +%Y%m%d_%H%M%S).sql"
|
||||
|
||||
# --- Automatic SQL Import ---
|
||||
echo "--> Checking for new SQL files..."
|
||||
if [ -d "$SQL_DIR" ]; then
|
||||
find "$SQL_DIR" -name "*.sql" -mmin -10 | while read -r sql_file; do
|
||||
find "$SQL_DIR" -name "*.sql" -mmin -10 -print0 | while IFS= read -r -d '' sql_file; do
|
||||
echo "--> Importing new SQL file: $(basename "$sql_file")"
|
||||
mysql "$DB_NAME" < "$sql_file"
|
||||
mariadb $MYSQL_CRED --force "$DB_NAME" < "$sql_file" || echo "--> Opmerking: Sommige SQL-regels overgeslagen (bestonden waarschijnlijk al)."
|
||||
done
|
||||
else
|
||||
echo "--> SQL directory not found, skipping SQL import."
|
||||
@@ -50,7 +71,7 @@ chmod +x emulator
|
||||
# 2. Update Nitro_Render_V3
|
||||
# ----------------------------------------
|
||||
echo "--> Updating Nitro_Render_V3..."
|
||||
cd /var/www/Nitro_Render_V3/
|
||||
cd "$NITRO_RENDERER/"
|
||||
|
||||
# Check if package.json will change after git pull
|
||||
if git diff --name-only HEAD..@{u} | grep -q 'package.json'; then
|
||||
@@ -75,7 +96,7 @@ fi
|
||||
# 3. Update and Build Nitro-V3
|
||||
# ----------------------------------------
|
||||
echo "--> Updating Nitro-V3..."
|
||||
cd /var/www/Nitro-V3
|
||||
cd "$NITRO_CLIENT"
|
||||
|
||||
# Check if package.json will change after git pull
|
||||
if git diff --name-only HEAD..@{u} | grep -q 'package.json'; then
|
||||
@@ -95,17 +116,91 @@ else
|
||||
echo "--> No changes in package.json for Nitro-V3. Skipping yarn install."
|
||||
fi
|
||||
|
||||
echo "--> Building Nitro-V3 with Yarn..."
|
||||
echo "--> Building Nitro-V3 with Vite 8 / Yarn..."
|
||||
yarn build
|
||||
|
||||
|
||||
# ----------------------------------------
|
||||
# 4. Restart the Service
|
||||
# 4. Sync Gamedata Configs & UITexts (.example logica)
|
||||
# ----------------------------------------
|
||||
echo "--> Restarting $EMULATOR_SERVICE service..."
|
||||
systemctl restart $EMULATOR_SERVICE
|
||||
echo "--> Synchronizing Gamedata configurations..."
|
||||
mkdir -p "$GAMEDATA_CONF_DIR"
|
||||
|
||||
echo "--> Checking service status..."
|
||||
systemctl status $EMULATOR_SERVICE --no-pager -n 5
|
||||
# --- Renderer Config Sync ---
|
||||
if [ ! -f "$GAMEDATA_CONF_DIR/renderer-config.json" ] || [ "$NITRO_SRC_DIR/renderer-config.example" -nt "$GAMEDATA_CONF_DIR/renderer-config.json" ]; then
|
||||
if [ -f "$NITRO_SRC_DIR/renderer-config.example" ]; then
|
||||
echo "--> Updating renderer-config.json from latest example..."
|
||||
cp "$NITRO_SRC_DIR/renderer-config.example" "$GAMEDATA_CONF_DIR/renderer-config.json"
|
||||
fi
|
||||
fi
|
||||
|
||||
# --- UI Config Sync ---
|
||||
if [ ! -f "$GAMEDATA_CONF_DIR/ui-config.json" ] || [ "$NITRO_SRC_DIR/ui-config.json.example" -nt "$GAMEDATA_CONF_DIR/ui-config.json" ]; then
|
||||
if [ -f "$NITRO_SRC_DIR/ui-config.json.example" ]; then
|
||||
echo "--> Updating ui-config.json from latest example..."
|
||||
cp "$NITRO_SRC_DIR/ui-config.json.example" "$GAMEDATA_CONF_DIR/ui-config.json"
|
||||
fi
|
||||
fi
|
||||
|
||||
# --- UITexts Sync ---
|
||||
if [ ! -f "$GAMEDATA_CONF_DIR/UITexts.json5" ] || [ "$NITRO_SRC_DIR/UITexts.json5.example" -nt "$GAMEDATA_CONF_DIR/UITexts.json5" ]; then
|
||||
if [ -f "$NITRO_SRC_DIR/UITexts.json5.example" ]; then
|
||||
echo "--> Updating UITexts.json5 from latest example..."
|
||||
cp "$NITRO_SRC_DIR/UITexts.json5.example" "$GAMEDATA_CONF_DIR/UITexts.json5"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
# ----------------------------------------
|
||||
# 5. Automated Cleanup (Logs & Backups)
|
||||
# ----------------------------------------
|
||||
echo "--> Starting automated cleanup..."
|
||||
|
||||
# 1. Verwijder emulator logs ouder dan 14 dagen
|
||||
echo "--> Removing emulator logs older than 14 days..."
|
||||
find "$EMULATOR_DIR/" -name "*.log" -mtime +14 -exec rm -f {} \;
|
||||
|
||||
# 2. Hou maximaal de 5 nieuwste database backups, gooi oudere weg
|
||||
echo "--> Managing update backups (keeping max 5)..."
|
||||
if [ -d "$BACKUP_DIR" ]; then
|
||||
# Zoekt alle .sql bestanden in de backup map, sorteert op datum (nieuwste eerst),
|
||||
# slaat de eerste 5 over (tail -n +6) en verwijdert de rest.
|
||||
ls -t "$BACKUP_DIR"/*.sql 2>/dev/null | tail -n +6 | xargs -r rm -f || true
|
||||
fi
|
||||
|
||||
# 3. Clean Yarn cache om SSD ruimte te besparen
|
||||
echo "--> Cleaning Yarn cache..."
|
||||
yarn cache clean
|
||||
|
||||
|
||||
# ----------------------------------------
|
||||
# 6. Fix Permissions (www-data) — alleen als sudo beschikbaar is
|
||||
# ----------------------------------------
|
||||
if command -v sudo &> /dev/null; then
|
||||
echo "--> Setting permissions to www-data:www-data..."
|
||||
sudo chown -R www-data:www-data "$NITRO_CLIENT" 2>/dev/null || echo "--> chown voor NITRO_CLIENT overgeslagen"
|
||||
sudo chown -R www-data:www-data "$NITRO_RENDERER" 2>/dev/null || echo "--> chown voor NITRO_RENDERER overgeslagen"
|
||||
sudo chown -R www-data:www-data "$EMULATOR_DIR" 2>/dev/null || echo "--> chown voor EMULATOR_DIR overgeslagen"
|
||||
sudo chown -R www-data:www-data "$GAMEDATA_CONF_DIR" 2>/dev/null || echo "--> chown voor GAMEDATA_CONF_DIR overgeslagen"
|
||||
else
|
||||
echo "--> Sudo niet beschikbaar, overslaan van chown."
|
||||
fi
|
||||
|
||||
|
||||
# ----------------------------------------
|
||||
# 7. Restart the Service (Veilige Check)
|
||||
# ----------------------------------------
|
||||
if systemctl list-units --type=service --all | grep -q "$EMULATOR_SERVICE.service"; then
|
||||
echo "--> Restarting $EMULATOR_SERVICE service..."
|
||||
if command -v sudo &> /dev/null; then
|
||||
sudo systemctl restart $EMULATOR_SERVICE 2>/dev/null || echo "--> Service restart via sudo mislukt (mogelijk geen sudo rechten)"
|
||||
sudo systemctl status $EMULATOR_SERVICE --no-pager -n 5 2>/dev/null || true
|
||||
else
|
||||
echo "--> Sudo niet beschikbaar. Herstart de service handmatig: sudo systemctl restart $EMULATOR_SERVICE"
|
||||
fi
|
||||
else
|
||||
echo "--> Waarschuwing: Service '$EMULATOR_SERVICE' niet gevonden in systemd."
|
||||
echo "--> Als je PM2 gebruikt, herstart je processen dan handmatig met: pm2 restart all"
|
||||
fi
|
||||
|
||||
echo "=== Update successfully completed! ==="
|
||||
Reference in New Issue
Block a user