Files
homelab-docs/scripts/setup-vps-miran-backup-on-proxmox.sh

75 lines
2.8 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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'"