nakama/setup-remote-storage.sh

115 lines
4.9 KiB
Bash
Executable File
Raw 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
# Скрипт для настройки удаленного хранилища медиа и базы данных
# Использует 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}"