FoundryVTT

来自 ArchWiki

Foundry VTT 是一个独立的应用程序,专为体验多人桌面角色扮演游戏而构建,它使用功能丰富且现代的自托管应用程序,玩家可以直接通过浏览器连接。

Foundry VTT专有软件。使用该软件前必须购买付费许可证。

这些说明展示了在 Arch Linux 系统中安装 Foundry VTT 的一种可能方法。过程结束时,应该可以使用 安全连接 从浏览器访问该服务。

安装

要求

在安装 Foundry VTT 之前,您应该已安装可正常工作的 nginxNode.js

创建目录

首先,创建这些目录以安装软件及其数据。 例如,您可以在 /home 下创建这些目录

# mkdir -p /home/foundry/{foundryvtt,foundrydata}

创建系统用户

Foundry VTT 将由系统用户运行。 首先,创建一个系统用户,名称为 foundry 或任何其他名称。

# useradd -r -s /usr/bin/nologin foundry

下载

foundryvtt.com 注册并购买许可证后,您需要转到个人资料页面的 “Purchased Software Licenses” 部分。 在那里您将看到该软件的不同软件包。 您需要下载 Node.js 版本。

您可能会注意到下载页面上下载链接旁边有一个小的 “链条” 链接图标。 单击此链条图标会生成一个临时链接,该链接可用于通过终端或 shell 界面使用 wget 下载 Foundry VTT。

使用 wget 等命令行实用程序下载链接时,务必将链接用双引号括起来。 这确保命令可以正确读取链接。 例如

# wget -O foundryvtt.zip "https://your-download-link-from-foundry-vtt.com-here/"

下载的文件必须解压缩到您之前创建的 foundryvtt 目录中。 填充此目录后,您需要设置正确的权限

# unzip foundryvtt.zip -d /home/foundry/foundryvtt
# chown -R foundry:foundry /home/foundry/foundryvtt
# chown -R foundry:foundry /home/foundry/foundrydata

当使用来自 AURfoundryvttAUR 软件包时,也需要此存档。

用法

在没有代理的情况下运行软件

现在您可以测试软件是否正常工作。 以用户 foundry 身份运行服务器

# su - foundry -s /bin/bash -c "node foundryvtt/resources/app/main.js --dataPath=/home/foundry/foundrydata"

在它运行时,您应该能够使用端口 30000 从浏览器连接到服务器。 如果您愿意,您现在可以设置管理员密码并保存您的许可证密钥。

现在使用 Ctrl+c 停止服务器。

创建服务

运行该软件的方法之一是使用 systemd#Writing unit files。 您可以为 Foundry VTT 创建一个简单的服务

[Unit]
Description=Foundry VTT

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

[Install]
WantedBy=multi-user.target

正如 安装说明 中建议的那样,编辑软件选项以使其可以通过代理服务器访问

设置以下选项,保留其他选项,其中 hostname 例如 a.domain.tld

/home/foundry/foundrydata/Config/options.json
"hostname": "hostname",
"routePrefix": null,
"sslCert": null,
"sslKey": null,
"port": 30000,
"proxyPort": 443,
"proxySSL": true

配置 nginx

要为 Foundry VTT 配置 nginx 代理服务器,您可以使用官方文档中的此示例

# This goes in a file within /etc/nginx/sites-available/. By convention,
# the filename would be either "your.domain.com" or "foundryvtt", but it
# really does not matter as long as it's unique and descriptive for you.

# Define Server
server {

    # Enter your fully qualified domain name or leave blank
    server_name             your.hostname.com;

    # Listen on port 443 using SSL certificates
    listen                  443 ssl;
    listen                  [::]:443 ssl;
    ssl_certificate         "/etc/letsencrypt/live/your.hostname.com/fullchain.pem";
    ssl_certificate_key     "/etc/letsencrypt/live/your.hostname.com/privkey.pem";

    # Sets the Max Upload size to 300 MB
    client_max_body_size 300M;

    # Proxy Requests to Foundry VTT
    location / {

        # Set proxy headers
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # These are important to support WebSockets
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";

        # Make sure to set your Foundry VTT port number
        proxy_pass https://127.0.0.1:30000;
    }
}

# Optional, but recommend. Redirects all HTTP requests to HTTPS for you
server {
    if ($host = your.hostname.com) {
        return 301 https://$host$request_uri;
    }

    listen 80;
    listen [::]:80;

    server_name your.hostname.com;
    return 404;
}

您可以使用 certbot 获取您的证书。

运行服务

现在启动/启用 foundryvtt.servicenginx.service

此时,您应该能够通过将 浏览器 指向之前设置的 hostname 来访问该服务。