User Tools

Site Tools


chat-bots:docker_deploj_na_vps

This is an old revision of the document!


Docker деплой на VPS

Базовая настройка безопасности VPS

Легенда

  • ☁️ — команда запускается на VPS
  • 💻 — команда запускается на локальном компьютере

Шаги

Обновить систему полностью

☁️ (root) $ apt update && apt upgrade -y && apt autoremove -y

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

☁️ (root) $ adduser oleg
Создайте надежный пароль, СОХРАНИТЕ его!
☁️ (root) $ usermod -aG sudo oleg

Установить свой SSH-ключ

☁️ (oleg) $ mkdir -p /home/oleg/.ssh
☁️ (oleg) $ chmod 700 /home/oleg/.ssh

С локального компьютера:

💻 $ ssh-keygen -t rsa -b 4096 -C "my-vps-key"
# При создании:
# - укажите имя файла (например: ~/.ssh/vps_key)
💻 $ ssh-copy-id -i ~/.ssh/vps_key oleg@SERVER_IP

Запретить SSH-логин под root

☁️ (root) $ sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config

Запретить логин по паролю

☁️ (root) $ sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config

Изменить SSH порт

☁️ (root) $ sed -i 's/^#\?Port .*/Port <your_ssh_port>/' /etc/ssh/sshd_config

Настроить firewall UFW

☁️ (root) $ apt install -y ufw
☁️ (root) $ ufw default deny incoming
☁️ (root) $ ufw default allow outgoing
☁️ (root) $ ufw allow <your_ssh_port>/tcp
☁️ (root) $ ufw limit <your_ssh_port>/tcp
☁️ (root) $ ufw --force enable

❗️ Открыть порт для PostgreSQL по аналогии с SSH. Это необходимо для подключения к БД при помощи psql со своего компьютера.

Перезапустить SSH

☁️ (root) $ systemctl restart sshd

Проверить, что всё работает (из второго терминала!)

Очень важно — НЕ закрывать текущую SSH-сессию, пока не убедитесь, что вход работает.

С локального компьютера:

💻 $ ssh -p <your_ssh_port> alice@SERVER_IP

Установка Docker

☁️ (root) $ curl -fSL https://get.docker.com -o get-docker.sh
☁️ (root) $ sh ./get-docker.sh
☁️ (root) $ apt install docker-compose-plugin
☁️ (root) $ usermod -aG docker oleg
☁️ (root) $ su - oleg
 
# проверка, что пользователь в группе docker
☁️ (oleg) $ groups
 
# теперь можно запускать docker без root
☁️ (oleg) $ docker ps 

Д/З

Reading assignment (прочитать и понять)

Практика (для зачета)

Обязательная часть

  1. Выполнить докеризацию Pizza Bot
  2. Удалить docker-compose.yml файл полностью
  3. Написать Dockerfile для создания Docker-образа (docker image) чат-бота Pizza Bot
  4. Если нет учетной записи на https://hub.docker.com, то создать
  5. Создать новый Docker Hub репозиторий (публичный) для публикации образа своего бота
  6. Авторизовать локальной Docker с учеткой Docker Hub, чтобы можно было делать docker push
  7. Дополнить Makefile командами Docker:
    1. Создать Volume и Network
    2. Запустить / остановить контейнер БД postgres
    3. Билд + пуш образа чат-бота в Docker Hub
    4. Запустить / остановить контейнер с чат-ботом
  8. Выполнить билд и пуш своего Pizza Bot на Docker Hub

Рекомендуемая часть

  1. Арендовать VPS (или VDS)
  2. Получить IP адрес и рутовый доступ по SSH
  3. Выполнить базовую настройку безопасности VPS
  4. Установить docker на VPS
  5. Выполнить деплой своего бота и postgres на VPS

P.S. Если студент против регистрации на сайте хостинга с предоставлением личного номера сотового или из-за необходимости оплаты услуг хостинга, то по этой причине можно легально отказаться от выполнения данной части Д/з без потери зачета. Однако выполнение данной части Д/з крайне рекомендуется!

Бесплатные VPS

(я не пробовл, но пишут что можно)

VPS за 75 ₽ / мес от FirstByte (тариф MSK-KVM-SSD-START), реферальная ссылка: https://firstbyte.ru/?from=125588

Процесс сдачи

  1. (студент): напишите в ТГ преподавателю одно сообщение, содержащее текст:
    1. Для сдачи Д/з Docker деплой на VPS
    2. Ссылка на гит с исходным кодом бота
    3. Ссылка на публичный Docker Hub репозиторий, где опубликован образ Вашего чат-бота (пример: https://hub.docker.com/r/olegsklyarov/unn_pizza_bot)
    4. Креды для подключения к PostgreSQL на вашем VPS: IP сервера, порт PostgreSQL, имя пользователя и пароль к БД. Преподаватель подключиться к БД при помощи psql и проверит содержимое таблиц БД.
  2. (преподаватель) проверяет Dockerfile, Makefile в гитхаю, а также образ в Docker Hub
  3. (преподаватель) отправляет с ТГ личку студенту сообщение “ФИО ✅ 🔟”
  4. (студент) заходит на страницу успеваемости и проверяет корректность своей успеваемости.
chat-bots/docker_deploj_na_vps.1763705538.txt.gz · Last modified: by olegsklyarov