#!/bin/bash # # Загрузка данных на сервер после cloud-init # Запускается с ЛОКАЛЬНОЙ машины # # Использование: bash upload-data.sh # set -euo pipefail if [ $# -lt 1 ]; then echo "Использование: bash $0 " echo "Пример: bash $0 5.144.180.119" exit 1 fi SERVER_IP="$1" SSH_PORT="10001" SSH_USER="eberkheev" SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" DATA_DIR="$SCRIPT_DIR/../data" # Проверка наличия файлов for f in x-ui.db fullchain.pem privkey.pem; do if [ ! -f "$DATA_DIR/$f" ]; then echo "ERROR: Файл $DATA_DIR/$f не найден" exit 1 fi done SCP="scp -P $SSH_PORT" SSH="ssh -p $SSH_PORT ${SSH_USER}@${SERVER_IP}" echo "=== Загрузка данных на $SERVER_IP ===" echo "[1/4] Загрузка базы данных x-ui..." $SCP "$DATA_DIR/x-ui.db" "${SSH_USER}@${SERVER_IP}:~/3x-ui/db/x-ui.db" $SCP "$DATA_DIR/x-ui.db" "${SSH_USER}@${SERVER_IP}:~/x-ui-backup.db" echo "[2/4] Загрузка сертификатов..." $SCP "$DATA_DIR/fullchain.pem" "$DATA_DIR/privkey.pem" "${SSH_USER}@${SERVER_IP}:~/3x-ui/cert/" $SCP "$DATA_DIR/fullchain.pem" "$DATA_DIR/privkey.pem" "${SSH_USER}@${SERVER_IP}:~/cert/" echo "[3/4] Запуск контейнера 3x-ui..." $SSH "docker run -d \ --name 3xui_app \ --restart unless-stopped \ --network host \ --env XRAY_VMESS_AEAD_FORCED=false \ --env XUI_ENABLE_FAIL2BAN=true \ -v ~/3x-ui/db/:/etc/x-ui/ \ -v ~/3x-ui/cert/:/root/cert/ \ -t \ ghcr.io/mhsanaei/3x-ui:latest" echo "[4/4] Проверка..." $SSH "docker ps | grep 3xui" echo "" echo "=== Готово! ===" echo "Панель: https://$SERVER_IP:10002" echo "SSH: ssh -p $SSH_PORT $SSH_USER@$SERVER_IP"