Решение проблем

Распространённые проблемы и их решения при работе сервера Freedom Messenger.

Сервер не запускается

Порт уже используется

Другой процесс занимает порт 443 (или ваш настроенный порт). Найдите и остановите его:

sudo lsof -i :443
sudo systemctl stop nginx   # если nginx занимает 443

Нет доступа к порту 443

Бинарнику нужен capability CAP_NET_BIND_SERVICE для привязки к портам ниже 1024:

sudo setcap cap_net_bind_service=+ep /opt/freedom-mess/freedom-mess

Ошибка прав доступа к конфигурации

Сервер требует права 0600 для config.toml:

chmod 600 /opt/freedom-mess/config.toml

Не прошла проверка целостности базы

База данных может быть повреждена. Восстановите из последнего бэкапа. См. Резервное копирование.

Проблемы с TLS-сертификатом

Сертификат не выдаётся (режим HTTPS)

Let's Encrypt должен подтвердить ваш домен. Проверьте:

  • Порт 80 открыт (используется для HTTP-01 challenge)
  • A-запись домена указывает на IP этого сервера
  • Нет другого сервиса на порту 80
  • DNS-записи распространились (dig ваш-домен.com)

Сертификат истёк

Сертификаты обновляются автоматически. Если обновление не сработало, перезапустите сервер — он попытается обновить при запуске. Проверьте логи на наличие ACME-ошибок.

Проблемы с подключением

WebSocket-разрывы

Если пользователи часто отключаются:

  • Проверьте память сервера — если достигнут лимит 512 МБ, systemd может перезапустить сервис
  • В режиме Cloudflare убедитесь, что поддержка WebSocket включена (она включена по умолчанию)
  • Проверьте, нет ли прокси или фаервола, разрывающего неактивные соединения

Ошибка Cloudflare 524

Cloudflare возвращает 524, когда origin-сервер не отвечает в течение 100 секунд. Проверьте, что сервер запущен и слушает порт 8080.

Проблемы со звонками

Звонки не соединяются

  • Убедитесь, что UDP-порт 3478 открыт в фаерволе
  • Проверьте public_ip в config.toml
  • Проверьте, что оба пользователя предоставили доступ к микрофону

Звук в одну сторону

Обычно вызвано неправильным public_ip или асимметричным NAT. Проверьте, что публичный IP совпадает с тем, что видят внешние сервисы.

Производительность

Высокое потребление памяти

Нормальное потребление в простое — 30-80 МБ. Если память растёт выше 200 МБ:

  • Проверьте количество активных WebSocket-соединений в панели администратора
  • Проверьте количество горутин — аномально высокое число может указывать на утечку
  • Перезапустите сервер для освобождения памяти

Медленные запросы к базе

SQLite использует режим WAL для производительности. Если запросы медленные:

  • Проверьте дисковый I/O — производительность SQLite зависит от скорости диска
  • Сервер выполняет часовые WAL-чекпоинты — проверьте в логах, что они завершаются
  • Рассмотрите переход на SSD, если используется HDD

Получение помощи

Если вашей проблемы нет в списке:

  1. Проверьте логи сервера: sudo journalctl -u freedom-mess -f
  2. Проверьте логи в панели администратора (фильтр по уровню error)
  3. Создайте issue на GitHub с текстом ошибок и конфигурацией (скройте секреты)