Типичная ситуация: приложение написано и работает на ноутбуке разработчика, а дальше начинается «как это выложить». Нужен сервер, домен, сертификат, автозапуск после перезагрузки, логи, которые не съедят диск, и бэкапы, о которых вспоминают не после потери данных.
Эту часть я закрываю целиком: от чистой Ubuntu до работающего адреса в браузере.
Что делаю на сервере:
— nginx как обратный прокси, приложение слушает только localhost и наружу не торчит;
— сертификат Let's Encrypt с автопродлением, редирект с http на https;
— systemd-юнит: автозапуск при загрузке, перезапуск при падении, отдельный пользователь вместо root;
— логи с ротацией, чтобы диск не забился за месяц;
— бэкапы базы и файлов по расписанию, с проверкой, что бэкап действительно восстанавливается;
— базовая защита: firewall, отключение входа по паролю, ключи вместо пароля.
Отдельная история — медиасервер на Docker: Transmission и Jellyfin в связке с Telegram-ботом управления, хранилище подключено по сети, watchdog поднимает упавшие контейнеры. Собран и работает годами без ручного вмешательства.
Результат: сайт и бот открываются по домену, переживают перезагрузку сервера, пишут логи и не требуют внимания. Владелец получает короткую инструкцию: где что лежит, как посмотреть логи, как откатиться на бэкап.
Пример живой инфраструктуры, настроенной таким образом: https://vvs35.ru — витрина, админка и демо парсера под nginx и systemd на одном небольшом сервере.
Честная оговорка: гарантировать «сайт не упадёт никогда» я не могу, потому что это зависит и от хостинга, и от нагрузки. Могу гарантировать, что после падения сервис поднимется сам, а вы узнаете об этом из уведомления, а не от клиентов.