75 lines
2.8 KiB
Bash
75 lines
2.8 KiB
Bash
#!/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'"
|