Skip to content

Infrastructure

Vladislav Kuznecov edited this page Aug 25, 2021 · 1 revision

Настройка инфраструктуры

Я ещё не такой крутой, чтобы создавать полноценный скрипт на каком-нибудь Puppet, так что вот шпаргалка по настройке нового VDS:


Общая настройка VDS

Создание нового пользователя

  1. useradd -m dusic - добавление нового пользователя
  2. sudo passwd dusic - установка пароля
  3. usermod -aG sudo dusic - выдача расширенных прав

Настройка SSH (часть 1)

  1. nano /etc/ssh/sshd_config - конфигурация SSH
    1. Переопределить опцию Port. Например, на 2232
    2. Разрешить авторизацию по паролю: AllowUsers dusic
  2. sudo ufw allow 2232/tcp - открытие порта в фаерволе
  3. sudo ufw enable - включение фаервола
  4. sudo ufw reload - перезагрузка фаервола
  5. sudo service sshd restart - перезагрузка SSH сервера
  6. На этом моменте следует переоткрыть сессию SSH на новом порту через нового пользователя

Настройка SSH (часть 2)

  1. chsh -s /bin/bash - иногда требуется явно выставить командную оболочку
  2. sudo ufw deny 22/tcp - закрытие старого SSH порта
  3. sudo ufw reload - перезагрузка фаервола
  4. sudo ufw status verbose - можно посмотреть статус фаервола

Настройка SSH доступа по ключу (только, если у вас Linux)

  1. mkdir ~/.ssh - создание директории
  2. touch ~/.ssh/authorized_keys - создание файла с доверенными клиентами

Локально:

  1. cat ~/.ssh/id_rsa.pub | ssh dusic@$IP -p $PORT 'cat >> ~/.ssh/authorized_keys' - добавление ключа на сервер. На месте $IP и $PORT IP и порт (вау)

Теперь можно локально зайти на сервер как крутой: ssh dusic@$IP -p $PORT

А ещё можно локально настроить ~/.ssh/config и быть вообще крутым: ssh dusic-app-1

Настройка fail2ban

  1. sudo apt install fail2ban
  2. Конфигурация sudo vim /etc/fail2ban/jail.local
[ssh]
enabled  = true
port     = 2232
logpath  = /var/log/auth.log
maxretry = 6
  1. sudo service fail2ban restart
  2. sudo tail -n 1000 /var/log/fail2ban.log - лог

Настройка сервера с приложением

Установка Crystal

  1. Всё по гайду

Установка зависимостей

  1. sudo apt install libsodium-dev - шифрование в Discord

Настройка доступа к репозиторию

Этот шаг должен быть уже не нужен, учитывая, что репозиторий теперь публичный

  1. ssh-keygen -t rsa -b 4096 -C "your@mail.ru" && cat ~/.ssh/id_rsa.pub - SSH ключ сервера, его надо добавить в настройки репозитория Github

Настройка Unix сервиса

  1. vim /etc/systemd/system/dusic-cluster.service:
[Unit]
Description=Dusic cluster
After=network.target
[Service]
Type=simple
User=dusic
WorkingDirectory=/home/dusic/dusic-client/current
ExecStart=/home/dusic/dusic-client/current/bin/cluster -c /home/dusic/dusic-client/current/config/cluster/production/app_1.yml
ExecStop=/bin/kill -INT $MAINPID
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=dusic-cluster
Restart=always
[Install]
WantedBy=multi-user.target
  1. sudo systemctl daemon-reload - перезагрузка списка демонов
  2. Разрешить манипуляции с сервисом без sudo, добавив /etc/sudoers.d/dusic:
dusic ALL=(ALL) NOPASSWD: /bin/systemctl start dusic-cluster
dusic ALL=(ALL) NOPASSWD: /bin/systemctl stop dusic-cluster
dusic ALL=(ALL) NOPASSWD: /bin/systemctl restart dusic-cluster
dusic ALL=(ALL) NOPASSWD: /bin/systemctl try-restart dusic-cluster
  1. systemctl status dusic-cluster - статус
  2. sudo systemctl restart dusic-cluster - перезагрузка
  3. journalctl -u dusic-cluster-f - логи

Регулярные перезагрузки

  1. В случае проблем с памятью (утечки, например), можно задать регулярные перезагрузки через crontab -e:
30 5 * * * sudo /bin/systemctl try-restart dusic-cluster