====== Ошибка: 500 Internal Server Error ====== Эта ошибка отличается от 502. Она означает, что [[сервисы:npm|NPM]] **успешно** достучался до целевого сервиса, но **само приложение "упало"** в процессе обработки запроса. Проблема — внутри контейнера или на целевой ВМ. ==== Мой опыт (LinkAce и BookStack) ==== **Причина:** В обоих случаях проблема была связана с **базой данных** на самом первом этапе установки. * **Для [[сервисы:linkace|LinkAce]]:** Ошибка была ERROR 2026 (HY000): TLS/SSL error. Новая версия LinkAce требовала защищенного соединения с базой данных, а наша MariaDB его не предоставляла. **Решение:** Добавить в environment сервиса linkace в docker-compose.yml строку, отключающую это требование: - DB_SSL_MODE=disabled. * **Для BookStack:** Ошибка была Access denied for user 'database_username'. Приложение пыталось подключиться к базе с именем пользователя по умолчанию, а не с тем, которое мы создали. **Решение:** Убедиться, что DB_USER в секции bookstack совпадает с MYSQL_USER в секции bookstack_db в docker-compose.yml. ==== Общий алгоритм диагностики ==== Когда я вижу ошибку 500, я делаю следующее: 1. **Смотрю логи** проблемного контейнера: docker logs [имя_контейнера] --tail 100. 2. Ищу в логах строки с Error, Fatal, Exception. Ошибка почти всегда будет описана там. 3. Если проблема возникла при первой установке, самое простое решение — "ядерная зачистка": docker compose stop [имя_сервиса] [имя_его_базы] sudo rm -rf ./[папка_сервиса]/ docker compose up -d [имя_сервиса] [имя_его_базы]