diff --git a/config/config.example.php b/config/config.example.php index 5f7fbb7..afeb2cf 100644 --- a/config/config.example.php +++ b/config/config.example.php @@ -14,6 +14,7 @@ return [ 'debug' => (bool) (getenv('XLX_DEBUG') ?: false), 'base_url' => $baseUrl, 'timezone' => getenv('XLX_TIMEZONE') ?: 'Europe/Moscow', + 'panel_port' => (int) (getenv('XLX_PANEL_PORT') ?: 80), ], 'database' => [ diff --git a/deploy/apache/xlx-panel.conf b/deploy/apache/xlx-panel.conf index d6e007c..5b00974 100644 --- a/deploy/apache/xlx-panel.conf +++ b/deploy/apache/xlx-panel.conf @@ -1,4 +1,4 @@ - + ServerName _ DocumentRoot __PUBLIC_DIR__ diff --git a/docs/INSTALL_SYSTEM.md b/docs/INSTALL_SYSTEM.md index 4696774..b75d54d 100644 --- a/docs/INSTALL_SYSTEM.md +++ b/docs/INSTALL_SYSTEM.md @@ -28,6 +28,12 @@ sudo bash scripts/install-system.sh 3. первый IP из `hostname -I`; 4. `127.0.0.1` как последний fallback. +Если порт `80` уже занят другим сервисом, панель автоматически будет поставлена на `8088`. Порт можно задать вручную: + +```bash +sudo XLX_PANEL_PORT=8090 bash scripts/install-system.sh +``` + В конце он покажет: - URL сайта; diff --git a/scripts/install-system.sh b/scripts/install-system.sh index aecc464..b4001bf 100644 --- a/scripts/install-system.sh +++ b/scripts/install-system.sh @@ -32,6 +32,27 @@ detect_host() { echo "127.0.0.1" } +port_is_busy() { + local port="$1" + ss -ltnH "sport = :${port}" 2>/dev/null | grep -q . +} + +detect_panel_port() { + if [[ -n "${XLX_PANEL_PORT:-}" ]]; then + echo "$XLX_PANEL_PORT" + return + fi + + for port in 80 8088 8090 8091; do + if ! port_is_busy "$port"; then + echo "$port" + return + fi + done + + echo "8099" +} + random_token() { local token token="$(tr -dc 'A-Za-z0-9' /etc/apache2/sites-available/xlx-panel.conf +cat > /etc/apache2/ports.conf < /etc/apache2/sites-available/xlx-panel.conf a2dissite 000-default.conf >/dev/null 2>&1 || true a2ensite xlx-panel.conf -systemctl reload apache2 +systemctl restart apache2 bash "$REPO_ROOT/scripts/install-xlxd.sh" systemctl start xlxd || true