Как запускать своё приложение на VPS через systemd
Создайте службу приложения на VPS, задайте пользователя и каталог, включите автозапуск и проверьте журнал процесса.
Приложение, запущенное из SSH-терминала, может завершиться при закрытии сеанса и не вернётся после перезагрузки. В Debian и Ubuntu с systemd постоянный процесс оформляют как службу. Сначала добейтесь успешного ручного запуска под обычным пользователем: systemd не исправляет отсутствующие зависимости или неверную конфигурацию приложения.

Подготовка службы приложения
Запишите параметры рабочего запуска
Подготовьте абсолютный путь к программе, рабочий каталог и имя существующего пользователя без прав root. Для Python используйте интерпретатор нужного виртуального окружения; для Node.js — фактический путь к node. Не рассчитывайте, что служба автоматически прочитает настройки вашей интерактивной оболочки или менеджера версий.
Создайте отдельный unit-файл
Через SSH откройте редактор командой
sudo systemctl edit --force --full myapp.serviceи сохраните самостоятельный файл службы. В разделе [Unit] задайте Description=My application. В [Service] укажите Type=simple, User=имя_пользователя, WorkingDirectory=/абсолютный/каталог, ExecStart=/абсолютный/путь/к/программе и Restart=on-failure, каждую директиву с новой строки. Добавьте RestartSec=5s.Добавьте правило автозапуска
В конце файла создайте раздел [Install] со строкой WantedBy=multi-user.target. В ExecStart можно передать путь к файлу приложения как аргумент интерпретатора, но нельзя помещать токен или пароль. Секреты читайте из защищённого файла конфигурации с правами только для нужного пользователя либо из специально настроенного окружения.
sudo systemctl daemon-reloadsudo systemctl enable --now myapp.servicesystemctl status myapp.service --no-pagerjournalctl -u myapp.service -n 50 --no-pagerПроверьте реальный запрос к приложению, затем закройте тестовый SSH-сеанс и подключитесь снова: служба должна оставаться active. В согласованное окно обслуживания можно проверить перезапуск всей машины. Перед ним сохраните данные приложения и убедитесь, что консоль панели доступна. Если процесс сразу завершается, ищите первую причину в журнале: неправильный каталог, права доступа или отсутствующая переменная окружения.
Изменение unit-файла требует daemon-reload и перезапуска службы; сохранение файла не меняет уже работающий процесс. Для отмены автозапуска и остановки именно этого приложения используйте sudo systemctl disable --now myapp.service. Не отключайте системные службы SSH или сети: они не относятся к настройке вашего процесса.