Как установить Ботодром на Ubuntu

Полное руководство по самостоятельной установке, настройке и запуску Ботодрома на сервере Ubuntu 18.04 или 20.04.

Совет

Если вы не умеете настраивать сервер самостоятельно или у вас нет времени на его обслуживание, тогда поручите это системным администраторам.

К концу этого руководства у вас будет полностью настроенный и готовый к живому использованию Ботодром.

Эта установка не подходит для использования на локальном компьютере.

Что понадобится#

Для рекомендованной установки вам понадобятся:

  • Зарегистрированное доменное имя (если у вас уже есть доменное имя, которое используется для других целей, оно также подойдет)
  • Сервер с объемом оперативной памяти не менее 512МБ и установленным на нем Ubuntu 18.04 или Ubuntu 20.04

Домен для Ботодрома#

Чтобы не занимать основное доменное имя Ботодромом, мы далее настроим для него домен третьего уровня. Это позволит вам использовать одно зарегистрированное имя для Ботодрома, вебсайта, блога, магазина, лэндингов или для нескольких Ботодромов.

Сейчас в инструкциях в качестве домена, на котором будет запущен Ботодром, используется bd.example.com. Для удобства, чтобы можно было быстро копировать и вставлять команды без ручной правки, введите ваше доменное имя и придумайте поддомен для Ботодрома в полях для ввода абзацем ниже. Домен Ботодрома будет автоматически вставлен во все команды этого руководства.

Зарегистрированное доменное имя:

Придумайте поддомен для Ботодрома:

Ботодром будет установлен на домене: bd.example.com

Все шаги#

Это шаги для тех, кто уже настраивал сервера, и кому просто нужен быстрый алгоритм действий. Если вам нужна подробная инструкция по установке, тогда пропускайте этот раздел и переходите к следующему.

Установка#

  1. Создать A-запись для домена третьего уровня, указав IP-адрес сервера, на котором будет запущен Ботодром

  2. Создать директорию для Ботодрома:

    sudo mkdir -p /var/www/botodrom
  3. Перейти в нее:

    cd /var/www/botodrom
  4. Скачать текущую версию Ботодрома для Linux:

    sudo curl -L -O https://www.botodrom.com/download/v0.7.0/Botodrom-v0.7.0-linux-x64.tar.gz
  5. Распаковать:

    sudo tar -xvf Botodrom-v0.7.0-linux-x64.tar.gz
  6. Создать ссылку на исполняемый файл botodrom-server текущей версии Ботодрома:

    sudo ln -sfn /var/www/botodrom/Botodrom-v0.7.0-linux-x64/botodrom-server /var/www/botodrom/
  7. Настроить systemd-сервис:

    1. Создать файл:

      sudo nano /lib/systemd/system/botodrom.service
    2. Вставить в него:

      [Unit]
      Description=Botodrom
      [Service]
      ExecStart=/var/www/botodrom/botodrom-server
      Restart=always
      [Install]
      WantedBy=multi-user.target
  8. Запустить сервис:

    sudo systemctl start botodrom
  9. Включить авто-запуск сервиса по старту сервера:

    sudo systemctl enable botodrom
  10. Установить Nginx:

    sudo apt-get update
    sudo apt-get install nginx
  11. Настроить фаервол:

    sudo ufw allow "Nginx Full"
    sudo ufw allow "OpenSSH"
    sudo ufw enable
  12. Настроить Nginx как обратный прокси для перенаправления http запросов Ботодрому:

    1. Создать конфигурационный файл для домена:
      sudo nano /etc/nginx/sites-available/bd.example.com
    2. Вставить в него:
      server {
      listen 80;
      listen [::]:80;
      server_name bd.example.com;
      location / {
      proxy_pass http://localhost:8000;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection 'upgrade';
      proxy_set_header Host $host;
      proxy_cache_bypass $http_upgrade;
      }
      }
    3. Включить конфигурационный файл:
      sudo ln -s /etc/nginx/sites-available/bd.example.com /etc/nginx/sites-enabled/
    4. Убедиться, что конфигурационный файл в порядке:
      sudo nginx -t
    5. Перезапустить Nginx:
      sudo systemctl restart nginx
  13. Установить Certbot и его плагин для Nginx:

    sudo apt install certbot python3-certbot-nginx
  14. Получить SSL сертификат с авто-обновлением и настроить переадресацию HTTP на HTTPS в Nginx:

    sudo certbot --nginx -d bd.example.com
  15. Проверить Certbot-таймер:

    sudo systemctl status certbot.timer
  16. Протестировать обновления сертификата:

    sudo certbot renew --dry-run

Обновление#

  1. Перейти в директорию Ботодрома:
    cd /var/www/botodrom
  2. Скачать новую версию Ботодрома для Linux:
    sudo curl -L -O https://www.botodrom.com/download/v0.7.0/Botodrom-v0.7.0-linux-x64.tar.gz
  3. Распаковать:
    sudo tar -xvf Botodrom-v0.7.0-linux-x64.tar.gz
  4. Обновить ссылку на исполняемый файл botodrom-server новой версии Ботодрома:
    sudo ln -sfn /var/www/botodrom/Botodrom-v0.7.0-linux-x64/botodrom-server /var/www/botodrom/
  5. Перезапустить сервис:
    sudo systemctl restart botodrom

Подробная установка#

Настройка домена#

Чтобы вам было удобно открывать админку и редактор Ботодрома в браузере, а также, чтобы внешние сервисы могли устанавливать защищенное соединение с вашим Ботодромом, необходимо связать его с доменным именем.

Зайдите в панель управления вашего доменного провайдера или хостинга (если домен предоставлен хостингом) и откройте раздел управления ресурсными записями DNS (настройки DNS). Добавьте A-запись для домена, который вы планируете использовать, указав IP-адрес вашего сервера. Если ваше зарегистрированное доменное имя example.com, и вы создадите A-запись bd, тогда Ботодром будет доступен на bd.example.com.

Установка Ботодрома#

Загрузка и распаковка#

Создайте директорию, в которой будет установлен Ботодром. Здесь будет использоваться /var/www/botodrom, но любая другая директория также подойдет:

sudo mkdir -p /var/www/botodrom

Перейдите в созданную директорию:

cd /var/www/botodrom

Скачайте в нее архив с текущей версией Ботодрома для Linux:

sudo curl -L -O https://www.botodrom.com/download/v0.7.0/Botodrom-v0.7.0-linux-x64.tar.gz

И распакуйте:

sudo tar -xvf Botodrom-v0.7.0-linux-x64.tar.gz

После распаковки будет создана поддиректория Botodrom-v0.7.0-linux-x64, которая содержит файлы текущей версии Ботодрома. Файл botodrom-server является исполняемым и запускает Ботодром.

Создание ссылки на botodrom-server#

Чтобы упростить обращения к исполняемому файлу и дальнейшие установки обновлений, создайте на него ссылку для обращений через /var/www/botodrom/botodrom-server:

sudo ln -sfn /var/www/botodrom/Botodrom-v0.7.0-linux-x64/botodrom-server /var/www/botodrom/

Теперь файл /var/www/botodrom/Botodrom-v0.7.0-linux-x64/botodrom-server можно запускать по пути /var/www/botodrom/botodrom-server. Далее мы будем использовать этот путь вместо пути к файлу. Благодаря этому, когда возникнет необходимость скачать и установить новую версию Ботодрома, достаточно будет просто обновить ссылку на новую версию, и не искать: где использовались пути на прошлую версию.

Настройка авто-запуска#

Чтобы Ботодром автоматически стартовал при перезапуске сервера, или при падении по какой-то причине, мы воспользуемся системой инициализации systemd, которая будет следить за тем, чтобы Ботодром был всегда запущен.

Добавление systemd-сервиса#

Откройте в текстовом редакторе новый файл конфигурации systemd-сервиса для Ботодрома:

sudo nano /lib/systemd/system/botodrom.service

Вставьте в него:

[Unit]
Description=Botodrom
[Service]
ExecStart=/var/www/botodrom/botodrom-server
Restart=always
[Install]
WantedBy=multi-user.target

Нажмите Ctrl + X, чтобы закрыть текстовый редактор. На вопрос "Save modified buffer?" (Сохранить изменения?) — нажмите Y. И подтвердите имя файла для записи (File Name to Write: /lib/systemd/system/botodrom.service) нажатием Enter.

Старт сервиса#

Теперь запустите сервис:

sudo systemctl start botodrom

И включите авто-запуск сервиса по старту сервера:

sudo systemctl enable botodrom

Настройка HTTP#

По умолчанию Ботодром запущен на порте 8000. Это означает, что обращения к нему должны быть с номером порта после имени узла (http://bd.example.com:8000).

Чтобы к Ботодрому можно было обращаться без порта в ссылке, мы установим Nginx, который будет перенаправлять запросы к серверу — Ботодрому. Мы также настроим его, чтобы Ботодрому перенаправлялись запросы только для домена bd.example.com. Это позволит в будущем при необходимости запустить на одном сервере несколько сервисов, доступных с разных доменов.

Установка Nginx#

Перед установкой Nginx обновите информацию о последних версиях пакетов:

sudo apt-get update

Установите Nginx:

sudo apt-get install nginx

Если появится сообщение вида: "The following additional packages will be installed: ... Do you want to continue?" (Следующие дополнительные пакеты будут установлены: ... Хотите продолжить?) — нажмите Y, затем Enter.

Настройка фаервола#

Для работы Ботодрома нужны входящие подключения на сервере только по HTTP и HTTPS портам. Подключения к другим портам можно отключить, используя фаервол ufw.

Разрешите доступ по HTTP и HTTPS:

sudo ufw allow "Nginx Full"

А также SSH, иначе невозможно будет продолжать настройку:

sudo ufw allow "OpenSSH"

И включите фаервол:

sudo ufw enable

Когда появится предупреждение "Command may disrupt existing ssh connections" (Команда может прервать текущие ssh подключения) — нажмите Y, затем Enter.

Перенаправление HTTP запросов Ботодрому#

Откройте в текстовом редакторе новый файл Nginx-конфигурации для домена:

sudo nano /etc/nginx/sites-available/bd.example.com

Вставте в него:

server {
listen 80;
listen [::]:80;
server_name bd.example.com;
location / {
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

Нажмите Ctrl + X, чтобы закрыть текстовый редактор. На вопрос "Save modified buffer?" (Сохранить изменения?) — нажмите Y. И подтвердите имя файла для записи (File Name to Write: /etc/nginx/sites-available/bd.example.com) нажатием Enter.

Добавьте ссылку на конфигурационный файл в раздел включенных, чтобы активировать его в Nginx:

sudo ln -s /etc/nginx/sites-available/bd.example.com /etc/nginx/sites-enabled/

Убедитесь, что конфигурационный файл в порядке:

sudo nginx -t

Если все ок, вернется ответ "the configuration file /etc/nginx/nginx.conf syntax is ok".

Перезапустите Nginx:

sudo systemctl restart nginx

Настройка HTTPS#

Для активации защищенных HTTPS соединений с Ботодромом используйте Certbot. Этот инструмент упрощает получение и установку бесплатных SSL-сертификатов, а также настраивает HTTPS в Nginx и автоматические обновления сертификата.

Установка Certbot#

Установите Certbot и его плагин для Nginx:

sudo apt install certbot python3-certbot-nginx

Если появится сообщение вида: "The following additional packages will be installed: ... Do you want to continue?" (Следующие дополнительные пакеты будут установлены: ... Хотите продолжить?) — нажмите Y, затем Enter.

Запуск Certbot#

Запустить Certbot:

sudo certbot --nginx -d bd.example.com

На просьбу ввести емэйл (Enter email address) — введите ваш емэйл адрес, на который будут приходить уведомления, связанные с сертификатом. Например, если Certbot по какой-то причине не обновит его, вам придет уведомление с предупреждением о том, что сертификат истекает.

На сообщении о принятии условий (Please read the Terms of Service at...) — выбрать Agree (нажмите A, затем Enter).

На вопрос о подписке на рассылку от EFF ("Would you be willing to share your email address with the Electronic Frontier Foundation...) — нажмите Y (подписаться) или N (не подписываться), затем Enter.

Когда Certbot закончит проверку домена, и спросит о включении переадресации всех http запросов на https (Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access) — выберите Redirect (нажмите 2, затем Enter)

После успешного получения сертификата и обновления настроек появится сообщение начинающееся с:

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:

Это значит, что сертификат получен и все успешно настроено.

Проверка Certbot#

Проверьте, что таймер автообновления сертификата запущен:

sudo systemctl status certbot.timer

В ответ должно прийти сообщение вида:

certbot.timer - Run certbot twice daily
Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
Active: active (waiting)

Протестируйте получение обновлений:

sudo certbot renew --dry-run

В ответ должно прийти сообщение, содержащее фразу:

Congratulations, all renewals succeeded. The following certs have been renewed:

Обновление Ботодрома#

Для установки обновления после выхода новой версии Ботодрома нужно выполнить шаги из раздела Все шаги > Обновление.

Что дальше?#

Ура! Ботодром запущен и готов к работе! Теперь создайте нового пользователя в админке, чтобы запретить анонимный доступ к Ботодрому, и затем — в редактор, творить автоматику.