Outline Server 配置参数详解

Outline Server v1.12.3 全配置面逐项详解:接入凭据、服务器级配置、访问密钥库与数据面配置、证书、指标采集、安装器级参数,文件与 API 双路径实测(2026-10-20)。

Outline ServerVPN安全OutlineSS代理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)

二、前置条件

  1. 已按《Ubuntu 22.04 安装 Outline Server 指南》完成安装并确认服务健康(管理 API 可响应);
  2. 服务器本地 root 或 sudo shell;
  3. 准备好管理 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
nameshadowbox_server_config.jsonOutline Server服务器名称API GET /server / PUT /name(实测)
hostnameshadowbox_server_config.json安装时 --hostname 或自动探测对外服务地址(写入密钥链接)API PUT /server/hostname-for-access-keys
portForNewAccessKeysshadowbox_server_config.json安装时 --keys-port新建密钥默认端口API PUT /server/port-for-new-access-keys
serverIdshadowbox_server_config.json安装时生成(UUID)服务器唯一标识文件查看(只读)
metricsEnabledshadowbox_server_config.jsonfalse匿名指标上报开关API PUT /metrics/enabled(实测)
createdTimestampMsshadowbox_server_config.json安装时毫秒时间戳服务器创建时间文件查看(只读)
accessKeys[]shadowbox_config.json首个密钥安装时自动创建访问密钥库(id/name/password/port/加密方法)API /access-keys 系列
nextIdshadowbox_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 ServerPUT /name,body {"name":"outline-demo-server"} → 204;GET /server 读回新值(实测)。重跑安装脚本会重置(实测)
hostname对外服务地址(写入新密钥的 ss:// 链接)。来源:安装时 --hostname,缺省自动探测公网 IPPUT /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:个人自用(最小暴露面)

  1. 管理端口保持默认随机或指定高位端口,云安全组仅放行自己的常用出口 IP;
  2. 服务器改名便于识别:PUT /name;
  3. 关闭匿名指标上报(保持默认 false,实测确认默认值为 false);
  4. 密钥即用即删:给设备生成独立密钥,设备退役即 DELETE /access-keys/<id>。

场景 B:小团队分发(10~50 人)

  1. 对外地址用域名(PUT /server/hostname-for-access-keys 指定;注意仅对新密钥生效,存量密钥需删除重建);
  2. 为全体密钥设置默认流量上限:PUT /server/access-key-data-limit(如 10GB),个别重度用户单独覆盖后按需解除(实测路径 PUT/DELETE /access-keys/<id>/data-limit);
  3. 定期用 GET /metrics/transfer 查看各密钥用量(实测回显见管理 API 篇);
  4. 密钥端口 UDP 与 TCP 都要在安全组放行(UDP 中继需要)。

场景 C:同机多套环境(测试/生产隔离)

  1. 用多实例参数安装第二实例(独立状态目录与端口对);
  2. 两实例凭据/密钥/证书完全独立,互不影响;
  3. 指定版本部署用 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

八、参考链接