Foundry Virtual Tabletop — это удобная платформа для онлайн-ролевок, которая позволяет владельцам лицензии самостоятельно поднять игровой сервер: как на личном компьютере, так и на арендованном VPS/VDS. В этой статье мы разберём два способа хостинга:

  1. Локальная установка на вашем ПК (Windows, macOS или Linux) с доступом игроков по локальной сети.
  2. Удалённый сервер на Linux-VPS: установка Node.js-версии Foundry, настройка автозапуска через systemd, обратного прокси на nginx и HTTPS с помощью Let’s Encrypt.

Шаг за шагом покажем все необходимые команды и приведём примеры конфигураций. В завершение дадим практические советы по безопасности, резервному копированию данных и удобному управлению вашим сервером.

Локальный сервер Foundry VTT на вашем компьютере

Локальный (самостоятельный) хостинг предполагает запуск Foundry VTT на вашем личном компьютере или ноутбуке. Игроки будут подключаться напрямую к вашему устройству через браузер. Ниже представлены инструкции по установке для разных операционных систем, а затем – настройка сети для доступа игроков.

Установка Foundry VTT на Windows

  1. Скачивание установщика. Войдите в свой аккаунт на официальном сайте Foundry VTT и перейдите в раздел лицензий. Нажмите Download и выберите версию для Windows. Сохраните инсталлятор (файл .exe) на компьютер. (Примечание: скачивание ПО возможно только при наличии приобретенной лицензии Foundry VTT).
  2. Установка программы. Запустите скачанный инсталлятор Foundry VTT и выполните шаги мастера установки, как для любой другой программы на Windows. Можно установить в расположение по умолчанию (Program Files) или указать свой путь. Совет: установка в нестандартную папку (например, C:\FoundryVTT) может упростить дальнейшие обновления, минуя ограничения прав доступа Windows.
  3. Первый запуск. После установки найдите ярлык Foundry VTT и запустите приложение. При первом запуске появится окно активации – введите свой лицензионный ключ Foundry VTT и нажмите "Submit" для активации. Затем откроется меню настройки сервера Foundry.

Установка Foundry VTT на macOS

  1. Загрузка приложения. Скачайте версию Foundry VTT для macOS с сайта разработчика через страницу лицензий, выбрав вариант для macOS. Вы получите образ диска (DMG) или архив с приложением.
  2. Установка. Если загрузили .DMG, откройте его и перенесите значок Foundry VTT в папку Приложения. При запуске macOS может заблокировать приложение, так как оно не имеет официальной подписи Apple. Чтобы открыть Foundry VTT, щелкните по приложению правой кнопкой и выберите Открыть (появится запрос на запуск неподписанного приложения – подтвердите, что доверяете ему). Эта процедура нужна только при первом запуске.
  3. Активация. Запустите Foundry VTT на Mac. Введите лицензионный ключ, чтобы активировать программу (процесс аналогичен Windows). После активации откроется окно настройки сервера Foundry.

Установка Foundry VTT на Linux

  1. Скачивание архива. Зайдите в свой аккаунт Foundry VTT, в разделе лицензий выберите загрузку для Linux. Для Linux существует два варианта файлов: стандартный дистрибутив (Electron) и версия Node.js. Рекомендуется скачать Node.js-версию для использования Foundry в режиме сервера без графического интерфейса (headless). Скачайте архив (ZIP) с Foundry VTT на свой компьютер.

Распаковка и установка. Перенесите архив на вашу Linux-систему (например, через SCP/SFTP или прямой загрузкой с сервера). Затем распакуйте архив в выбранную директорию. Например, можно создать папку ~/foundryvtt и распаковать туда:

mkdir -p ~/foundryvtt
unzip foundryvtt.zip -d ~/foundryvtt

После распаковки убедитесь, что файл запуска имеет права на исполнение. В папке ~/foundryvtt находится исполняемый файл foundryvtt (или foundryvtt.sh). Если нужно, сделайте его исполняемым: chmod +x ~/foundryvtt/foundryvtt. Теперь вы можете запустить Foundry напрямую. Например, двойной клик по foundryvtt (в графической среде) или командой в терминале:

~/foundryvtt/foundryvtt

Первый запуск откроет окно приложения или запустит сервер в терминале (в зависимости от сборки). Введите лицензионный ключ для активации, после чего запустится сервер Foundry.

Примечание: Node.js-версия Foundry не имеет графического интерфейса – сервер управляется через веб-браузер. Запуск Node-версии описан в разделе про VPS ниже. Для локального использования можно также использовать графическую (Electron) версию – она запускается как обычное приложение с окном.

Настройка сетевого доступа игроков

После того как Foundry VTT запущен на вашем компьютере, нужно настроить доступ игроков к вашему серверу:

  1. Подключение в пределах локальной сети.
    Если вы и ваши игроки в одной домашней или офисной сети (например, подключены к одному роутеру), достаточно передать им локальный IP-адрес вашего ПК и порт. При старте сервера Foundry обычно показывает адрес вида http://192.168.x.y:30000. Игроки вводят этот URL в браузере, и подключаются напрямую внутри LAN.
  2. Открытие порта 30000.
    По умолчанию Foundry слушает TCP-порт 30000. Убедитесь, что системный брандмауэр не блокирует этот порт: После этого сервер сможет принимать входящие соединения на порту 30000.
    • Windows: при первом запуске может появиться запрос безопасности — подтвердите его. Или вручную откройте порт в настройках Брандмауэра Windows Defender.
  3. Доступ из Интернета (порт-форвардинг).
    Чтобы игроки за пределами вашей локальной сети смогли зайти на сервер, настройте переадресацию порта на роутере: после этого любой запрос на http://<ваш-внешний-IP>:30000 будет перенаправлен на ваш сервер Foundry. Проверить, что порт открыт, можно через онлайн-сервис (например, canyouseeme.org) — но он покажет успех только при запущенном сервере.
    • Найдите в настройках маршрутизатора раздел Port Forwarding (Переадресация портов).
    • Запишите внешний порт 30000 (TCP) и укажите внутрений IP-адрес вашего компьютера (тот же, что вы передавали игрокам) с портом 30000.
    • Сохраните правило и перезагрузите роутер, если нужно.

Linux (UFW): выполните в терминале

sudo ufw allow 30000/tcp

Если у вас нет прямого публичного IPv4-адреса (или провайдер применяет CG-NAT), классический порт-форвардинг не сработает. В такой ситуации можно воспользоваться виртуальной LAN-сетью на базе сервисов:

  1. Выбор и установка клиента. Установите на своём компьютере и попросите игроков скачать одно из бесплатных приложений:
    • LogMeIn Hamachi
    • Radmin
    • ZeroTier
  2. Создание приватной сети. В клиенте создайте новую сеть (задайте имя и пароль) и передайте эти данные участникам. Все подключившиеся автоматически попадают в единое «виртуальное» частное пространство.
  3. Получение виртуального IP. После подключения каждый игрок получит адрес (например, в Hamachi это 25.x.x.x). Хост сообщает свой получившийся IP и порт 30000, и остальные заходят в Foundry точно так же, как по локалке.
  4. Особенности.
    • Всем участникам нужно использовать один и тот же клиент и присоединиться к вашей сети.
    • Трафик идёт через сервера выбранного сервиса, что может вносить дополнительные задержки.
    • Зато не требуется настраивать роутер или беспокоиться о CG-NAT у провайдера.

Таким образом, вы получаете возможность «склеить» удалённых игроков в единую локальную сеть без прямого доступа к вашему домашнему интернет-каналу.
Поэтому такой способ стоит рассматривать, только если обычный проброс порта невозможен. Hamachi традиционно прост в настройке, но ограничен 5 участниками в бесплатной версии. Radmin – бесплатная альтернатива без такого ограничения. ZeroTier – еще один популярный вариант, часто рекомендуемый за стабильность. Имейте в виду, что при использовании подобной сети вы фактически даете участникам более широкий доступ к своему компьютеру (в рамках виртуальной сети), поэтому доверяйте только знакомым людям.

  • Облачный сервер или прокси: рассмотрите перенос хостинга на удаленный сервер (см. следующий раздел). Либо используйте специальные сервисы туннелирования, такие как ngrok или Cloudflare Tunnel, которые позволяют открыть доступ к локальному серверу без прямого IP (эти варианты вне фокуса данной статьи, но существуют как альтернативы).

Настроив соединение, передайте игрокам интернет-адрес для подключения. Как правило, это комбинация вашего внешнего IP и порта, например: http://ваш_IP:30000. Foundry VTT в окне приглашения также показывает “Internet Address” – его можно скопировать и отправить игрокам. Если настроили динамический DNS или привязали доменное имя к своему адресу, можно использовать его (например, http://yourgame.dynDNS.org:30000).

Преимущества и ограничения локального хостинга

Запуск Foundry VTT на своем ПК – распространенный вариант среди ведущих. Ниже его плюсы и минусы:

Преимущества:

  • Отсутствие дополнительных затрат. Вам не нужно платить за аренду сервера – используется уже имеющийся у вас компьютер. Это бюджетный способ начать играть.
  • Простота установки. Настроить локально довольно легко – достаточно установить приложение и запустить его. Нет необходимости в сложной серверной конфигурации.
  • Данные под рукой. Все файлы (миры, модули, медиа) хранятся на вашем локальном диске, где вы всегда имеете к ним доступ. Удобно делать резервные копии, редактировать файлы и пр.

Ограничения:

  • Сервер работает только когда вы за компьютером. Игроки смогут подключаться к вашей сессии только пока приложение Foundry запущено на вашем ПК. Если вы выключили программу или компьютер – сервер недоступен.
  • Требуется настройка сети для удаленных игроков. Если ваши игроки не находятся в той же локальной сети, придется возиться с сетью: настраивать портфорвардинг проброса доступа. Это может быть технически сложно для некоторых пользователей.
  • Зависимость от домашнего интернета. Производительность для игроков удаленно будет ограничена скоростью вашего интернет-соединения. Особенно важна скорость отдачи (upload): все картинки, карты и аудио будут передаваться от вас к игрокам. При медленном аплоаде у игроков могут быть задержки при загрузке контента. Также, если у вашего провайдера нестабильный интернет или строгие ограничения, это скажется на игре.
  • Нагрузка на ваш ПК. Хотя Foundry большую часть вычислений выполняет на стороне клиента (в браузерах игроков), ваш компьютер все же должен одновременно тянуть и саму игру, и хостинг сервера. Если у вас тяжелый мир с множеством модулей, это может потреблять заметное количество оперативной памяти и CPU.

Несмотря на ограничения, самостоятельный хостинг – самый простой и популярный путь начать пользоваться Foundry VTT. Если у вас небольшая группа и нормальный интернет, локальный сервер вполне справится с задачей.

Аренда сервера для Foundry VTT (VPS/VDS)

Второй подход – развернуть Foundry VTT на удаленном сервере, например виртуальном VPS или облачном хостинге. Foundry будет постоянно работать в датацентре, а вы и игроки подключаетесь к нему через интернет. Этот вариант похож на сервисы типа Roll20, но вы сами настраиваете сервер под Foundry.

Преимущества облачного хостинга: сервер может работать 24/7, игроки смогут заходить в мир в любое время (например, редактировать персонажей между сессиями); не нужно настраивать свой домашний интернет – достаточно чтобы у всех был доступ в сеть; обычно датацентры дают высокую пропускную способность канала, избавляя от проблем с медленным аплоадом у хоста. Недостатки: требуется арендная плата за сервер и чуть более сложная первоначальная настройка Foundry на Linux (необходимы базовые навыки работы с терминалом).

Далее мы расскажем, какой сервер выбрать и как установить на него Foundry VTT (на примере Ubuntu Linux).

Выбор VPS/VDS: требования и характеристики

Foundry VTT не предъявляет чрезмерных требований к серверу, так как основная нагрузка (рендер карт, логика игры) выполняется на компьютерах игроков в их браузерах. Однако сервер должен обеспечивать устойчивую работу Node.js-приложения и хранение данных. Рекомендуемые характеристики для VPS под Foundry VTT такие:

  • CPU: 2 виртуальных ядра (минимум 1, но 2 предпочтительно для стабильности).
  • RAM: 2 ГБ оперативной памяти минимум; рекомендуется 4 ГБ, особенно если планируется использование многих модулей или больших миров.
  • Диск: от 10 ГБ свободного SSD. Сама Foundry занимает ~300 МБ, но понадобится место под операционную систему, обновления, а также хранилище ваших миров и загруженного контента (карты, токены, аудио). 10–20 ГБ обычно достаточно для начала.
  • Трафик и сеть: стабильное интернет-соединение, желательно без жестких ограничений по трафику. Многие VPS-провайдеры предлагают 100 Мбит/c и выше, чего более чем достаточно. Уточните, есть ли ограничения по ежемесячному трафику. Для комфортной игры стоит иметь возможность передачи нескольких гигабайт данных в месяц (карты, музыка и т.п.). Хорошо, если хостинг дает публичный IPv4-адрес без принудительного NAT.
  • ОС и ПО: Подойдет большинство Linux-дистрибутивов x64. Популярный выбор – Ubuntu LTS (22.04 или 24.04) или Debian 11+, которые гарантированно поддерживают современную версию Node.js. Убедитесь, что на системе можно установить Node.js v20+ (Foundry требует Node 20 или выше, рекомендуются актуальные LTS-версии). Также пригодится возможность установки Reverse Proxy (например, nginx) для SSL.

Практически любой современный VPS конфигурации 2 CPU / 2 GB RAM / 20 GB SSD (часто доступный за ~$5 в месяц) способен без проблем хостить Foundry VTT. Если планируете активное использование встроенного видео/аудио чата или у вас очень большая группа игроков, можно рассмотреть 4 ГБ RAM и более высокую конфигурацию, но обычно это не требуется.

Примеры провайдеров: DigitalOcean, Vultr, Linode, AWS Lightsail, Hetzner, Selectel и др. Выбирайте по вашему региону и бюджету. Важнее всего – совместимость ОС (лучше Ubuntu/Debian) и наличие root-доступа для настройки.

Установка Foundry VTT на Linux-сервер (Ubuntu)

Теперь перейдем к поэтапной установке сервера Foundry VTT на примере Ubuntu 22.04 LTS. Предполагается, что вы уже получили доступ к вашему VPS (по SSH) с правами root или пользователя sudo. За основу возьмем Node.js-версию Foundry (headless-сервер).

Шаг 1: Базовая настройка сервера и пользователя. Если вы подключаетесь под root, желательно создать отдельного пользователя для запуска Foundry, чтобы повысить безопасность. Например, создадим пользователя foundry:

# добавить нового пользователя
adduser foundry
# дать ему права sudo (опционально, для установки ПО)
usermod -aG sudo foundry

После этого можно либо продолжить под root, либо переключиться на нового пользователя: su - foundry. Далее установки можно выполнять от имени пользователя с sudo.

Обновим систему и установим некоторые полезные утилиты:

sudo apt update && sudo apt upgrade -y
sudo apt install -y unzip

(При использовании дистрибутивов, отличных от Debian/Ubuntu, команды могут отличаться. Например, на CentOS вместо apt используется yum.)

Шаг 2: Установка Node.js. Foundry VTT работает на Node.js, минимально требуемая версия – Node 20 (желательно актуальная LTS, например Node 20.x на момент написания). Проверим, не установлен ли Node ранее: node -v. Если версия ниже 20 или Node.js отсутствует, установим Node 20 вручную.

Самый простой способ – воспользоваться официальным скриптом NodeSource для Ubuntu/Debian:

sudo apt install -y libssl-dev
curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

Эти команды добавят репозиторий NodeSource и установят Node.js 20 (и npm). После завершения проверьте: node -v должно вывести v20.x. Также npm -v для проверки наличия менеджера пакетов (npm может пригодиться для некоторых модулей Foundry или адаптеров).

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

  • Через SSH/SCP: Можно скачать дистрибутив Foundry на свой компьютер и загрузить на сервер с помощью SCP (Secure Copy) или SFTP. Например, используя SCP: scp ~/Downloads/foundryvtt.zip foundry@<IP-сервера>:~ – это скопирует файл в домашнюю директорию пользователя foundry.

Через прямую ссылку (wget): Официальный сайт Foundry позволяет сгенерировать временную прямую ссылку для скачивания. Для этого зайдите на страницу лицензий Foundry, нажмите на значок 🔗 (цепочки) рядом с кнопкой скачивания Node.js-версии – это скопирует уникальный URL для загрузки. Затем на сервере выполните:

mkdir -p ~/foundryvtt
cd ~/foundryvtt
# Замените <DOWNLOAD-LINK> на скопированный URL в кавычках:
wget -O foundryvtt.zip "<DOWNLOAD-LINK>"
unzip foundryvtt.zip

В результате архив распакуется в папку ~/foundryvtt. (Примечание: ссылка действительна ограниченное время, потому важно использовать ее сразу.)

После получения файлов убедимся, что все распаковалось правильно. В директории ~/foundryvtt должны появиться файлы, включая package.json, resources/, main.js и др. Теперь создадим отдельную папку для пользовательских данных (миров, систем, загрузок) вне директории приложения. По умолчанию Foundry хранит данные в специальной папке (на Windows это %localappdata%/FoundryVTT, на Linux – ~/.local/share/FoundryVTT), но на сервере удобнее задать свою. Создадим папку foundrydata:

mkdir -p ~/foundrydata

Эта директория будет эквивалентом папки User Data, где хранятся папки Data/worlds, Data/modules и пр.

Шаг 4: Первый запуск Foundry на сервере. Перейдем в каталог с приложением и запустим сервер Foundry вручную через Node.js:

cd ~/foundryvtt
node main.js --dataPath=/home/foundry/foundrydata

Если всё сделано правильно, в консоли появится лог запуска Foundry (включая версию и уведомления). По умолчанию сервер слушает порт 30000. Теперь можно открыть браузер на своем локальном компьютере и подключиться к серверу по его адресу. Введите: http://<IP-адрес вашего сервера>:30000. Должен загрузиться интерфейс Foundry VTT – страница Setup. При первом запуске система попросит вас ввести лицензионный ключ (если вы еще не вводили его) и создать пароль администратора.

  • Активация лицензии: Введите ваш ключ и подтвердите активацию (это нужно один раз).
  • Administrator Access Key (пароль администратора): Настоятельно рекомендовано установить пароль администратора – он потребуется для доступа к настройкам сервера (Setup) и защитит ваши миры от постороннего доступа. Введите надежный пароль и сохраните его.
  • Создание мира: Далее вы можете создать новый игровой мир или перенести существующий. Этот шаг можно сделать сейчас или позже.

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

Шаг 5: Настройка автозапуска (служба systemd). Пока мы запускали Foundry в ручном режиме – процесс привязан к открытому терминалу SSH. Чтобы сервер работал постоянно (в фоне) и автоматически запускался при перезагрузке VPS, настроим Foundry VTT как сервис systemd.

Создайте unit-файл для systemd. Выполните команду: sudo nano /etc/systemd/system/foundry.service и вставьте следующие строки:

[Unit]
Description=Foundry Virtual Tabletop
After=network.target

[Service]
Type=simple
User=foundry
WorkingDirectory=/home/foundry/foundryvtt
ExecStart=/usr/bin/node /home/foundry/foundryvtt/main.js --dataPath=/home/foundry/foundrydata
Restart=on-failure

[Install]
WantedBy=multi-user.target

Сохраните файл (Ctrl+O, Enter) и выйдите (Ctrl+X). Затем выполните команду включения и запуска сервиса:

sudo systemctl enable --now foundry.service

Этой командой мы сообщаем systemd запускать сервис при загрузке (enable) и сразу запускаем его сейчас (--now). Статус можно проверить через systemctl status foundry.service. Если всё настроено правильно, сервис перейдет в состояние Active (running). Теперь Foundry будет автоматически работать в фоне, и вам не потребуется держать постоянное SSH-подключение для его запуска. Управлять сервисом можно обычными командами sudo systemctl start/stop/restart foundry.service.

Шаг 6: Открытие порта на сервере. Поскольку сервер находится в датацентре, убедитесь, что внешние запросы на нужные порты разрешены. Многие VPS по умолчанию не блокируют никакие порты, но некоторые облачные платформы (AWS, Google Cloud) требуют явно открыть порты в настройках безопасности. В случае прямого подключения без прокси оставьте открытым порт 30000 (TCP) – именно на него приходят подключения игроков. Если вы планируете использовать веб-прокси (nginx) на 80/443, тогда внешне будут использоваться стандартные порты 80 (HTTP) и 443 (HTTPS), а порт 30000 можно закрыть от внешнего доступа (или ограничить на фаерволе для localhost).

Проверьте настройки UFW/iptables на своем сервере. Для UFW:

sudo ufw allow 30000/tcp
# если будет использоваться nginx:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Теперь ваш сервер Foundry готов принимать подключения на указанных портах.

Настройка обратного прокси и HTTPS (nginx + Let’s Encrypt)

На данном этапе Foundry VTT сервер уже работает. Игроки могут подключаться по адресу вашего сервера с портом 30000 (например, http://123.45.67.89:30000). Однако соединение по умолчанию не защищено (HTTP), что может быть проблемой: браузеры могут помечать такой сайт как небезопасный, а для работы встроенного видео/аудио чата требуется HTTPS. Мы настроим SSL-сертификат от Let’s Encrypt с помощью веб-сервера nginx, который будет выступать в роли reverse proxy – посредника между игроками и Foundry. Он же позволит использовать стандартный порт 443.

Что делает nginx? Он будет принимать запросы от клиентов на портах 80/443, шифровать/дешифровать их (SSL) и пересылать (проксировать) на локальный порт 30000, где работает Foundry. Также через nginx можно настроить удобный адрес (доменное имя) для вашего сервера.

Шаг 1: Подготовка доменного имени. Перед настройкой SSL вам нужно иметь домен или субдомен, указывающий на IP вашего сервера. Это может быть как приобретенный домен (например, mygame.com), так и бесплатный субдомен через сервис типа DuckDNS. Главное – возможность создать A-запись DNS, направляющую на ваш сервер. Почему нужен домен? Служба Let’s Encrypt выдаёт бесплатные сертификаты только для доменных имён, не для голых IP. Поэтому позаботьтесь о домене заранее.

Допустим, вы настроили DNS так, что game.example.com указывает на ваш сервер.

Шаг 2: Установка nginx. Выполним установку веб-сервера nginx:

sudo apt install -y nginx

После установки nginx сразу может запуститься. Остановим его пока, чтобы настроить: sudo systemctl stop nginx.

Шаг 3: Настройка конфигурации nginx. Конфигурация nginx находится в /etc/nginx/. Рекомендуется создавать отдельные файлы сайта в /etc/nginx/sites-available/ и затем активировать симлинком в /etc/nginx/sites-enabled/. Создадим файл: sudo nano /etc/nginx/sites-available/foundry.conf (название произвольное, например, можно использовать имя домена).

Начнем с минимальной настройки для HTTP (порт 80), без SSL – чтобы убедиться, что прокси работает. Пример базовой конфигурации (замените your.hostname.com на ваш домен):

server {
    listen 80;
    server_name your.hostname.com;
    
    # Максимальный размер загружаемых файлов (для крупных карт)
    client_max_body_size 300M;

    location / {
        # Proxy-pass к локальному серверу Foundry
        proxy_pass http://127.0.0.1:30000;
        # Передача заголовков для корректной работы WebSocket
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        # Проброс host и протокола
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

Сохраните файл. Этот конфиг говорит nginx слушать порт 80 на указанном домене и все запросы (location /) перенаправлять на локальный Foundry (порт 30000). Включаем его:

sudo ln -s /etc/nginx/sites-available/foundry.conf /etc/nginx/sites-enabled/foundry.conf

И перезапускаем nginx: sudo systemctl start nginx (для надежности можно сначала проверить синтаксис: sudo nginx -t). Теперь попробуйте в браузере открыть http://your.hostname.com – должна отобразиться страница Foundry (Setup или экран входа в мир). Если это работает через порт 80, переходим к следующему шагу.

(Если не работает: проверьте, открыт ли порт 80 в фаерволе, правильно ли настроен DNS, и не мешает ли сам Foundry – возможно, Foundry уже занят портом 80? По умолчанию нет, он на 30000. Также убедитесь, что server_name совпадает с доменом, по которому заходите.)

Шаг 4: Получение SSL-сертификата (Let’s Encrypt). Убедившись, что nginx проксирует соединение, добавим SSL. Установим certbot – клиент для Let’s Encrypt:

sudo apt install -y certbot python3-certbot-nginx

Выполним команду получения сертификата и автоматической настройки nginx:

sudo certbot --nginx -d your.hostname.com

Certbot запросит ваш email (для оповещений об обновлении сертификата), соглашение с условиями и возможно, нужно ли перенаправлять HTTP на HTTPS – рекомендуется согласиться на автоматический редирект. После успешного выполнения вы увидите сообщение о выдаче сертификата и расположении файлов, обычно это /etc/letsencrypt/live/your.hostname.com/fullchain.pem и privkey.pem. Certbot также должен сам обновить ваш конфиг nginx, добавив блок для listen 443 ssl и строки с ssl_certificate и ssl_certificate_key. Если он не сделал этого автоматически, можно внести изменения вручную. Пример, как должен выглядеть конфиг для HTTPS (важные отличия: listen 443 ssl, пути к сертификатам и ключу):

server {
    listen 443 ssl;
    server_name your.hostname.com;

    ssl_certificate     /etc/letsencrypt/live/your.hostname.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your.hostname.com/privkey.pem;

    client_max_body_size 300M;
    location / {
        proxy_pass http://127.0.0.1:30000;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

Если у вас остался отдельный блок для порта 80, можно добавить в него редирект на HTTPS, чтобы все HTTP-запросы перенаправлялись на безопасный порт:

server {
    listen 80;
    server_name your.hostname.com;
    return 301 https://$host$request_uri;
}

Теперь перезапустите nginx: sudo systemctl reload nginx. Готово – ваш Foundry VTT теперь доступен по адресу https://your.hostname.com! Все данные шифруются SSL, и браузеры будут считать соединение защищенным. Let’s Encrypt сертификаты действуют 90 дней, но certbot обычно добавляет автоматическое обновление (можно проверить командой sudo certbot renew --dry-run).

Шаг 5: Настройка Foundry для работы за прокси. Последний штрих – сообщить Foundry, что он работает за обратным прокси. Это нужно, чтобы корректно генерировались приглашения и работали некоторые функции (например, видео/аудио). Откройте файл настроек Foundry ~/foundrydata/Config/options.json (или сделайте это через веб-интерфейс Foundry -> Configuration). Убедитесь, что там прописаны следующие параметры:

"hostname": "your.hostname.com",
"port": 30000,
"proxyPort": 443,
"proxySSL": true
  • hostname – ваш домен,
  • port – внутренний порт Foundry (30000),
  • proxyPort – внешний порт, используемый прокси (443 для https),
  • proxySSL – флаг, что прокси использует SSL.

Также можно настроить опцию routePrefix если вы разместили Foundry не в корне домена, а по пути (в нашем случае не требуется). После изменения опций перезапустите Foundry (наш systemd-сервис) и nginx, чтобы убедиться, что всё в силе.

Теперь игроки смогут подключаться по красивому адресу вида https://game.example.com без указания порта, а соединение будет защищено шифрованием. Ваш сервер Foundry успешно настроен на VPS! 🎉

(Для справки: официальная документация Foundry содержит руководство по настройке nginx-прокси с примерами конфигурации и рекомендациями по SSL.)

Безопасность, резервное копирование и управление сервером

Настроив свой сервер Foundry VTT, важно позаботиться о безопасности и сохранности данных, а также упростить себе жизнь при дальнейшей эксплуатации.

Советы по безопасности

  • Пароль Администратора: Как упоминалось ранее, обязательно установите пароль администратора (Administrator Access Key) для доступа к экрану конфигурации Foundry. Это предотвратит возможность посторонним перехватить управление вашим сервером или создать свои миры на вашем экземпляре.
  • Брандмауэр и доступ извне: Открывайте только необходимые порты и только для тех сетей, которым нужно. Если вы играете узким кругом и знаете IP-адреса игроков, можно ограничить доступ к портам (на уровне облачного firewall или iptables) лишь для этих адресов. Минимально убедитесь, что закрыты все лишние порты, кроме 30000 (или 80/443, если используете прокси). Используйте UFW или другой firewall и регулярно проверяйте, что нет неожиданных сервисов.
  • SSL-шифрование: Мы настроили HTTPS для защиты трафика. Не отключайте его. Если вы не используете nginx, альтернативно Foundry позволяет указать свои сертификаты (опции sslCert и sslKey в конфиге) для прямого запуска на HTTPS. Однако управление через nginx зачастую удобнее.
  • Обновления: Следите за обновлениями Foundry VTT. Новые версии могут содержать важные исправления. Обновление на своем сервере обычно сводится к скачиванию новой версии и замене файлов приложения (папки FoundryVTT) поверх старых, при этом директорию Data/ с вашими мирами трогать не надо. Перед обновлением обязательно делайте бэкап (см. ниже). Node.js тоже стоит периодически обновлять до актуальной LTS.
  • Запуск от отдельного пользователя: Мы настроили запуск от имени пользователя foundry, у которого нет прав root. Это правильно – даже если злоумышленник как-то скомпрометирует процесс Foundry, он не получит прямого доступа к системе управления. Не запускайте Foundry под root без необходимости.
  • Fail2Ban и мониторинг: Опционально можно настроить Fail2Ban для отслеживания неоднократных неудачных попыток подключения (например, по порту 22 SSH, или даже к веб-порту, если беспокоитесь о брутфорсе пароля игрока/мастера). Хотя Foundry не особо подвержен подобным атакам (вам известен круг игроков), дополнительный мониторинг не помешает.
  • Доверенные модули: Устанавливая сторонние модули в Foundry, старайтесь использовать проверенные источники (официальный каталог пакетов или рекомендации сообщества). Вредоносный модуль теоретически может навредить как серверу, так и игрокам.

Резервное копирование данных

Ваши созданные миры, персонажи, журналы, а также загруженные изображения и другие ресурсы хранятся в папке данных Foundry (мы использовали ~/foundrydata на сервере). Регулярное резервное копирование этой папки – залог сохранности вашей кампании. Несколько рекомендаций:

  • Полная копия папки данных: Самый надежный способ – периодически делать архив (zip/rar/tar) всей директории foundrydata (или стандартной папки User Data, если используете локально). Достаточно остановить сервер Foundry (чтобы все файлы были в консистентном состоянии), скопировать папку целиком, и снова запустить сервер. Например, можно написать скрипт архивирования и отправки файла на облачное хранилище или просто хранить на своем ПК.
  • Частичное резервирование: Основная ценность – это папка Data внутри. Там находятся подкаталоги worlds/, systems/ (игровые системы), modules/ (модули) и загруженные пользователем ассеты. Как минимум, стоит сохранять папку Data/worlds/<ваш-мир>, которая содержит все данные конкретного мира. Однако для надежности лучше копировать всю папку Data, чтобы не забыть ничего важного.
  • Синхронизация через облако: Некоторые пытаются хранить папку данных в Dropbox/Google Drive для автосинхронизации. Делать так можно, но осторожно. Ни в коем случае не запускайте Foundry напрямую из папки облачного диска! Это может привести к конкуренции доступа и потере данных. Если хотите использовать облако – настройте одностороннюю загрузку (например, только выгружать бэкап в облако, но не тянуть из облака на сервер автоматически). Лучше используйте скрипты или приложения, которые по расписанию копируют ваши данные в облако, не перемещая сам рабочий каталог Foundry.
  • Частота бэкапов: Делайте резервную копию перед обновлением Foundry до новой версии, а также периодически (например, раз в неделю или после важных игровых сессий). Храните несколько поколений (несколько последних архивов) на случай, если проблема обнаружится не сразу.
  • Восстановление: Чтобы восстановить данные из резервной копии, достаточно остановить Foundry, заменить папку Data (или конкретный мир) из бэкапа и запустить сервер снова. Убедитесь, что версии Foundry совпадают или совместимы, если вы откатываетесь на старую версию мира.

Удобное управление сервером Foundry

  • Systemd-сервис: Мы уже настроили Foundry как сервис systemd, что упрощает управление – вы можете запускать, останавливать, перезапускать сервер командами, а также быть уверены, что он сам стартует после перезагрузки машины. Это стандартный и надежный способ держать сервер онлайн.
  • Консоль управления Foundry: В случае локального запуска (Electron) у Foundry есть встроенная консоль с логами, но на headless-сервере логи выводятся в файл (в папке Logs/ внутри данных) и в journalctl systemd. Ознакомьтесь с логами (~/foundrydata/Logs/foundry.log и sudo journalctl -u foundry.service) для отладки, если что-то идет не так.
  • FoundryVTT Manager и сторонние скрипты: Сообщество разработало ряд скриптов и утилит для упрощения управления Foundry на сервере. Например, существуют менеджеры установки/обновления, которые автоматически скачивают новую версию Foundry, применяют настройки nginx, настраивают автозапуск и т.п. (их иногда называют FoundryVTT Manager). Такие скрипты могут облегчить жизнь, если вы часто обновляете Foundry или держите несколько версий. Перед использованием сторонних решений убедитесь в их надежности и совместимости с вашей ОС.
  • Docker-контейнер: Альтернативный подход – запустить Foundry в Docker-контейнере (есть готовые образы на DockerHub). Это изолирует приложение и может упростить установку и обновление. Однако docker несколько усложняет настройку хранения данных и сетевых портов для новичков, поэтому если вы не знакомы с контейнерами, systemd-сервис на VPS – более понятный вариант.
  • Партнерские хостинги: Наконец, помимо самостоятельной аренды сервера, команда Foundry сотрудничает с рядом хостингов (MoltenHosting, The Forge и др.), которые за отдельную плату предоставляют готовый хостинг Foundry. Это самый простой вариант (минимум возни с настройками), но выходит дороже, чем свой VPS. Выбирайте подходящий путь исходя из бюджета и уверенности в своих технических навыках.

Настроив собственный сервер Foundry VTT, вы получаете полный контроль над своим игровым пространством. Локальный хостинг подойдет для камерных игр и экономии средств, тогда как VPS-сервер даст вашим игрокам более легкий доступ к игре. Следуйте официальным руководствам и нашим советам – и ваши приключения в цифровых мирах будут проходить гладко и безопасно!

Полезные ссылки (официальная документация):