mnemo_cards/mnemo_cards_backend/build_app.sh
2025-11-20 01:41:54 +03:00

54 lines
3 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.

set -e -v
cd ~/mnemo_cards_common
git pull origin master
dart pub get
cd ~/mnemo_cards_common_backend
git pull origin master
dart pub get
cd ~/mnemo_cards_backend
dart pub get && dart compile exe --verbose lib/main.dart -o server_build.exe
sudo systemctl stop mnemo_cards_server && true
sleep 15
sudo chmod 777 mnemo_cards_server.service
sudo cp mnemo_cards_server.service /etc/systemd/system
sudo cp server_build.exe server.exe
rm server_build.exe
# Проверяем наличие Let's Encrypt сертификатов для двойного режима
if [ -d "/etc/letsencrypt/live/api.mnemo-cards.online" ]; then
echo "✅ Let's Encrypt сертификаты найдены. Запускаем в двойном режиме (HTTP + HTTPS)"
# Обновляем systemd сервис для двойного режима
sudo sed -i 's|ExecStart=/root/mnemo_cards_backend/server.exe.*|ExecStart=/root/mnemo_cards_backend/server.exe --dual --certs /etc/letsencrypt/live/api.mnemo-cards.online -a 0.0.0.0 -p 8081|' /etc/systemd/system/mnemo_cards_server.service
else
echo "⚠️ Let's Encrypt сертификаты не найдены. Пытаемся создать..."
# Останавливаем сервер временно для получения сертификата
sudo systemctl stop mnemo_cards_server 2>/dev/null || true
# Пытаемся получить Let's Encrypt сертификат
echo "🔐 Получаем Let's Encrypt сертификат для домена api.mnemo-cards.online..."
if sudo certbot certonly --standalone -d api.mnemo-cards.online --non-interactive --agree-tos --email admin@api.mnemo-cards.online; then
echo "✅ Let's Encrypt сертификат успешно создан!"
echo "🚀 Запускаем в двойном режиме (HTTP + HTTPS)"
# Обновляем systemd сервис для двойного режима
sudo sed -i 's|ExecStart=/root/mnemo_cards_backend/server.exe.*|ExecStart=/root/mnemo_cards_backend/server.exe --dual --certs /etc/letsencrypt/live/api.mnemo-cards.online -a 0.0.0.0 -p 8081|' /etc/systemd/system/mnemo_cards_server.service
else
echo "❌ Не удалось создать Let's Encrypt сертификат. Запускаем в HTTP режиме"
echo "💡 Убедитесь, что:"
echo " - Домен api.mnemo-cards.online указывает на этот сервер"
echo " - Порт 80 доступен извне"
echo " - Firewall разрешает входящие соединения на порт 80"
# Возвращаем обычный режим
sudo sed -i 's|ExecStart=/root/mnemo_cards_backend/server.exe.*|ExecStart=/root/mnemo_cards_backend/server.exe -a 0.0.0.0 -p 8081|' /etc/systemd/system/mnemo_cards_server.service
fi
fi
sudo systemctl daemon-reload
sudo systemctl start mnemo_cards_server
journalctl -u mnemo_cards_server --since "1min ago"