Облачная платформаEvolution

Развертывание игрового сервера для настольных RPG (Foundry Virtual Tabletop)


С помощью этого руководства вы развернете собственный сервер Foundry Virtual Tabletop — платформу для проведения настольных ролевых игр: Dungeons & Dragons, Pathfinder и других. Это даст мастеру игры полный контроль над сессиями. Все данные — миры, карты, модули — будут храниться на вашем сервере, а игроки смогут подключаться через браузер.

Вы будете использовать следующие сервисы:

  • «Виртуальные машины» — сервис, в рамках которого предоставляется виртуальная машина.

  • «Публичные IP» — сервис для организации доступа к сервису через интернет.

  • Docker — система контейнеризации.

  • Docker Compose — инструмент для запуска и управления Docker-контейнерами.

  • Бесплатный сервис nip.io для получения публичного доменного имени и сертификата. Вы также можете использовать собственное зарегистрированное доменное имя и SSL-сертификат для организации доступа.

  • Nginx — веб-сервер для проксирования запросов и организации защищенного HTTPS-доступа к приложению.

  • Let’s Encrypt — сервис для автоматического получения бесплатного SSL-сертификата.

Шаги:

Перед началом работы

  1. Если вы уже зарегистрированы, войдите под своей учетной записью.

  2. Создайте учетную запись на foundryvtt.com и приобретите лицензию.

1. Разверните ресурсы в облаке

На этом шаге вы создадите группу безопасности и виртуальную машину.

  1. Создайте группу безопасности с названием vm-foundryvtt-sg в зоне доступности ru.AZ-2 и добавьте в нее правила:

    Трафик

    Протокол

    Порт

    Тип источника/адресата

    Источник/Адресат

    Входящий

    TCP

    443

    IP-адрес

    0.0.0.0/0

    Входящий

    TCP

    80

    IP-адрес

    0.0.0.0/0

    Исходящий

    Любой

    Оставьте пустым

    IP-адрес

    0.0.0.0/0

  2. Создайте виртуальную машину со следующими параметрами:

    • Названиеfoundryvtt-server.

    • Зона доступностиru.AZ-2.

    • Образ — публичный образ Ubuntu 22.04.

    • Сетевой интерфейс — выберите тип Публичный IP.

    • Группы безопасности — добавьте vm-foundryvtt-sg.

    • Метод аутентификацииПубличный ключ и Пароль.

    • Публичный ключ — укажите ключ, созданный ранее.

    • Пароль — задайте пароль пользователя.

Убедитесь, что ресурсы созданы и отображаются в личном кабинете:

  1. На странице Инфраструктура → Виртуальные машины отображается виртуальная машина foundryvtt-server со статусом «Запущена».

  2. На странице Сети → Группы безопасности отображается группа безопасности vm-foundryvtt-sg со статусом «Создана».

2. Настройте окружение на виртуальной машине

На этом шаге вы установите необходимые пакеты и настроите систему на ВМ.

  1. Подключитесь к виртуальной машине foundryvtt-server по SSH или через серийную консоль.

  2. Обновите систему и установите необходимые зависимости:

    sudo apt update && sudo apt upgrade -y &&\
    sudo apt install -y curl apt-transport-https\
    ca-certificates\
    software-properties-common\
    gnupg2\
    lsb-release
  3. Установите Docker:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt update
    sudo apt install docker-ce docker-ce-cli containerd.io -y
  4. Дайте текущему пользователю права на запуск Docker:

    sudo usermod -aG docker $USER \
    newgrp docker
  5. Установите Docker Compose:

    sudo apt install docker-compose -y
  6. Проверьте, что Docker и Docker Compose установлены корректно:

    docker --version
    docker-compose version
  7. Установите и запустите Nginx:

    sudo apt install nginx -y
    sudo systemctl enable nginx
    sudo systemctl start nginx
  8. Установите Let’s Encrypt и плагин для Nginx:

    sudo apt install certbot python3-certbot-nginx -y

3. Настройте Nginx и HTTPS

На этом шаге вы настроите службу Nginx и обеспечите доступ по HTTPS.

  1. Сконфигурируйте межсетевой экран:

    sudo ufw allow OpenSSH
    sudo ufw allow 'Nginx Full'
    sudo ufw enable
  2. Создайте конфигурационный файл Nginx:

    sudo nano /etc/nginx/sites-available/foundryvtt.conf
  3. Вставьте конфигурацию, заменив <ip_address> на значение публичного IP-адреса виртуальной машины:

    server {
    listen 80;
    server_name foundryvtt.<ip_address>.nip.io www.foundryvtt.<ip_address>.nip.io;
    location / {
    proxy_pass http://localhost:30000/;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Scheme $scheme;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_redirect off;
    }
    }
  4. Активируйте конфигурацию и перезапустите Nginx:

    sudo ln -sf /etc/nginx/sites-available/foundryvtt.conf /etc/nginx/sites-enabled/foundryvtt.conf
    sudo rm -f /etc/nginx/sites-enabled/default
    sudo nginx -t
    sudo systemctl reload nginx
  5. Проверьте, что Nginx работает:

    sudo systemctl status nginx

    Сервис Nginx должен быть в статусе «active (running)».

  6. Перейдите по адресу http://foundryvtt.<ip_address>.nip.io.

    Откроется страница с текстом «502 Bad Gateway».

  7. Выпустите SSL-сертификат:

    sudo certbot --nginx -d foundryvtt.<ip_address>.nip.io --redirect --agree-tos -m <email>

    Где:

    • <ip_address> — публичный IP-адрес виртуальной машины.

    • <email> — email для регистрации сертификата.

    Внимание

    При выпуске сертификата через nip.io может возникнуть ошибка «too many certificates (25000) already issued for «nip.io»». Это происходит из-за популярности сервиса nip.io. При возникновении ошибки повторите команду выпуска сертификата. Если ошибка сохраняется, рассмотрите использование собственного доменного имени.

  8. Перейдите по адресу https://foundryvtt.<ip_address>.nip.io и убедитесь, что браузер отмечает соединение как безопасное.

4. Разверните приложение

На этом шаге вы развернете приложение Foundry VTT с помощью Docker Compose.

  1. Создайте структуру проекта:

    mkdir -p $HOME/foundryvtt && cd $HOME/foundryvtt
  2. Создайте файл docker.env для установки переменных окружения Foundry VTT:

    sudo nano docker.env
  3. Добавьте переменные в файл:

    FOUNDRY_USERNAME=<username>
    FOUNDRY_PASSWORD=<password>
    FOUNDRY_ADMIN_KEY=<admin_password>
    FOUNDRY_HOSTNAME=foundryvtt.<ip_address>.nip.io
    FOUNDRY_PROXY_SSL: "true"
    FOUNDRY_PROXY_PORT: "443"
    CONTAINER_PRESERVE_CONFIG: "true"

    Где:

    • <username> — имя пользователя или адрес электронной почты для foundryvtt.com. Необходимо для загрузки дистрибутива приложения.

    • <password> — пароль от учетной записи для foundryvtt.com. Необходим для загрузки дистрибутива приложения.

    • <admin_password> — произвольный ключ доступа к панели администратора сервера.

    • <ip_address> — публичный IP-адрес виртуальной машины foundryvtt-server.

  4. Создайте файл docker-compose.yml:

    sudo nano docker-compose.yml
  5. Вставьте в созданный файл описание контейнера:

    services:
    foundry:
    image: ghcr.io/felddy/foundryvtt:14
    container_name: foundryvtt
    env_file: ./docker.env
    restart: unless-stopped
    volumes:
    - foundrydata:/data
    expose:
    - "30000"
    - "443"
    volumes:
    foundrydata:
  6. Запустите сервис:

    docker-compose up -d
  7. Проверьте, что сервис запущен:

    docker compose ps
  8. Перейдите по адресу https://foundryvtt.<ip_address>.nip.io.

    Откроется интерфейс Foundry VTT.

  9. Примите лицензионное соглашение.

  10. Введите пароль администратора, который вы указали в переменных окружения на шаге 3.

Теперь вы можете перейти к настройке приложения, загрузить файлы ваших миров, модулей и ресурсов. Подробнее про настройку читайте в документации Foundry VTT.

5. Отключите доступ по SSH для виртуальной машины

Когда вы развернули и настроили сервис, закройте доступ по SSH для повышения безопасности.

  1. В личном кабинете на верхней панели слева нажмите Кнопка с изображением девяти точек и выберите Инфраструктура → Виртуальные машины.

  2. В списке виртуальных машин выберите foundryvtt-server.

  3. Перейдите на вкладку Сетевые параметры.

  4. В блоке сетевого интерфейса нажмите Горизонтальное меню и выберите Изменить группы безопасности.

  5. Удалите группу SSH-access_ru и сохраните изменения.

  6. Убедитесь, что доступа нет — попробуйте подключиться к виртуальной машине по SSH.

    После отключения доступа по SSH, администрирование сервиса будет доступно через серийную консоль виртуальной машины.

Результат

Вы развернули и настроили собственный сервер Foundry Virtual Tabletop в облаке Cloud.ru с публикацией по HTTPS. Полученные навыки помогут вам создавать сервисы с использованием облачной инфраструктуры.