
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
foundryvtt-docker是一个用于快速部署Foundry Virtual Tabletop(虚拟桌面)服务器的Docker镜像。该镜像设计注重安全性、可靠性、紧凑性和易用性,能够让用户在几分钟内启动并运行一个Foundry Virtual Tabletop实例。它仅需用户提供下载Foundry Virtual Tabletop发行版所需的凭据或URL即可完成部署。
以下命令可启动Foundry Virtual Tabletop服务器,需要提供foundryvtt.com的凭据以安装和授权服务器:
consoledocker run \ --env FOUNDRY_USERNAME='<你的用户名>' \ --env FOUNDRY_PASSWORD='<你的密码>' \ --publish 30000:30000/tcp \ --volume <你的数据目录>:/data \ felddy/foundryvtt:release
如果使用bash或类似shell,可在Docker命令前添加空格,防止凭据被记录到shell历史中(参考HISTCONTROL)。
或者,可从Foundry网站的用户个人资料页面获取临时下载令牌。在"已购买许可证"页面,点击标准Node.js下载链接右侧的[🔗]图标,获取软件的临时下载URL:
consoledocker run \ --env FOUNDRY_RELEASE_URL='<临时URL>' \ --publish 30000:30000/tcp \ --volume <你的数据目录>:/data \ felddy/foundryvtt:release
推荐使用docker compose管理服务器,docker-compose.yml文件能更可靠地启动和维护容器并记录配置。Foundry的所有配置选项都可通过环境变量指定。
创建类似以下的docker-compose.yml文件,提供凭据作为环境变量值:
yamlversion: "3.8" services: foundry: image: felddy/foundryvtt:release hostname: my_foundry_host init: true restart: "unless-stopped" volumes: - type: bind source: <你的数据目录> target: /data environment: - FOUNDRY_PASSWORD=<你的密码> - FOUNDRY_USERNAME=<你的用户名> - FOUNDRY_ADMIN_KEY=atropos ports: - target: 30000 published: 30000 protocol: tcp
启动容器并后台运行:
consoledocker compose up --detach
通过以下地址访问Web应用:http://localhost:30000
如果一切顺利,你将看到许可协议提示,然后使用FOUNDRY_ADMIN_KEY变量设置的"管理员访问密钥"登录。
此容器还支持通过Docker Secrets传递敏感值。使用密钥传递凭据等敏感值比环境变量更安全。密钥json文件可任意命名(本示例使用secrets.json),但必须如以下示例所示在容器内映射为config.json。有关所有支持的密钥,请参见下面的密钥部分。
创建包含要设置的值的secrets.json文件:
json{ "foundry_admin_key": "atropos", "foundry_password": "你的密码", "foundry_username": "你的用户名" }
在docker-compose.yml文件中添加密钥:
yamlversion: "3.8" secrets: config_json: file: secrets.json services: foundry: image: felddy/foundryvtt:release hostname: my_foundry_host init: true restart: "unless-stopped" volumes: - type: bind source: <你的数据目录> target: /data environment: ports: - target: 30000 published: 30000 protocol: tcp secrets: - source: config_json target: config.json
此容器默认禁用Foundry的"更新软件"选项卡。要升级到新版本的Foundry,请拉取更新的镜像版本。
从Docker Hub拉取新镜像:
consoledocker compose pull
重新创建运行中的容器:
consoledocker compose up --detach
停止运行中的容器:
consoledocker stop <容器ID>
拉取新镜像:
consoledocker pull felddy/foundryvtt:release
按照前面的运行说明启动容器。
此容器的镜像使用Foundry Virtual Tabletop的语义化版本及其关联的更新通道进行标记。建议大多数用户使用:release标签。
| 镜像标签 | 描述 |
|---|---|
felddy/foundryvtt:release | 发布通道的最新镜像。这些镜像被认为是稳定的且经过充分测试。大多数用户将使用此标签。latest标签始终指向与release相同的版本。 |
felddy/foundryvtt:beta | 测试版通道发布应该对所有用户稳定,但可能存在一些模块冲突或兼容性问题。仅建议愿意接受一些 minor 风险的用户更新到此版本。不建议在游戏会话即将开始前更新到此版本。请定期备份关键用户数据以防遇到任何问题。 |
felddy/foundryvtt:alpha | 阿尔法通道发布极有可能引入破坏性错误,会影响游戏体验。除非用于特定测试目的,否则不要安装此更新。阿尔法版本的目的是允许预览新功能,并帮助开发人员开始更新受更改影响的模块。如果选择为实时游戏更新到此版本,风险自负。安装此更新前请备份关键用户数据。 |
felddy/foundryvtt:0.8.9 | 确切版本。 |
felddy/foundryvtt:0.8 | 匹配主版本和次版本号的最新发布。 |
felddy/foundryvtt:latest | 参见release标签。为什么latest == release? |
有关所有支持标签的列表,请参见Docker Hub上的https://hub.docker.com/r/felddy/foundryvtt/tags%E3%80%82
| 挂载点 | 用途 |
|---|---|
/data | 配置、数据和日志存储。 |
必须设置以下三种环境变量组合之一,容器才能定位并安装Foundry Virtual Tabletop发行版。尽管可以一起指定所有变量,但它们按以下优先级顺序进行评估:
FOUNDRY_RELEASE_URL,或FOUNDRY_USERNAME和FOUNDRY_PASSWORD,或CONTAINER_CACHE凭据变量
| 名称 | 用途 |
|---|---|
FOUNDRY_PASSWORD | foundryvtt.com的账户密码。下载应用程序发行版所需。 |
FOUNDRY_USERNAME | foundryvtt.com的账户用户名或电子邮件地址。下载应用程序发行版所需。 |
注意: FOUNDRY_USERNAME和FOUNDRY_PASSWORD也可以使用密钥而不是环境变量进行设置。
预签名URL变量
| 名称 | 用途 |
|---|---|
FOUNDRY_RELEASE_URL | 从用户个人资料生成的S3预签名URL。下载应用程序发行版所需。 |
预缓存发行版变量
可以下载发行版并将其放入缓存目录。发行版的名称必须为以下形式:foundryvtt-0.8.9.zip
| 名称 | 用途 |
|---|---|
CONTAINER_CACHE | 设置缓存Foundry发行版存档下载的路径,加快后续容器启动速度。路径应位于/data或容器中的另一个持久挂载点。例如:/data/container_cache |
| 名称 | 用途 | 默认值 |
|---|---|---|
CONTAINER_PATCHES | 设置一个shell脚本目录的路径,在Foundry安装后但启动前执行。路径应位于/data或容器中的另一个持久挂载点。例如:/data/container_patches。补丁文件按字典顺序执行。CONTAINER_PATCHES在CONTAINER_PATCH_URLS之后处理。 | |
CONTAINER_PATCH_URLS | 设置要在Foundry安装后但启动前执行的URL的空格分隔列表。补丁URL按指定顺序执行。CONTAINER_PATCH_URLS在CONTAINER_PATCHES之前处理。⚠️仅使用来自可信来源的补丁URL! | |
CONTAINER_PRESERVE_CONFIG | 容器通常在每次启动时生成新的options.json和admin.txt文件。设置为true可防止容器在这些文件存在时修改它们。如果它们不存在,将正常创建。 | false |
CONTAINER_PRESERVE_OWNER | 通常在启动时更改/data目录及其内容的所有权以匹配服务器。将此设置为正则表达式将排除任何匹配路径并保留其所有权。注意:这是对整个路径的匹配,而不是搜索。 这在你希望将卷挂载为/data内的只读卷时很有用(例如,包含资产的卷挂载在/data/Data/assets)。 | |
CONTAINER_VERBOSE | 设置为true以启用容器实用程序脚本的详细日志记录。 | false |
FOUNDRY_ADMIN_KEY | 启动时应用的管理员密码。如果省略,管理员密码将被清除。可使用密钥设置。 | |
FOUNDRY_AWS_CONFIG | 指向awsConfig.json的绝对或相对路径,或true表示使用AWS环境变量凭据评估。 | null |
FOUNDRY_DEMO_CONFIG | 演示模式允许你配置一个世界,该世界将按你选择的频率自动启动和重置。当世界重置时,它会被停用。世界的源数据使用提供的.zip文件恢复到原始状态,并自动安排下一次重置。参见:配置演示模式。 | |
FOUNDRY_GID | 守护进程运行的gid。 | foundry |
FOUNDRY_HOSTNAME | 用于替换主机的公共IP地址的自定义主机名,用于显示游戏会话的地址。这允许反向代理或DNS服务器修改公共地址。 | null |
FOUNDRY_LANGUAGE | 提供核心翻译文件的默认应用程序语言和模块。 | en.core |
FOUNDRY_LOCAL_HOSTNAME | 覆盖用于邀请链接的本地网络地址,与FOUNDRY_HOSTNAME选项的功能类似,后者配置外部地址。 | null |
FOUNDRY_LICENSE_KEY | 要安装的许可证密钥。例如:AAAA-BBBB-CCCC-DDDD-EEEE-FFFF。如果未设置,使用账户身份验证时将获取许可证密钥。如果账户关联多个许可证密钥,将随机选择一个。可以通过传入整数索引选择特定许可证,第一个许可证密钥为1。可使用密钥设置。 | |
FOUNDRY_MINIFY_STATIC_FILES | 设置为true以通过提供缩小的静态JavaScript和CSS文件来减少网络流量。建议大多数用户启用此设置,但模块开发人员可能希望禁用它。 | false |
FOUNDRY_PASSWORD_SALT | 应用于管理员密码的自定义盐字符串,而不是默认盐字符串。可使用密钥设置。 | null |
FOUNDRY_PROXY_PORT | 通知Foundry服务器软件在反向代理后面运行在其他端口上。这允许创建的游戏邀请链接包含正确的外部端口。 | null |
FOUNDRY_PROXY_SSL | 指示软件是否在使用SSL的反向代理后面运行。这允许邀请链接和A/V功能像Foundry服务器直接配置SSL一样工作。 | false |
FOUNDRY_ROUTE_PREFIX | 附加到基本主机名的字符串路径,用于从特定命名空间提供Foundry VTT内容。例如,将其设置为demo将导致从http://x.x.x.x:30000/demo/提供数据。 | null |
FOUNDRY_SSL_CERT | 指向SSL证书文件的绝对或相对路径,与sslKey选项一起使用以启用SSL和https连接。如果提供了这两个选项,服务器将自动开始使用HTTPS。 | null |
FOUNDRY_SSL_KEY | 指向SSL密钥文件的绝对或相对路径,与sslCert选项一起使用以启用SSL和https连接。如果提供了这两个选项,服务器将自动开始使用HTTPS。 | null |
FOUNDRY_UID | 守护进程运行的uid。 | foundry |
FOUNDRY_UPNP | 允许通用即插即用自动请求将Foundry VTT端口转发到本地网络地址。 | false |
FOUNDRY_UPNP_LEASE_DURATION | 设置UPnP租约持续时间,允许为不支持临时租约的路由器设置永久租约。要定义无限租约持续时间,将值设置为0。 | null |
FOUNDRY_VERSION | 要安装的Foundry Virtual Tabletop版本。 | 0.8.9 |
FOUNDRY_WORLD | 系统启动时要启动的世界。 | null |
TIMEZONE | 容器的TZ数据库名称 | UTC |
| 文件名 | 键 | 用途 |
|---|---|---|
config.json | foundry_admin_key | 覆盖FOUNDRY_ADMIN_KEY环境变量。 |
config.json | foundry_license_key | 覆盖FOUNDRY_LICENSE_KEY环境变量。 |
config.json | foundry_password | 覆盖FOUNDRY_PASSWORD环境变量。 |
config.json | foundry_password_salt | 覆盖FOUNDRY_PASSWORD_SALT环境变量。 |
config.json | foundry_username | 覆盖FOUNDRY_USERNAME环境变量。 |
使用此git仓库作为构建上下文在本地构建镜像:
consoledocker build \ --build-arg VERSION=0.8.9 \ --tag felddy/foundryvtt:0.8.9 \ https://github.com/felddy/foundryvtt-docker.git#develop
要创建与其他平台兼容的镜像,可以使用Docker的buildx功能:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务