Comments 7
Логин указываем root
Ни в коем случае, возможность логиниться в root нужно вообще полностью отключать в настройках SSH-сервера в целях безопасности. Только su/sudo
установить модули node.js командой «npm i»
Правильно я понимаю, что вебпак-бандлы собираются каждый раз прямо на сервере? По-моему это лишняя нагрузка
Выбираем второй способ проверки
Можно было бы сразу написать команду со всеми опциями, чтобы никаких вопросов пользователю не задавалось
Бот сам настроит cron-задачу
В современных убунтах вместо cron используется systemd-таймер
Запускать потенциально баганутое nodejs-приложение от имени root — чудовищно плохая идея, потому что малейший баг в коде может привести к появлению у злоумышленника полного доступа к серверу
А ещё я что-то не нашёл ничего про автозапуск после перезагрузки сервера
Ни в коем случае, возможность логиниться в root нужно вообще полностью отключать в настройках SSH-сервера в целях безопасности. Только su/sudo
Подскажите, а в чём разница если я залогинюсь не рутом и буду просто использовать sudo для тех же целей?
Правильно я понимаю, что вебпак-бандлы собираются каждый раз прямо на сервере? По-моему это лишняя нагрузка
Просто каждый раз при перекомпиляции (добавили вы новый div в код) git будет выкатывать целое полотно изменений в бандле, которые нам не нужны. Изменения самого же компонента реакт будут также видны. Тут бы сделать так, чтобы гит не отслеживал изменения файла, но переносил его всё равно каждый раз, но вот не знаю, возможно ли это и стоит ли усилий, если можно просто скопилировать на хостинге, всё же это не часто будет происходить.
Выбираем второй способ проверки
Пока не постиг подобные сокращения, но буду иметь ввиду, спасибо :)
В современных убунтах вместо cron используется systemd-таймер
У certbota написано что будет крон-задача:
The Certbot packages on your system come with a cron job that will renew your certificates automatically before they expire.
Запускать потенциально баганутое nodejs-приложение от имени root — чудовищно плохая идея, потому что малейший баг в коде может привести к появлению у злоумышленника полного доступа к серверу
Можете привести пример? Очень интересно.
А ещё я что-то не нашёл ничего про автозапуск после перезагрузки сервера
После перезагрузки ubuntu запускается pm2, который запускает приложение. Если же само приложение крашится, то pm2 его также перезапустит. Ну и в коде критические ошибки стоит отлавливать чтобы ничего не падало, как минимум вот этим:
process.on('unhandledRejection', (reason, promise) => {
log.error({ reason, promise }, 'серверный процесс unhandledRejection')
})
process.on('uncaughtException', err => {
log.error({ err }, 'серверный процесс uncaughtException')
})
Подскажите, а в чём разница если я залогинюсь не рутом и буду просто использовать sudo для тех же целей?
Во-первых, sudo знает и пишет в логи, какой конкретно пользователь его пользует, что будет важно в многопользовательском окружении, в то время как root это просто root и неизвестно кто. Во-вторых, пользователь root известен всем, и китайские боты будут пытаться подбирать к нему пароль (при его наличии), в то время как ваш не-root логим им не будет известен и подобрать пароль к нему они не смогут (впрочем, при аутентификации только по ssh-ключу эта проблема не столь остра). В-третьих, это хотя бы просто ещё один слой «защиты от дурака»
git будет выкатывать целое полотно изменений в бандле
Вы потихоньку начинаете понимать, почему использовать git для развёртывания — не самая хорошая идея ;) Про это уже где-то были статьи на Хабре вроде
У certbota написано что будет крон-задача:
Или документация устарела, или неполная, или просто врут. Достаточно посмотреть те файлы конфигурации, которые certbot создаёт после своей работы, чтобы понять, что это не соответствует действительности. Впрочем, это так, мелкая придирка
Можете привести пример?
Гуглите абсолютно любую RCE-уязвимость, они постоянно пачками находятся и эксплуатируются
После перезагрузки ubuntu запускается pm2
Кем запускается? Этого я и не обнаружил в посте
Возможно упустил, командой pm2 startup systemd настраивается его автозагрузка. Вот тут подробнее.
Хостинг Node.js https сервера с авто-обновляемым SSL в облаке и как я настроил цикл разработки (+ git, react)