nakama/setup-remote-storage.sh

115 lines
4.9 KiB
Bash
Raw Permalink Normal View History

2025-11-20 21:32:48 +00:00
#!/bin/bash
# Скрипт для настройки удаленного хранилища медиа и базы данных
# Использует SSHFS для монтирования удаленных директорий
# Цвета для вывода
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Конфигурация удаленного сервера
REMOTE_SERVER="103.80.87.247"
REMOTE_USER="root" # Измените на вашего пользователя
REMOTE_MEDIA_PATH="/var/nakama/media"
REMOTE_DB_PATH="/var/nakama/db"
REMOTE_BACKUPS_PATH="/var/nakama/backups"
# Локальные точки монтирования
LOCAL_MEDIA_MOUNT="/mnt/nakama-media"
LOCAL_DB_MOUNT="/mnt/nakama-db"
LOCAL_BACKUPS_MOUNT="/mnt/nakama-backups"
echo -e "${GREEN}=== Настройка удаленного хранилища ===${NC}"
# Проверка наличия SSHFS
if ! command -v sshfs &> /dev/null; then
echo -e "${RED}✗ SSHFS не установлен${NC}"
echo -e "${YELLOW}Установка SSHFS...${NC}"
# Определить ОС и установить SSHFS
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
sudo apt-get update && sudo apt-get install -y sshfs
elif [[ "$OSTYPE" == "darwin"* ]]; then
brew install macfuse sshfs
else
echo -e "${RED}Неподдерживаемая ОС. Установите SSHFS вручную.${NC}"
exit 1
fi
fi
echo -e "${GREEN}✓ SSHFS установлен${NC}"
# Создать локальные директории для монтирования
echo -e "${YELLOW}Создание локальных директорий...${NC}"
sudo mkdir -p "$LOCAL_MEDIA_MOUNT" "$LOCAL_DB_MOUNT" "$LOCAL_BACKUPS_MOUNT"
# Создать директории на удаленном сервере
echo -e "${YELLOW}Создание директорий на удаленном сервере...${NC}"
ssh "${REMOTE_USER}@${REMOTE_SERVER}" "mkdir -p ${REMOTE_MEDIA_PATH} ${REMOTE_DB_PATH} ${REMOTE_BACKUPS_PATH}"
# Монтировать директории
echo -e "${YELLOW}Монтирование удаленных директорий...${NC}"
# Медиа
if mountpoint -q "$LOCAL_MEDIA_MOUNT"; then
echo -e "${YELLOW}Медиа уже смонтированы${NC}"
else
sshfs "${REMOTE_USER}@${REMOTE_SERVER}:${REMOTE_MEDIA_PATH}" "$LOCAL_MEDIA_MOUNT" \
-o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3
echo -e "${GREEN}✓ Медиа смонтированы: ${LOCAL_MEDIA_MOUNT}${NC}"
fi
# База данных
if mountpoint -q "$LOCAL_DB_MOUNT"; then
echo -e "${YELLOW}БД уже смонтирована${NC}"
else
sshfs "${REMOTE_USER}@${REMOTE_SERVER}:${REMOTE_DB_PATH}" "$LOCAL_DB_MOUNT" \
-o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3
echo -e "${GREEN}✓ БД смонтирована: ${LOCAL_DB_MOUNT}${NC}"
fi
# Бекапы
if mountpoint -q "$LOCAL_BACKUPS_MOUNT"; then
echo -e "${YELLOW}Бекапы уже смонтированы${NC}"
else
sshfs "${REMOTE_USER}@${REMOTE_SERVER}:${REMOTE_BACKUPS_PATH}" "$LOCAL_BACKUPS_MOUNT" \
-o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3
echo -e "${GREEN}✓ Бекапы смонтированы: ${LOCAL_BACKUPS_MOUNT}${NC}"
fi
# Добавить в /etc/fstab для автоматического монтирования при загрузке (опционально)
echo -e "${YELLOW}Хотите добавить автомонтирование при загрузке? (y/n)${NC}"
read -r RESPONSE
if [[ "$RESPONSE" =~ ^[Yy]$ ]]; then
echo -e "${YELLOW}Добавление в /etc/fstab...${NC}"
# Создать резервную копию fstab
sudo cp /etc/fstab /etc/fstab.backup
# Добавить записи в fstab
cat <<EOF | sudo tee -a /etc/fstab
# Nakama remote storage
${REMOTE_USER}@${REMOTE_SERVER}:${REMOTE_MEDIA_PATH} ${LOCAL_MEDIA_MOUNT} fuse.sshfs defaults,_netdev,reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 0 0
${REMOTE_USER}@${REMOTE_SERVER}:${REMOTE_DB_PATH} ${LOCAL_DB_MOUNT} fuse.sshfs defaults,_netdev,reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 0 0
${REMOTE_USER}@${REMOTE_SERVER}:${REMOTE_BACKUPS_PATH} ${LOCAL_BACKUPS_MOUNT} fuse.sshfs defaults,_netdev,reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 0 0
EOF
echo -e "${GREEN}✓ Автомонтирование настроено${NC}"
fi
echo -e "${GREEN}=== Настройка завершена ===${NC}"
echo ""
echo "Монтированные директории:"
echo " Медиа: ${LOCAL_MEDIA_MOUNT}"
echo " БД: ${LOCAL_DB_MOUNT}"
echo " Бекапы: ${LOCAL_BACKUPS_MOUNT}"
echo ""
echo "Для размонтирования используйте:"
echo " sudo umount ${LOCAL_MEDIA_MOUNT}"
echo " sudo umount ${LOCAL_DB_MOUNT}"
echo " sudo umount ${LOCAL_BACKUPS_MOUNT}"