Как автоматически стартовать nodejs (или любое другое) приложение на линукс сервере после перезагрузки

Контекст: бывает что нужно захостить маленькое вебное приложение. Я не готов платить облачным провайдерам, поэтому использую одну линуксовую виртуалку для десятка разных приложений. Некоторые приложения обернуты в докер, и с ними нет проблем при перезагрузке. А некоторые запускаются скриптом или командой типа npm run prod. Такие не стартуют автоматом при перезагрузке системы. Можно для них теоретически настроить pm2, но это лишняя большая морока. А некоторые приложения вообще на java, и nodejs решения типа pm2 несовместимы.

В интернетах рекомендуют разные решения через init.d и другие системы. Недавно наткнулся на рекомендацию настроить автостарт через крон. Крон есть почти везде, он простой как 2 пальца, да и скрипт старта приложения все равно нужно писать. Получается красивое минималистичное работающее решение.

Решение: cron

Редактируй крон файл

crontab -e

Добавляй свой старт скрипт с @reboot. (ниже напишу как создать такой скрипт если еще не знаешь)

@reboot /srv/web/podgorniy.net/start

Скрипт создается примерно так:

Создай файл

touch start

Сделай файл executable (разреши запускать его содрежимое как скрипт)

sudo chmod +x start

И установи содержимое start так чтобы оно стартовало твою программу:

#! /bin/sh
npm run prod

или

#! /bin/sh
java -jar ....
3 симпатии