6.4 KiB
6.4 KiB
Отчет об исправлении Backend Server
Дата: 19 ноября 2025
Проблема: Backend сервер падал при сборке с ошибкой "Address already in use, port = 8443"
Причина проблемы
Конфликт портов: Backend сервер и code-server (VSCode) были настроены на один и тот же порт 8443.
Хронология
- При восстановлении VSCode Server мы настроили code-server на порт 8443
- Backend сервер также был настроен на порт 8443
- При попытке запуска backend получал ошибку:
SocketException: Address already in use, port = 8443 - Systemd пытался перезапустить сервис 5 раз и сдался
Решение
1. Изменение порта Backend
- Старый порт: 8443 (конфликт с code-server)
- Новый порт: 8081 (стандартный порт для API)
2. Обновление конфигураций
systemd Service
Файл: /etc/systemd/system/mnemo_cards_server.service
[Service]
ExecStart=/root/mnemo_cards_backend/server.exe -a 0.0.0.0 -p 8081
Изменено: -p 8443 → -p 8081
nginx Configuration
Файл: /etc/nginx/sites-available/api
location / {
proxy_pass http://localhost:8081; # было: https://localhost:8443
}
Изменения:
- Порт: 8443 → 8081
- Протокол: https → http (SSL терминируется в nginx)
3. Включение автозапуска
systemctl enable mnemo_cards_server
Результаты
✅ Backend Server
● mnemo_cards_server.service - MnemoCardsServer
Loaded: loaded (/etc/systemd/system/mnemo_cards_server.service; enabled)
Active: active (running)
✅ Порты
| Сервис | Порт | Адрес | Статус |
|---|---|---|---|
| code-server (VSCode) | 8443 | 127.0.0.1 | ✅ Работает |
| backend (API) | 8081 | 0.0.0.0 | ✅ Работает |
| nginx (HTTPS) | 443 | 0.0.0.0 | ✅ Работает |
✅ Доступность API
curl -I https://api.mnemo-cards.online/
HTTP/2 404
server: nginx/1.18.0 (Ubuntu)
access-control-allow-origin: *
✅ Сервер отвечает (404 нормально для корневого пути)
Архитектура
Internet
↓
nginx (port 443) - SSL Termination
├─→ api.mnemo-cards.online → http://localhost:8081 (Backend)
└─→ vscode.mnemo-cards.online → http://127.0.0.1:8443 (VSCode)
Созданные инструменты
fix-backend-port-conflict.sh
Автоматический скрипт для исправления конфликта портов:
- Изменяет порт в systemd service
- Обновляет nginx конфигурацию
- Перезапускает сервисы
- Проверяет работоспособность
Использование:
cd /Users/dmitry/StudioProjects/mnemo_cards/tools/deploy
./fix-backend-port-conflict.sh
Управление Backend
Проверка статуса
ssh root@147.45.152.129 'systemctl status mnemo_cards_server'
Просмотр логов
ssh root@147.45.152.129 'journalctl -u mnemo_cards_server -f'
Перезапуск
ssh root@147.45.152.129 'systemctl restart mnemo_cards_server'
Проверка порта
ssh root@147.45.152.129 'ss -tuln | grep 8081'
Предотвращение проблем в будущем
✅ Сделано
- Backend настроен на автозапуск при загрузке
- Backend использует уникальный порт (8081)
- Созданы скрипты для быстрого восстановления
- Документирована архитектура и порты
📋 Рекомендации
- При добавлении новых сервисов проверять свободные порты
- Документировать используемые порты в конфигурации
- Использовать стандартные порты:
- Backend API: 8081
- VSCode: 8443
- Forgejo: 3000
- Frontend: через nginx на 443
Тестирование
Тест 1: Backend работает
ssh root@147.45.152.129 'curl -I http://localhost:8081/'
# ✅ HTTP/1.1 404 Not Found
Тест 2: nginx проксирует на backend
ssh root@147.45.152.129 'curl -I https://api.mnemo-cards.online/'
# ✅ HTTP/2 404
Тест 3: VSCode работает
ssh root@147.45.152.129 'curl -I http://127.0.0.1:8443/'
# ✅ HTTP/1.1 302 Found (redirect to login)
Тест 4: Порты не конфликтуют
ssh root@147.45.152.129 'ss -tuln | grep -E "(8081|8443)"'
# ✅ Оба порта слушают без ошибок
Время восстановления
- Обнаружение проблемы: 22:34
- Диагностика: 22:35
- Исправление: 22:37
- Проверка: 22:39
Общее время: ~5 минут
Статус
🟢 RESOLVED
Работающие сервисы
- ✅ Backend API: https://api.mnemo-cards.online/
- ✅ VSCode Server: https://vscode.mnemo-cards.online/
- ✅ Forgejo Git: https://code.mnemo-cards.online/
Автозапуск
- ✅ mnemo_cards_server: enabled
- ✅ code-server: enabled
- ✅ nginx: enabled
Дополнительная информация
Связанные документы
- VSCODE_SERVER_SETUP.md - Настройка VSCode Server
- RECOVERY_REPORT_2025-11-19.md - Восстановление VSCode
- README.md - Общая документация по деплою
Скрипты
fix-backend-port-conflict.sh- Исправление конфликта портовfix-vscode-server.sh- Восстановление VSCode Server
Вывод: Проблема полностью решена. Backend сервер работает на порту 8081, конфликт с VSCode устранен. Все сервисы настроены на автозапуск при перезагрузке сервера.