nakama/setup-minio-nginx.sh

160 lines
4.7 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
# Скрипт для настройки Nginx + SSL для MinIO
set -e
echo "🔧 Настройка Nginx для MinIO"
echo "======================================"
# Проверка root прав
if [[ $EUID -ne 0 ]]; then
echo "❌ Этот скрипт должен быть запущен с правами root (sudo)"
exit 1
fi
# Переменные
DOMAIN="minio.glpshchn.ru"
CONSOLE_DOMAIN="admin.minio.glpshchn.ru"
EMAIL="your-email@example.com" # Измените на ваш email для Let's Encrypt
echo ""
echo "Настройка для доменов:"
echo " API: https://$DOMAIN"
echo " Console: https://$CONSOLE_DOMAIN"
echo ""
# Установка Nginx (если не установлен)
if ! command -v nginx &> /dev/null; then
echo "📦 Установка Nginx..."
apt update
apt install -y nginx
fi
# Установка Certbot (если не установлен)
if ! command -v certbot &> /dev/null; then
echo "📦 Установка Certbot..."
apt install -y certbot python3-certbot-nginx
fi
# Создание директории для certbot
mkdir -p /var/www/certbot
# Временный конфиг для получения сертификатов
echo "📝 Создание временного конфига для получения SSL..."
cat > /etc/nginx/sites-available/minio-temp << 'EOF'
server {
listen 80;
server_name minio.glpshchn.ru admin.minio.glpshchn.ru;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 200 "MinIO setup in progress...";
add_header Content-Type text/plain;
}
}
EOF
# Активация временного конфига
ln -sf /etc/nginx/sites-available/minio-temp /etc/nginx/sites-enabled/minio-temp
# Удаление дефолтного конфига
rm -f /etc/nginx/sites-enabled/default
# Проверка конфигурации
echo "🔍 Проверка конфигурации Nginx..."
nginx -t
# Перезагрузка Nginx
echo "🔄 Перезагрузка Nginx..."
systemctl reload nginx
# Получение SSL сертификатов
echo ""
echo "🔒 Получение SSL сертификатов от Let's Encrypt..."
echo ""
certbot certonly --webroot \
-w /var/www/certbot \
-d $DOMAIN \
-d $CONSOLE_DOMAIN \
--email $EMAIL \
--agree-tos \
--non-interactive
if [ $? -ne 0 ]; then
echo "❌ Ошибка получения SSL сертификата"
echo "Проверьте:"
echo " 1. DNS записи A для $DOMAIN и $CONSOLE_DOMAIN указывают на этот сервер"
echo " 2. Порт 80 открыт в firewall"
echo " 3. Домены доступны из интернета"
exit 1
fi
echo ""
echo "✅ SSL сертификаты получены!"
# Копирование основного конфига
echo "📝 Установка основного конфига..."
cp nginx-minio.conf /etc/nginx/sites-available/minio.glpshchn.ru
# Активация конфига
ln -sf /etc/nginx/sites-available/minio.glpshchn.ru /etc/nginx/sites-enabled/minio.glpshchn.ru
# Удаление временного конфига
rm -f /etc/nginx/sites-enabled/minio-temp
# Проверка конфигурации
echo "🔍 Проверка финальной конфигурации..."
nginx -t
if [ $? -ne 0 ]; then
echo "❌ Ошибка в конфигурации Nginx"
exit 1
fi
# Перезагрузка Nginx
echo "🔄 Перезагрузка Nginx с новой конфигурацией..."
systemctl reload nginx
# Настройка автообновления сертификатов
echo "⏰ Настройка автообновления SSL сертификатов..."
systemctl enable certbot.timer
systemctl start certbot.timer
# Открытие портов в firewall (если используется ufw)
if command -v ufw &> /dev/null; then
echo "🔥 Настройка firewall..."
ufw allow 'Nginx Full'
ufw allow 443/tcp
ufw allow 80/tcp
fi
echo ""
echo "======================================"
echo "✅ Настройка завершена!"
echo ""
echo "MinIO API доступен по адресу:"
echo " https://$DOMAIN"
echo ""
echo "MinIO Console доступен по адресу:"
echo " https://$CONSOLE_DOMAIN"
echo ""
echo "Проверка:"
echo " curl https://$DOMAIN/minio/health/live"
echo ""
echo "Обновите .env в Nakama:"
echo " MINIO_ENDPOINT=$DOMAIN"
echo " MINIO_PORT=443"
echo " MINIO_USE_SSL=true"
echo " MINIO_PUBLIC_URL=https://$DOMAIN"
echo ""
echo "Перезапустите backend:"
echo " docker-compose restart backend"
echo "======================================"