#!/bin/bash # Однократная настройка бэкапа VPS Миран на хосте Proxmox. # Запускать на Proxmox под root. Перед запуском скопировать сюда backup-vps-miran.sh в /root/scripts/. # Делает: SSH-ключ (если нет), awscli, /root/.vps-miran-s3.env, cron. set -e if [ "$(id -u)" -ne 0 ]; then echo "Запускайте под root." exit 1 fi SCRIPT_DIR="/root/scripts" BACKUP_SCRIPT="$SCRIPT_DIR/backup-vps-miran.sh" S3_ENV="/root/.vps-miran-s3.env" CRON_ENTRY="30 1 * * * $BACKUP_SCRIPT" VPS_DEPLOY="deploy@185.147.80.190" VPS_PORT="15722" # ---- 1) SSH-ключ для доступа к VPS ---- if [ ! -f /root/.ssh/id_ed25519 ] && [ ! -f /root/.ssh/id_rsa ]; then mkdir -p /root/.ssh ssh-keygen -t ed25519 -f /root/.ssh/id_ed25519 -N "" -q echo "Создан новый SSH-ключ. Добавьте публичный ключ на VPS (пользователь deploy):" echo "" cat /root/.ssh/id_ed25519.pub echo "" echo "На VPS выполните (или вставьте вывод выше в ~/.ssh/authorized_keys):" echo " ssh -p $VPS_PORT $VPS_DEPLOY 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys' < /root/.ssh/id_ed25519.pub" else echo "SSH-ключ уже есть. Публичный ключ (должен быть в authorized_keys на VPS):" [ -f /root/.ssh/id_ed25519.pub ] && cat /root/.ssh/id_ed25519.pub || cat /root/.ssh/id_rsa.pub fi # ---- 2) awscli для S3 ---- if ! command -v aws >/dev/null 2>&1; then echo "Установка awscli..." apt-get update -qq && apt-get install -y -qq awscli echo "awscli установлен." else echo "awscli уже установлен." fi # ---- 3) Креды S3 (Miran) ---- if [ ! -f "$S3_ENV" ]; then cat > "$S3_ENV" << 'ENVFILE' S3_ACCESS_KEY=j3tears100@gmail.com S3_SECRET_KEY=wQ1-6sZEPs92sbZTSf96 S3_BUCKET_NAME=9829-telegram-helper-bot ENVFILE chmod 600 "$S3_ENV" echo "Создан $S3_ENV с кредами S3 Miran." else echo "Файл $S3_ENV уже существует, не перезаписываю." fi # ---- 4) Скрипт бэкапа и права ---- mkdir -p "$SCRIPT_DIR" if [ -f "$BACKUP_SCRIPT" ]; then chmod +x "$BACKUP_SCRIPT" echo "Скрипт бэкапа: $BACKUP_SCRIPT (исполняемый)." else echo "Внимание: $BACKUP_SCRIPT не найден. Скопируйте backup-vps-miran.sh в $SCRIPT_DIR/ и снова запустите этот setup." fi # ---- 5) Cron ---- if crontab -l 2>/dev/null | grep -qF "backup-vps-miran.sh"; then echo "Запись cron для backup-vps-miran.sh уже есть." else (crontab -l 2>/dev/null || true; echo "$CRON_ENTRY") | crontab - echo "Добавлен cron: $CRON_ENTRY" fi echo "" echo "Готово. Проверка SSH на VPS: ssh -p $VPS_PORT $VPS_DEPLOY 'echo ok'"