Outline Server 配置参数详解
Outline Server v1.12.3 全配置面逐项详解:接入凭据、服务器级配置、访问密钥库与数据面配置、证书、指标采集、安装器级参数,文件与 API 双路径实测(2026-10-20)。
Outline Server 配置参数详解
定位:逐项讲清 Outline Server v1.12.3 在服务器上的全部配置面——接入凭据、服务器级配置、访问密钥库、数据面后端配置、证书、指标采集与安装器级参数,并给出每项参数的实测查看/修改方式。所有文件内容与命令输出均在 Ubuntu 22.04.5 LTS 实测环境逐字采集(2026-10-20),安装过程见《Ubuntu 22.04 安装 Outline Server 指南》。
一、环境信息
- 操作系统:Ubuntu 22.04.5 LTS(Jammy),x86_64
- 软件版本:Outline Server v1.12.3(官方安装脚本部署,
stable通道,2026-10-20 实测;服务端 API 自报版本"version":"1.12.3") - 实测端口:管理端口
15490(TCP),访问密钥端口15491(TCP+UDP) - 状态目录:
/opt/outline - 实测时点密钥规模:3 个访问密钥(id
0/1/3,含 1 个改名密钥) - 服务器对外地址:
10.0.0.2(实测环境 IP,生产环境为服务器公网 IP) - 溯源补充:安装器行为与参数取值均对官方
install_server.sh源码取证(2026-10-20)
二、前置条件
- 已按《Ubuntu 22.04 安装 Outline Server 指南》完成安装并确认服务健康(管理 API 可响应);
- 服务器本地 root 或 sudo shell;
- 准备好管理 API 访问要素(都在
/opt/outline/access.txt):
# 读取管理 API 凭据
cat /opt/outline/access.txt
实测回显:
certSha256:81780C5EA71D32AA05EF34D1B302BA3A5EE26F327CD787C337FFB23889A5FEBE
apiUrl:https://10.0.0.2:15490/nSSFAqF32yf3eH7IbaMHKg
💡 说明:上例为首次安装时点凭据;本文后续示例使用实测环境重装后的当前凭据(前缀
81XKB8WldZi-_V92KSKvsQ),读者以自己access.txt的值为准。apiUrl=https://<服务器地址>:<管理端口>/<秘密前缀>,调用管理 API 时必须附带服务器自签证书做校验(curl --cacert,详见《Outline Server 管理 API 使用详解》)。
三、参数查看与修改方式
Outline Server 的配置有两条查看/修改路径,本篇两条都讲,并以实测标明各自边界:
| 路径 | 覆盖范围 | 生效方式 | 适用 |
|---|---|---|---|
| 管理 API(推荐) | 服务器名称/对外地址/新密钥默认端口/流量上限/指标开关/密钥增删改 | 即时生效并持久化(实测:修改后立即读回新值,重启服务实例后仍保留,实测复验) | 一切常规运维修改 |
| 配置文件直查 | 全部落盘状态(含 API 不可见的只读字段如 serverId/createdTimestampMs) | 只读查看 | 巡检、备份、排障 |
⚠️ 注意:服务实例由官方安装器自动托管(自动重启、随系统自启、每小时自动检查更新)。修改配置请一律走管理 API:文件直改的生效条件与回写时机属受管运行时内部行为,官方未提供手工编辑文件的支持路径;直接改文件可能与管理 API 的持久化机制冲突。
四、参数总览
| 参数 | 所在位置 | 默认值 | 作用 | 查看/修改 |
|---|---|---|---|---|
apiUrl | /opt/outline/access.txt | 安装时生成 | 管理 API 地址(含秘密前缀) | cat 查看;重装时轮换(实测) |
certSha256 | /opt/outline/access.txt | 安装时生成 | 证书 SHA-256 指纹(Manager 证书固定) | cat / openssl x509 -fingerprint |
name | shadowbox_server_config.json | Outline Server | 服务器名称 | API GET /server / PUT /name(实测) |
hostname | shadowbox_server_config.json | 安装时 --hostname 或自动探测 | 对外服务地址(写入密钥链接) | API PUT /server/hostname-for-access-keys |
portForNewAccessKeys | shadowbox_server_config.json | 安装时 --keys-port | 新建密钥默认端口 | API PUT /server/port-for-new-access-keys |
serverId | shadowbox_server_config.json | 安装时生成(UUID) | 服务器唯一标识 | 文件查看(只读) |
metricsEnabled | shadowbox_server_config.json | false | 匿名指标上报开关 | API PUT /metrics/enabled(实测) |
createdTimestampMs | shadowbox_server_config.json | 安装时毫秒时间戳 | 服务器创建时间 | 文件查看(只读) |
accessKeys[] | shadowbox_config.json | 首个密钥安装时自动创建 | 访问密钥库(id/name/password/port/加密方法) | API /access-keys 系列 |
nextId | shadowbox_config.json | 递增 | 下一个可用密钥 ID | 文件查看(只读) |
keys[](cipher/id/port/secret) | outline-ss-server/config.yml | 由密钥库同步生成 | 数据面后端的实际生效密钥 | 文件查看(随 API 变更同步) |
| 证书/私钥 | `persisted-state/shadowbox-selfsigned.crt | .key` | 安装时生成(RSA-4096、100 年) | 管理 API TLS 与证书固定 |
| 指标采集配置 | persisted-state/prometheus/config.yml | 内置 | 内部指标链路 | 一般无需改动 |
--hostname | 安装器参数 | 自动探测公网 IP | 对外地址 | 安装时指定 |
--api-port | 安装器参数 | 随机高位端口 | 管理端口(TCP) | 安装时指定(与密钥端口必须不同,实测报错见 FAQ) |
--keys-port | 安装器参数 | 服务端分配 | 访问密钥端口(TCP+UDP) | 安装时指定 |
SB_IMAGE | 安装器环境变量 | quay.io/outline/shadowbox:stable | 部署通道/版本 | 安装时指定(stable/nightly/版本号) |
SB_DEFAULT_SERVER_NAME | 安装器环境变量 | Outline Server | 服务器默认名称 | 安装时指定(安装器源码取证) |
SHADOWBOX_DIR | 安装器环境变量 | /opt/outline | 状态目录 | 多实例时指定 |
ACCESS_CONFIG | 安装器环境变量 | <状态目录>/access.txt | 凭据文件路径 | 多实例时随状态目录变化(源码取证) |
五、核心参数分类详解
5.1 接入凭据(access.txt)
安装器把 Manager 接入凭据写入 /opt/outline/access.txt(另有同内容备份 access.txt.bak):
cat /opt/outline/access.txt
实测回显:
certSha256:81780C5EA71D32AA05EF34D1B302BA3A5EE26F327CD787C337FFB23889A5FEBE
apiUrl:https://10.0.0.2:15490/nSSFAqF32yf3eH7IbaMHKg
apiUrl:管理 API 完整地址。路径尾段(如nSSFAqF32yf3eH7IbaMHKg)是安装时由/dev/urandom取 16 字节随机数生成的秘密前缀(安装器源码head -c 16 /dev/urandom | safe_base64,2026-10-20 取证),等效于管理 API 的"口令"——泄露即等于管理权泄露,请勿外传该文件;certSha256:自签证书指纹,Manager 接入时做证书固定校验。与证书文件指纹一致(见 5.4 节 openssl 实测);- 轮换行为(实测):重跑安装脚本会重新生成秘密前缀与证书,
apiUrl/certSha256全部变化,Outline Manager 需重新接入;已建访问密钥保留(实测记录见安装指南 10.2 节)。
5.2 服务器级配置(shadowbox_server_config.json)
文件实测全文(本实测时点,已通过 API 改名为 outline-demo-server):
cat /opt/outline/persisted-state/shadowbox_server_config.json
实测回显:
{"portForNewAccessKeys":15491,"hostname":"10.0.0.2","serverId":"db7d0e08-70c8-47ec-a256-5be6c01e4219","metricsEnabled":false,"createdTimestampMs":1792508135464,"name":"outline-demo-server"}
逐项说明与修改方式:
| 字段 | 含义 | 修改方式(实测验证) |
|---|---|---|
name | 服务器名称,Manager 卡片与管理 API 显示用。默认 Outline Server | PUT /name,body {"name":"outline-demo-server"} → 204;GET /server 读回新值(实测)。重跑安装脚本会重置(实测) |
hostname | 对外服务地址(写入新密钥的 ss:// 链接)。来源:安装时 --hostname,缺省自动探测公网 IP | PUT /server/hostname-for-access-keys,body {"hostname":"outline.demo.example.com"} → 204(实测)。仅对新密钥生效:修改后既有密钥链接不变(实测);改回 10.0.0.2 实测正常 |
portForNewAccessKeys | 新建访问密钥的默认端口(TCP+UDP) | PUT /server/port-for-new-access-keys,body {"port":15492} → 204(实测)。仅对新密钥生效:修改后既有密钥仍在原端口监听(实测 ss -ltn 复核),新建密钥落到新端口且端口随即开始监听(实测) |
serverId | 服务器唯一标识(UUID),重装会重新生成(实测前后对比) | 只读 |
metricsEnabled | 匿名指标上报开关 | PUT /metrics/enabled,body {"metricsEnabled":true} → 204,GET /metrics/enabled 读回 true(实测;恢复为 false 实测正常) |
createdTimestampMs | 服务器创建时间(毫秒时间戳,本例 1792508135464 ≈ 2026-10-20) | 只读 |
文件字段与管理 API 字段的对应关系(GET /server 实测返回体):
curl --cacert /opt/outline/persisted-state/shadowbox-selfsigned.crt \
https://10.0.0.2:15490/81XKB8WldZi-_V92KSKvsQ/server
实测回显:
{"name":"outline-demo-server","serverId":"db7d0e08-70c8-47ec-a256-5be6c01e4219","metricsEnabled":false,"createdTimestampMs":1792508135464,"version":"1.12.3","portForNewAccessKeys":15491,"hostnameForAccessKeys":"10.0.0.2"}
💡 说明:API 视图比文件多两个字段——
version(实装版本,排查版本最直接)与hostnameForAccessKeys(对外地址的 API 命名);version只读。
5.3 访问密钥配置(shadowbox_config.json 与 outline-ss-server/config.yml)
密钥体系涉及两个落盘文件:密钥库(唯一事实源)与数据面后端配置(由密钥库同步生成,供 outline-ss-server 后端实际加载)。
密钥库实测全文:
cat /opt/outline/persisted-state/shadowbox_config.json
实测回显:
{"accessKeys":[{"id":"0","name":"","password":"TjDlqvxukYzNcvTPW4qtsV","port":15491,"encryptionMethod":"chacha20-ietf-poly1305"},{"id":"1","name":"office-test-key","password":"zmhZ2Fwh6qDo4eLXGvDnye","port":15491,"encryptionMethod":"chacha20-ietf-poly1305"},{"id":"3","name":"","password":"S3t6wbmWLcfJWAIDpiwqBI","port":15491,"encryptionMethod":"chacha20-ietf-poly1305"}],"nextId":4}
数据面后端配置实测全文(与密钥库逐密钥对应):
cat /opt/outline/persisted-state/outline-ss-server/config.yml
实测回显:
keys:
- cipher: chacha20-ietf-poly1305
id: '0'
port: 15491
secret: TjDlqvxukYzNcvTPW4qtsV
- cipher: chacha20-ietf-poly1305
id: '1'
port: 15491
secret: zmhZ2Fwh6qDo4eLXGvDnye
- cipher: chacha20-ietf-poly1305
id: '3'
port: 15491
secret: S3t6wbmWLcfJWAIDpiwqBI
字段逐项:
| 字段 | 含义 | 说明 |
|---|---|---|
id | 密钥唯一 ID(字符串) | 首个密钥为 0(安装器"Creating first user"自动创建);nextId 为下一个可用 ID(本例 4) |
name | 密钥名称 | PUT /access-keys/<id>/name 修改(实测改为 office-test-key → 204) |
password | 该密钥的 Shadowsocks 凭据(随机生成) | 泄露即等于该密钥可被任意使用;可在管理 API 的 accessUrl(ss:// 链接)中 base64 解码得到(实测解码 = chacha20-ietf-poly1305:TjDlqvxukYzNcvTPW4qtsV) |
port | 该密钥的服务端口 | 实测所有密钥共享同一端口(跟随安装时 --keys-port);改"新密钥默认端口"不影响旧密钥(实测) |
encryptionMethod | 加密方法 | 实测创建路径统一为 chacha20-ietf-poly1305(AEAD 强制策略,上游 README 2026-10-20 取证);管理 API 未暴露常规可选方法;密钥导入接口可指定 method 字段(源码取证),生产建议保持 chacha20-ietf-poly1305 |
cipher/secret(数据面) | 与密钥库 encryptionMethod/password 对应 | 两文件在各实测时点内容一致;密钥的增删改经管理 API 发生后二者保持同步(实测:API 建密钥 → 数据面端口随即监听) |
⚠️ 注意:
password/secret即代理凭据,本文示例为实测环境临时密钥(收工后实测环境整体销毁),生产环境请按密钥管理规范保管/opt/outline目录(建议chmod收紧至管理员可读,删除前先备份)。
5.4 证书与私钥(shadowbox-selfsigned.crt / .key)
管理 API 的 TLS 证书为安装器生成的自签证书(用途:管理端口 HTTPS + Manager 证书固定):
openssl x509 -in /opt/outline/persisted-state/shadowbox-selfsigned.crt \
-noout -subject -dates -fingerprint -sha256
实测回显:
subject=CN = 10.0.0.2
notBefore=Oct 20 14:47:00 2026 GMT
notAfter=Sep 26 21:47:00 2126 GMT
sha256 Fingerprint=81:78:0C:5E:A7:1D:32:AA:05:EF:34:D1:B3:02:BA:3A:5E:E2:6F:32:7C:D7:87:C3:37:FF:B2:38:89:A5:FE:BE
- CN = 对外地址(安装时
--hostname值,本例10.0.0.2); - 有效期 100 年(安装器源码
-days 36500,2026-10-20 取证),密钥为 RSA-4096(源码-newkey rsa:4096取证); sha256 Fingerprint与access.txt的certSha256一致(本例81780C...FEBE);- 轮换(实测):重跑安装脚本重新生成证书与私钥(指纹随之变化,见安装指南 10.2 节);私钥文件权限
-rw-------(仅 root 可读,实测ls -la)。
5.5 指标采集配置(prometheus/config.yml)
内置指标链路的采集配置(属受管运行时范畴,一般无需改动):
cat /opt/outline/persisted-state/prometheus/config.yml
实测回显(输出节选):
# sc:本机内部指标抓取(仅回环地址)
scrape_configs:
- job_name: shadowbox
scrape_interval: 30s
metrics_path: /metrics
static_configs:
- targets:
- '127.0.0.1:9090'
- job_name: restapi
static_configs:
- targets:
- '127.0.0.1:9091'
- job_name: ss
static_configs:
- targets:
- '127.0.0.1:9092'
💡 说明:三个内部指标端点(
9090/9091/9092)只绑定回环地址,不对外暴露。对外的指标查询一律走管理 API:按密钥流量GET /metrics/transfer、实验性服务器指标GET /experimental/server/metrics?since=(实测回显见《Outline Server 管理 API 使用详解》)。
5.6 安装器级参数(安装时决定,重装变更)
以下参数在执行 install_server.sh 时给定,安装后如需变更需重跑安装脚本(行为实测见安装指南 10.2 节):
| 参数 | 取值与默认 | 实测/取证 |
|---|---|---|
--hostname | 服务器对外地址;缺省自动探测公网 IP(探测源 icanhazip.com/ipinfo.io/ip/domains.google.com/checkip,源码取证) | 实测 --hostname 10.0.0.2;证书 CN、ss:// 链接、apiUrl 均随该值 |
--api-port | 管理端口(TCP),缺省随机高位端口 | 实测 15490;与 --keys-port 相同时报错 --api-port must be different from --keys-port(实测) |
--keys-port | 访问密钥端口(TCP+UDP) | 实测 15491;所有密钥默认共用该端口 |
SB_IMAGE | 部署通道/版本,默认 quay.io/outline/shadowbox:stable;可指定 nightly 或版本号(如 v1.12.3) | 源码取证:默认值在安装器第 484 行;指定自定义版本时自动更新检查间隔由每小时提升为 30 秒(源码注释,便于跟踪回退) |
SB_DEFAULT_SERVER_NAME | 服务器默认名称(如 "Outline server New York") | 源码取证(安装器头部注释) |
SHADOWBOX_DIR | 状态目录,默认 /opt/outline | 多实例时指定独立目录 |
ACCESS_CONFIG | 凭据文件路径,默认 <SHADOWBOX_DIR>/access.txt | 源码取证(安装器第 483 行) |
| 实例名变量 | 同机多实例时与 SHADOWBOX_DIR 一起指定(官方用法见安装器头部注释,示例见安装指南 6.2 节) | 源码取证 |
⚠️ 注意:安装器还会在生成服务实例启动配置时注入一组运行时环境变量(管理端口、秘密前缀、证书路径、指标上报地址、状态目录等),属受管运行时范畴,由安装器自动生成与消费,管理员无需也不应手工编辑。
六、场景化配置建议
场景 A:个人自用(最小暴露面)
- 管理端口保持默认随机或指定高位端口,云安全组仅放行自己的常用出口 IP;
- 服务器改名便于识别:
PUT /name; - 关闭匿名指标上报(保持默认
false,实测确认默认值为false); - 密钥即用即删:给设备生成独立密钥,设备退役即
DELETE /access-keys/<id>。
场景 B:小团队分发(10~50 人)
- 对外地址用域名(
PUT /server/hostname-for-access-keys指定;注意仅对新密钥生效,存量密钥需删除重建); - 为全体密钥设置默认流量上限:
PUT /server/access-key-data-limit(如 10GB),个别重度用户单独覆盖后按需解除(实测路径PUT/DELETE /access-keys/<id>/data-limit); - 定期用
GET /metrics/transfer查看各密钥用量(实测回显见管理 API 篇); - 密钥端口 UDP 与 TCP 都要在安全组放行(UDP 中继需要)。
场景 C:同机多套环境(测试/生产隔离)
- 用多实例参数安装第二实例(独立状态目录与端口对);
- 两实例凭据/密钥/证书完全独立,互不影响;
- 指定版本部署用
SB_IMAGE(版本锁定),注意自定义版本时自动更新间隔变为 30 秒(源码取证),测试环境如不希望频繁拉取可评估后使用。
七、常见问题(FAQ)
Q1:改了对外地址/端口后,旧密钥的连接信息没变?
设计行为(实测确认):PUT /server/hostname-for-access-keys 与 PUT /server/port-for-new-access-keys 只作用于之后新建的密钥,既有密钥保持原值并在原端口继续服务(实测旧密钥端口仍在监听)。需要存量密钥迁移时:记录旧密钥的 password → 删除旧密钥 → 用密钥导入接口按原凭据在新端口重建(接口见管理 API 篇)。
Q2:直接编辑 /opt/outline/persisted-state/ 下的 JSON/YAML 文件改配置行不行?
不建议。服务实例由官方安装器自动托管,文件直改的生效与回写时机不受支持,可能与管理 API 的持久化机制冲突;配置修改的官方支持路径是管理 API(本篇 5.2/5.3 各项均给出实测 API 修改方式)。文件仅作只读巡检与备份用途。
Q3:重跑安装脚本后,服务器名称和接入凭据怎么都变了?
实测行为(安装指南 10.2 节):重装会重置服务器级配置(名称回到默认 Outline Server)并重新生成秘密前缀与证书(apiUrl/certSha256 全变,Manager 需重新接入);访问密钥保留。变更前请先记录自定义配置。
Q4:metricsEnabled 打开后会上报什么?
匿名聚合指标(不含用户内容),用于官方服务质量统计;开关状态即时生效(实测 PUT /metrics/enabled 后 GET /metrics/enabled 立即读回)。默认关闭。
Q5:怎么确认当前实装版本?
管理 API 直接返回版本号:GET /server 的 "version":"1.12.3" 字段(本篇 5.2 节实测回显),比查文件更直接。
Q6:--api-port 与 --keys-port 能否相同?
不能。实测报错:
--api-port must be different from --keys-port
Sorry! Something went wrong. If you can't figure this out, please copy and paste all this output into the Outline Manager screen, and send it to us, to see if we can help you.
Full log: /tmp/outline_log25hUsg4jeg
八、参考链接
- 安装实测(本仓姊妹篇):《Ubuntu 22.04 安装 Outline Server 指南》
- 管理 API 详解(本仓姊妹篇):《Outline Server 管理 API 使用详解》
- 介绍与选型(本仓姊妹篇):《Outline Server 介绍与选型指南》
- 上游仓库:https://github.com/OutlineFoundation/outline-server
- v1.12.3 服务端源码:https://github.com/OutlineFoundation/outline-server/tree/server-v1.12.3/src/shadowbox
- 官方安装脚本:https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh