配置参考¶
本节是一份查询表。浏览标题,按需深入。真正涉及决策的两项设置各有专门的说明:数据库模式和预填充网络。
如果是常规安装,从代码仓库中的 docker-compose.yml 开始即可。想一次看到全部支持的变量,跳转到本节末尾的完整带注释 Compose 示例。
数据卷¶
| 数据卷 | 用途 | 说明 |
|---|---|---|
/data |
PostgreSQL 数据库、安全信息、状态与配置、主题、已缓存的图片 | 必需 |
/logs |
LANCache 访问日志 | 添加 :ro 可设为只读 |
/cache |
LANCache 缓存文件 | 添加 :ro 可只监控而不修改文件 |
/var/run/docker.sock |
Docker API 访问 | 可选。nginx 日志轮转以及 Steam/Epic/Battle.net/Riot/Xbox 预填充需要它 |
必需设置¶
| 变量 | 默认值 | 描述 |
|---|---|---|
PUID |
33(随附的 Compose 文件) |
应用运行所用的用户 ID。应与你的缓存和日志文件的所有者一致。 |
PGID |
33(随附的 Compose 文件) |
应用运行所用的组 ID。 |
TZ |
UTC |
日志时间戳所用的时区(例如 America/Chicago)。也接受 TimeZone 作为后备写法。 |
LanCache__LogPath |
- | 容器内 LANCache 访问日志的路径。 |
LanCache__CachePath |
- | 容器内 LANCache 缓存目录的路径。 |
该用哪个 PUID/PGID? 与你的缓存和日志文件所有者保持一致——用 ls -n /path/to/cache 就能看到。随附的 Compose 文件使用 33:33(www-data),适合大多数标准的 lancache 安装。Unraid 使用 99:100。如果运行原始镜像时没有设置 PUID 或 PGID,入口脚本会把缺少的那一个回退为 1000。请把它当作兜底值,而不是推荐值。
PostgreSQL¶
模式选择和完整的 Compose 示例见选择镜像与数据库模式。变量如下:
| 变量 | 默认值 | 描述 |
|---|---|---|
POSTGRES_MODE |
embedded |
embedded 或 external。 |
POSTGRES_USER |
lancache |
PostgreSQL 用户名。两种模式均适用。外部模式下,该角色必须是数据库属主或对数据库拥有 CREATE 权限,因为表结构会安装 citext 扩展,详见选择镜像与数据库模式。 |
POSTGRES_PASSWORD |
- | PostgreSQL 密码。内嵌模式下若未设置,UI 会显示设置页面。从配置错误页重置该密码需要至少 12 个字符,并使用三种字符类别。外部模式下必须设置(或在应用连接前通过 UI 后备表单输入);该路径接受服务器上已有的密码。 |
POSTGRES_HOST |
- | 仅外部模式。 Postgres 服务器的主机名或 IP。 |
POSTGRES_PORT |
5432 |
仅外部模式。 |
POSTGRES_DB |
lancache |
数据库名称。两种模式均适用。 |
安全¶
| 变量 | 默认值 | 描述 |
|---|---|---|
Security__EnableAuthentication |
true |
管理操作和 API 文档需要 API 密钥。仅在本地开发时关闭。 |
Security__GuestSessionDurationHours |
6 |
默认访客会话时长(也可在 UI 中配置)。 |
Security__RequireAuthForMetrics |
false |
/metrics 端点是否需要 API 密钥。管理 → 集成中的 UI 开关设置后会覆盖此值。 |
Security__AllowedOrigins |
(空) | 逗号分隔的 CORS 允许列表。为空表示仅允许同源访问(安全的默认值)。* 允许任意来源但不携带凭据;显式列表则允许所列来源并携带凭据。 |
Security__ApiKeyPath |
/data/security/api_key.txt |
覆盖管理员 API 密钥的读写文件路径。当你从 /data 之外绑定挂载密钥时很有用。 |
Security__KnownProxyNetworks |
(空) | 用于 X-Forwarded-For 的可信代理网络 CIDR 列表,逗号分隔(例如 172.16.0.0/12,10.0.0.0/8)。当 nginx、Traefik 或其他反向代理位于管理器前面时设置此项,客户端 IP 才能被正确报告。回环地址始终受信任。如果代理位于另一台主机或另一个容器上而此项留空,登录限流会把所有客户端都算在代理的地址上,此时一个人反复输错密码就会把其他所有人锁在门外一分钟。 |
Security__TrustAllProxies |
false |
无条件信任每一个上游代理。方便本地开发使用。切勿在暴露于公网的主机上启用——任何人都能伪造客户端 IP。 |
Security__ForceSecureCookies |
false |
告知管理器 TLS 在你的反向代理处终止。启用后,应用设置的每个 Cookie 都会带上 Secure 标志,并且应用会将该连接视为 HTTPS,这样 CSRF 防护的 Cookie 策略就不会再拒绝那些在它看来是通过纯 HTTP 到达的请求。请仅在应用前面的 HTTPS 确实可用之后再开启:若前面没有 TLS,浏览器将不再回传会话 Cookie,任何人都无法登录。同时设置 Security__KnownProxyNetworks 仍然值得,这样客户端 IP 和登录速率限制才会准确。 |
并非每项 /metrics 设置都有对应的环境变量。指标更新间隔、示例配置中使用的 Prometheus 抓取间隔,以及按游戏统计序列导出的游戏数量,都在管理 → 集成中设置。参见 Prometheus 指标。
访问级别¶
| 级别 | 可执行的操作 | 示例 |
|---|---|---|
| 主要 | 拥有此安装。唯一可以授予管理员、清空全部账户或轮换 API 密钥的账户。对其他所有账户隐藏,包括其会话。 | 清空账户、轮换密钥、提升管理员 |
| 管理员 | 与用户相同的应用访问,并可管理用户账户。不能查看或更改主要账户及其会话,也不能授予管理员。 | 清除缓存、处理日志、管理用户 |
| 用户 | 登录后使用应用。只能查看和管理非管理员账户。不能看到主要账户及其会话。 | 浏览下载、更改自己的设置 |
| 访客 | 只读视图。需要访客会话。 | 浏览下载、统计、事件、客户端数据 |
要在不分享账户的情况下让别人获得只读访问权限,请在用户页面确认访客登录处于未锁定状态,访客随后在登录界面点击访客模式即可。会话时长等其他默认值在访客默认设置中。每个页面和每项操作都需要已登录账户或一个访客会话,只有两个例外:除非你设置 Security__RequireAuthForMetrics=true,否则 /metrics 是公开的;/health 存活探针则始终会应答。登录和首次运行设置端点出于必要而公开。
预填充设置¶
预填充会为本表中几乎所有内容自动检测出合适的值。使用前需要了解三点:
- 把
Prefill__LancacheIp设置为你缓存服务器的 IP,预填充就不再依赖 DNS。 这一点对 Battle.net 尤为重要,它的 CDN 域名经常不在 lancache DNS 中,可能导致预填充挂起。 - 不设置的话,管理器会自动检测你的缓存。它会对几个候选地址做一次快速的健康检查,只会使用真正像 lancache 一样应答的地址。
- 只有在自动检测出错时才需要用到其他变量。决策表见网络设置。
| 变量 | 默认值 | 描述 |
|---|---|---|
Prefill__LancacheIp |
(未设置) | 你缓存服务器(保存缓存文件的 HTTP 服务器,端口 80)的 IP 或主机名。会作为 LANCACHE_IP 转发给守护进程;随后守护进程使用伪造的 Host: 头直接连接,跳过 CDN 流量的 DNS 查询。最可靠的覆盖项——只要你的 DNS 不是标准的 lancache-dns,就应该设置它。 |
Prefill__LancacheDnsIp |
auto |
你DNS 服务器(lancache-dns、AdGuard、Pi-hole——端口 53)的 IP。会写入预填充容器的 /etc/resolv.conf,让守护进程用它解析 CDN 主机名。仅在 bridge 模式下使用——LANCache Manager 只会在 bridge 模式的预填充容器上设置它;host 模式下容器使用主机自身的 DNS。auto 会复用检测到的 lancache-dns 容器的 IP。 |
Prefill__NetworkMode |
auto |
预填充容器的 Docker 网络模式。接受 host、bridge 或某个 Docker 网络名称。auto 会根据你的 lancache-dns 容器推断模式。 |
Prefill__SteamDockerImage |
ghcr.io/regix1/steam-prefill-daemon:latest |
Steam 预填充容器所用的 Docker 镜像。 |
Prefill__EpicDockerImage |
ghcr.io/regix1/epic-prefill-daemon:latest |
Epic 预填充容器所用的 Docker 镜像。 |
Prefill__BattlenetDockerImage |
ghcr.io/regix1/battlenet-prefill-daemon:latest |
Battle.net 预填充容器所用的 Docker 镜像。 |
Prefill__RiotDockerImage |
ghcr.io/regix1/riot-prefill-daemon:latest |
Riot 预填充容器所用的 Docker 镜像。 |
Prefill__XboxDockerImage |
ghcr.io/regix1/xbox-prefill-daemon:latest |
Xbox 预填充容器所用的 Docker 镜像。 |
Prefill__SessionTimeoutMinutes |
120 |
非持久管理员预填充会话的总生命周期。访客会话和持久会话使用各自独立的限制。 |
Prefill__StallTimeoutSeconds |
180 |
高级设置。非持久会话被判定为停滞前的无进展时长。计划预填充使用自己独立的 30 分钟超时。 |
Prefill__AbandonedLoginTimeoutSeconds |
900 |
高级设置。预填充登录可以在浏览器中等待的秒数,超时后该会话会被清理。 |
Prefill__DaemonBasePath |
/data/prefill |
存储预填充会话状态的容器内路径。 |
Prefill__HostDataPath |
auto |
映射到管理器 /data 数据卷的主机路径。从管理器的挂载配置中检测;仅在检测失败时(不常见的平台、自定义数据卷驱动)才需要显式设置。 |
Prefill__UseTcp |
auto |
使用 TCP 而非 Unix 域套接字与守护进程通信。auto 在 Windows 上解析为 true,在 Linux 上为 false。Linux 用户只有在想强制使用 TCP 模式时才需要设置此项。 |
Prefill__TcpPort |
45555 |
守护进程在其容器内监听的 TCP 端口。仅用于 TCP 模式——Windows 默认如此,Linux 仅在 Prefill__UseTcp=true 时如此。 |
Prefill__HostTcpPort |
(随机空闲端口) | 守护进程容器在主机上发布的 TCP 端口。仅 TCP 模式。 |
Prefill__TcpHost |
127.0.0.1 |
守护进程绑定、管理器通过 TCP 连接的主机。仅 TCP 模式。 |
Note
TCP 模式是平台分界线。 在 Windows 上,预填充容器通过 TCP 通信,因为 Windows 不向 Docker 暴露 Unix 域套接字。在 Linux 上,预填充默认使用 Unix 域套接字——除非你设置 Prefill__UseTcp=true,否则上面四个 TCP 变量都会被忽略。标准的 Linux 安装可以完全跳过 TCP 相关的行。
路径与数据源¶
| 变量 | 默认值 | 描述 |
|---|---|---|
LanCache__EnvFilePath |
(自动) | lancache .env 文件的路径(用于读取 CACHE_DISK_SIZE)。未设置时会在常见位置搜索。 |
LanCache__AutoDiscoverDatasources |
false |
从 /cache 和 /logs 下匹配的子目录自动检测数据源,最多向下三层。 |
如果你运行多个缓存实例,或者把不同服务分散在多个驱动器上,请参见多数据源。
Nginx 日志轮转¶
| 变量 | 默认值 | 描述 |
|---|---|---|
NginxLogRotation__Enabled |
true |
通知 nginx 在应用轮转日志后重新打开日志文件。需要 Docker 套接字。 |
NginxLogRotation__ContainerName |
(空 = 自动检测) | LANCache 容器名称。留空(或设为 auto)时,应用会查找名称中包含 "lancache" 的容器。 |
NginxLogRotation__ScheduleHours |
24 |
检查是否需要轮转的频率。 |
API 与高级设置¶
| 变量 | 默认值 | 描述 |
|---|---|---|
ApiOptions__MaxClientsPerRequest |
1000 |
单次统计请求最多返回的客户端数量。 |
ApiOptions__DefaultClientsLimit |
100 |
未指定限制时的默认客户端数量。 |
ASPNETCORE_URLS |
http://+:80 |
内部端口绑定。除非你清楚为什么要改,否则不要改动。 |
ConnectionStrings__DefaultConnection |
(自动) | 完整的 PostgreSQL 连接字符串覆盖项。面向单个 POSTGRES_* 变量无法满足的复杂配置的高级用户。 |
CacheSnapshots__RetentionDays |
90 |
缓存快照的保留时长。更早的快照会被自动删除。 |
CacheSnapshots__IntervalMinutes |
60 |
高级设置。记录一次缓存大小快照的频率。 |
完整带注释的 Compose 示例¶
想要一份列出全部内容的文件?下面这个例子是一份完整、可直接使用的 Compose 文件。生效的几行与快速开始一致;每一项可选设置都已列出但被注释掉,并注明了默认值和适用场景,因此可以放心复制使用。
完整带注释的 Compose 示例——全部支持的变量
services:
lancache-manager:
image: ghcr.io/regix1/lancache-manager:latest
container_name: lancache-manager
restart: unless-stopped
ports:
- "8080:80"
volumes:
- ./data:/data # 数据库、API 密钥、主题、预填充状态
- /mnt/lancache/logs:/logs:ro # LANCache 访问日志
- /mnt/lancache/cache:/cache:ro # 去掉 :ro 可允许清除缓存和移除游戏
- /var/run/docker.sock:/var/run/docker.sock # 可选:预填充和 nginx 日志轮转需要
environment:
# --- 必需(与快速开始相同) ---
- PUID=33 # 应用运行所用的用户 ID;33 = 随附 Compose 文件的值(www-data)。Unraid:99
- PGID=33 # 组 ID;33 = 随附 Compose 文件的值。Unraid:100
- TZ=America/Chicago # IANA 时区;默认 UTC
- LanCache__LogPath=/logs/access.log # 容器内的访问日志
- LanCache__CachePath=/cache # 容器内的缓存目录
# --- PostgreSQL(默认以内嵌 Postgres 运行,无需额外设置) ---
# - POSTGRES_MODE=embedded # embedded(默认)或 external;精简镜像仅支持 external
# - POSTGRES_USER=lancache # 默认 lancache
# - POSTGRES_PASSWORD= # 密钥;留空则首次运行页面会要求输入
# 仅外部模式:
# - POSTGRES_HOST=lancache-db
# - POSTGRES_PORT=5432
# - POSTGRES_DB=lancache
# --- 安全 ---
# - Security__EnableAuthentication=true # false 会关闭全部认证;仅限本地开发
# - Security__RequireAuthForMetrics=false # true = /metrics 需要 Bearer 令牌
# - Security__GuestSessionDurationHours=6
# - Security__AllowedOrigins= # CORS 来源列表,逗号分隔;为空 = 仅同源,* = 任意来源(不携带凭据)
# - Security__ForceSecureCookies=false # 在 TLS 终止型代理之后运行时设为 true
# - Security__KnownProxyNetworks= # 可信代理的 CIDR 列表,逗号分隔,例如 172.16.0.0/12
# - Security__TrustAllProxies=false # 暴露于公网的主机上永远不要设为 true
# - Security__ApiKeyPath=/data/security/api_key.txt
# --- 预填充(自动检测;仅在检测失败时才需要设置这些) ---
# - Prefill__LancacheIp=192.168.1.10 # 缓存服务器 IP;最可靠的覆盖项
# - Prefill__NetworkMode=auto # host、bridge、某个 Docker 网络名称,或 auto
# - Prefill__LancacheDnsIp=auto # DNS 服务器 IP;仅 bridge 模式
# - Prefill__SteamDockerImage=ghcr.io/regix1/steam-prefill-daemon:latest
# - Prefill__EpicDockerImage=ghcr.io/regix1/epic-prefill-daemon:latest
# - Prefill__BattlenetDockerImage=ghcr.io/regix1/battlenet-prefill-daemon:latest
# - Prefill__RiotDockerImage=ghcr.io/regix1/riot-prefill-daemon:latest
# - Prefill__XboxDockerImage=ghcr.io/regix1/xbox-prefill-daemon:latest
# - Prefill__SessionTimeoutMinutes=120 # 非持久管理员会话的生命周期
# - Prefill__StallTimeoutSeconds=180 # 高级设置:非持久会话的停滞超时
# - Prefill__AbandonedLoginTimeoutSeconds=900 # 高级设置:清理无人完成的登录
# - Prefill__DaemonBasePath=/data/prefill # 必须位于 /data 之下
# - Prefill__HostDataPath=auto # /data 对应的主机路径;仅检测失败时设置
# - Prefill__UseTcp=auto # auto = Windows 用 TCP,Linux 用 Unix 套接字
# - Prefill__TcpPort=45555 # 仅 TCP 模式
# - Prefill__HostTcpPort= # 仅 TCP 模式;留空会随机选择一个空闲端口
# - Prefill__TcpHost=127.0.0.1 # 仅 TCP 模式
# --- Nginx 日志轮转(需要挂载 docker.sock) ---
# - NginxLogRotation__Enabled=true
# - NginxLogRotation__ContainerName= # 留空或设为 "auto" 会查找 "lancache" 容器
# - NginxLogRotation__ScheduleHours=24
# --- API、优化、缓存快照 ---
# - ApiOptions__MaxClientsPerRequest=1000
# - ApiOptions__DefaultClientsLimit=100
# - CacheSnapshots__RetentionDays=90 # 缓存大小历史保留时长
# - CacheSnapshots__IntervalMinutes=60 # 高级设置:记录快照的频率
# - ASPNETCORE_URLS=http://+:80 # 内部绑定;保持默认即可
# --- 路径与数据源 ---
# - LanCache__EnvFilePath=/lancache/.env # 未设置 = 自动搜索常见位置
# - LanCache__AutoDiscoverDatasources=false # 扫描 /cache 和 /logs 下的匹配子目录,最多三层
# 多数据源会替代上面的 LogPath/CachePath。保持编号连续,
# 并按同样的方式添加更多:__2__、__3__……
# - LanCache__DataSources__0__Name=Default
# - LanCache__DataSources__0__CachePath=/cache
# - LanCache__DataSources__0__LogPath=/logs
# - LanCache__DataSources__0__Enabled=true
# - LanCache__DataSources__1__Name=Steam
# - LanCache__DataSources__1__CachePath=/steam-cache
# - LanCache__DataSources__1__LogPath=/steam-logs
# - LanCache__DataSources__1__Enabled=true
# --- 高级用户 ---
# - ConnectionStrings__DefaultConnection=Host=/var/run/postgresql;Database=lancache;Username=lancache;Maximum Pool Size=20;Minimum Pool Size=2 # 基础连接字符串;你同时设置的 POSTGRES_* 值会覆盖其中的用户/密码/主机/端口/数据库字段;若内嵌了密码则属于密钥
# - Logging__LogLevel__LancacheManager.Infrastructure.Platform=Debug # 任意日志分类;取值 Trace..None
从 1.10.3 升级? 新增了四个变量,全部可选:Prefill__XboxDockerImage(Xbox 成为第五个预填充平台)、高级选项 Prefill__StallTimeoutSeconds 和 Prefill__AbandonedLoginTimeoutSeconds,以及按数据源设置的 LanCache__DataSources__<n>__SchemeOverride,供日志文件名让自动检测失效的裸机安装使用。没有变量被重命名或移除,所以现有的 Compose 文件可以照常使用。一处清理:Security__MaxAdminDevices 是一个旧的无效设置,当前代码不会读取它——可以删除。