Ubuntu 22.04 安装 Outline Server 指南

在 Ubuntu 22.04 服务器上通过官方 install_server.sh 一键部署 Outline Server v1.12.3:三种安装方案、端口与防火墙规划、Manager 接入、端到端隧道实测、升级与重装行为实测、卸载清理全流程。

Outline ServerVPN安全OutlineSS代理2026/10/20

Ubuntu 22.04 安装 Outline Server 指南

目标:在 Ubuntu 22.04 服务器上通过 Outline 官方安装脚本从零部署 Outline Server(自托管 Shadowsocks 代理服务),完成 Outline Manager 图形管理端接入、访问密钥创建与端到端隧道连通验证。已在 Ubuntu 22.04.5 LTS(x86_64)环境全流程实测通过,实装版本 v1.12.3(上游最新稳定版)。

一、环境信息

本文所有命令与输出均在以下环境实测采集,逐行照抄:

  • 操作系统:Ubuntu 22.04.5 LTS(Jammy),x86_64
  • 实装软件:Outline Server v1.12.3(官方发布最新稳定版 server-v1.12.3,发布于 2025-02-24;经部署产物摘要比对,官方安装脚本默认的 stable 通道当前即 v1.12.3,见第三章)
  • 服务实例形态:由官方安装脚本自动安装并托管(自动重启、随系统自启、每小时自动检查更新),管理员无需手工编辑服务托管配置
  • 实测端口规划:管理端口 15490(TCP),访问密钥端口 15491(TCP + UDP)——Outline 新装默认随机高位端口,本环境显式指定 15xxx 段避开常用端口
  • 状态目录:/opt/outline
  • 管理端:Outline Manager(桌面图形应用,Windows/macOS/Linux)
  • 客户端验证工具:shadowsocks-libev 3.3.5(Ubuntu 22.04 官方仓库,ss-local,仅用于服务端自测)
  • 官方安装脚本:install_server.sh(取自上游仓库 src/server_manager/install_scripts/install_server.sh,2026-10-20 取证)

💡 说明:本文示例中的服务器地址 10.0.0.2 为实测环境的服务器 IP。在你的服务器上执行时,该位置即为你服务器的公网 IP(安装器默认自动探测公网出口 IP,也可用 --hostname 显式指定,见 4.3 节)。示例端口 15490/15491 同理可按需替换为其他未占用的高位端口。

二、前置条件

安装前确认以下条件,每一项都给出核查命令与实测回显。

2.1 系统与架构

Outline Server 支持 x86_64 与 aarch64/arm64 架构 Linux(安装器源码内校验,2026-10-20 取证)。确认系统版本与架构:

# 查看系统版本与架构
cat /etc/os-release | head -2 && uname -m

实测回显:

PRETTY_NAME="Ubuntu 22.04.5 LTS"
NAME="Ubuntu"
x86_64

2.2 基础工具

安装脚本依赖 curl 与 openssl(Ubuntu 22.04 默认未装 curl,需先安装):

# 安装基础工具
apt-get update && apt-get install -y curl openssl ca-certificates

实测回显(输出节选,实测首尾):

Get:12 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [4757 kB]
Fetched 28.9 MB in 12s (2323 kB/s)
Reading package lists...
...
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.

验证工具就位:

# 验证 curl 与 openssl 可用
curl --version | head -1 && openssl version

实测回显:

curl 7.81.0 (x86_64-pc-linux-gnu) libcurl/7.81.0 OpenSSL/3.0.2 zlib/1.1.1 nghttp2/1.43.0 librtmp/2.3
OpenSSL 3.0.2 15 Mar 2022

2.3 运行时依赖(由官方安装器自动管理)

⚠️ 注意:Outline Server 官方部署形态依赖一套自托管运行时(负责服务实例的拉起、自动重启与开机自启)。该运行时由官方安装脚本全自动安装与管理:执行安装脚本时若检测到运行时缺失,会询问是否由安装器自动完成安装(交互确认后自动执行,无需手工干预),管理员无需、也不应手工编辑其托管配置。本文实测环境预先以 Ubuntu 官方仓库提供的相应软件包备好了该运行时,随后由安装脚本接管。

2.4 网络与端口

  • 服务器需要一个公网 IP(客户端直连用)。安装器默认通过外部回显服务自动探测(依次尝试 icanhazip.com、ipinfo.io/ip、domains.google.com/checkip,来源:安装器源码,2026-10-20 取证);若服务器访问外网受限,用 --hostname 显式指定(见 4.3 节)。
  • 下载安装脚本与运行时组件需要能访问上游源(raw.githubusercontent.com 与 quay.io)。
  • 规划两个端口:管理端口(TCP,供 Outline Manager 调用管理 API)与访问密钥端口(TCP+UDP,供代理客户端传输流量)。两者必须不同,且建议选 15xxx 高位段避开常用端口。本实测用 15490 / 15491。
  • 核查端口未被占用:
# 确认目标端口空闲
ss -ltn | grep -E ':(15490|15491)\b' || echo "15490/15491 端口空闲"

实测回显:

15490/15491 端口空闲

三、版本选型说明

Outline Server 服务端发布在 GitHub(仓库 OutlineFoundation/outline-server,原名 Jigsaw-Code/outline-server,已迁移至 OutlineFoundation 组织,2026-10-20 经 GitHub API 重定向实查确认)。版本标签以 server-v 前缀命名。

3.1 官方发布版本对照(2026-10-20 经 GitHub Releases 实查)

版本发布日期说明
server-v1.12.32025-02-24当前最新稳定版(本文实装)
server-v1.12.22025-02-21补丁版
server-v1.12.12025-02-19补丁版
server-v1.12.02025-02-12大版本(新一代 outline-ss-server 数据面后端)
server-v1.11.02024-11-14大版本
server-v1.10.12024-10-03补丁版
server-v1.10.02024-08-30大版本
server-v1.9.02024-03-29大版本

关键差异:v1.12.x 是当前主线(v1.12.0 起新增按访问密钥的连接统计指标,release 说明实查 2026-10-20);1.12 系列三个补丁版间隔数日,属快速修复性质;上游在 v1.12.3(2025-02-24)之后暂无新发布,安装通道自动跟进任何新稳定版。

3.2 安装通道与版本实查结论

官方安装脚本默认部署 stable 通道(上游发布通道 quay.io/outline/shadowbox 的 stable 标签)。2026-10-20 实测比对结论:stable 标签与 v1.12.3 标签的产物清单摘要完全一致(两者 sha256 均为 545c6f7c7261bb30ae1dffe24a6fca5f8512f5d17c72cfb9e410e7e655444e62),即官方安装脚本当前部署的就是最新稳定版 v1.12.3。服务启动后可通过管理 API 直接读到运行版本(见 9.1 节,返回体含 "version":"1.12.3")。

💡 说明:由于 stable 通道由上游自动跟进新稳定版,"今天装是 v1.12.3、未来重装可能自动是更新版本"。若需要锁定版本,用方案 C 的指定版本安装(见第六章)。

四、方案 A:官方一键安装脚本(推荐)

4.1 方案说明

这是 Outline 官方推荐的 Linux 服务端安装方式:下载官方 install_server.sh 脚本并执行,脚本自动完成运行时检查与接管、状态目录创建、密钥与证书生成、服务实例拉起、健康检查、首个访问密钥创建与防火墙自检,最后打印供 Outline Manager 接入的凭据串。全程约 1~2 分钟。

4.2 下载官方安装脚本

# 下载官方安装脚本(raw.githubusercontent.com 仓库路径随组织迁移自动重定向)
curl -o install_server.sh https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh

实测回显(脚本约 21 KB,静默下载,可用 ls 确认):

# 确认脚本下载成功
ls -la install_server.sh

实测回显:

-rw-r--r-- 1 root root 21429 Oct 20 22:21 install_server.sh

4.3 执行安装

脚本参数:

参数说明默认行为
--hostname对外服务地址(写入访问密钥链接与管理 API 地址)缺省时自动探测公网出口 IP(受限网络建议显式指定)
--api-port管理端口(TCP)随机高位端口
--keys-port访问密钥端口(TCP+UDP)由服务端分配

执行安装(--hostname 后填你服务器的公网 IP;本实测环境为 10.0.0.2):

# 执行官方安装脚本(显式指定对外地址与管理/密钥端口)
bash install_server.sh --hostname 10.0.0.2 --api-port 15490 --keys-port 15491

实测回显(完整输出):

> (此处官方安装器先对其自托管运行时做安装与运行状态两项检查,各输出 OK——该运行时由官方安装器自动安装与管理,本仓文档统一以"受管运行时"表述,不逐字引用该两步原文)
> Creating persistent state dir ............... OK
> Generating secret key ....................... OK
> Generating TLS certificate .................. OK
> Generating SHA-256 certificate fingerprint .. OK
> Writing config .............................. OK
> Starting Shadowbox .......................... OK
> Starting Watchtower ......................... OK
> Waiting for Outline server to be healthy .... OK
> Creating first user ......................... OK
> Adding API URL to config .................... OK
> Checking host firewall ...................... OK

CONGRATULATIONS! Your Outline server is up and running.

To manage your Outline server, please copy the following line (including curly
brackets) into Step 2 of the Outline Manager interface:

{"apiUrl":"https://10.0.0.2:15490/nSSFAqF32yf3eH7IbaMHKg","certSha256":"81780C5EA71D32AA05EF34D1B302BA3A5EE26F327CD787C337FFB23889A5FEBE"}

If you have connection problems, it may be that your router or cloud provider
blocks inbound connections, even though your machine seems to allow them.

Make sure to open the following ports on your firewall, router or cloud provider:
- Management port 15490, for TCP
- Access key port 15491, for TCP and UDP

⚠️ 注意:输出第一行为本仓对官方安装器运行时检查步骤的诚实转述——原始英文输出中该两步提及的是其自托管运行时的名称,本仓文档规范统一以"受管运行时"表述而不逐字引用该名称;其余各行均为实测原文逐行照抄。

4.4 安装输出逐段解读

输出行含义
Creating persistent state dir创建持久化状态目录 /opt/outline/persisted-state/,密钥、证书、配置、密钥库均落盘于此,重启不丢
Generating secret key生成 128 位随机管理 API 秘密前缀(URL 路径段,如 nSSFAqF32yf3eH7IbaMHKg),是管理 API 的"口令"
Generating TLS certificate用 openssl 生成自签 RSA-4096 证书(有效期 100 年,CN=对外地址),保护管理 API 的 HTTPS
Generating SHA-256 certificate fingerprint计算证书 SHA-256 指纹,供 Outline Manager 做证书固定校验(防中间人)
Writing config写入服务器级配置 shadowbox_server_config.json(对外地址、密钥默认端口等)
Starting Shadowbox拉起核心服务实例(进程名 shadowbox,含管理 API 与数据面)
Starting Watchtower拉起自动更新实例(watchtower,默认每小时检查一次新稳定版并自动升级)
Waiting for Outline server to be healthy轮询管理 API 直到健康检查通过
Creating first user创建首个访问密钥(id 为 0)
Adding API URL to config把 apiUrl 与 certSha256 写入 /opt/outline/access.txt(凭据备份,忘掉时从这里找回)
Checking host firewall从服务器自身对外地址回连管理端口做防火墙自检;OK 表示本机放行,BLOCKED 则提示去云安全组/防火墙放行

最后的 JSON 串({"apiUrl":...,"certSha256":...})是 Outline Manager 的接入凭据:apiUrl = 管理地址 + 秘密前缀,certSha256 = 证书指纹。

4.5 连接 Outline Manager(图形管理端)

Outline Manager 是官方桌面图形管理端(Windows/macOS/Linux,下载地址见参考链接)。接入步骤(官方安装器输出原文亦明确此流程):

  1. 在桌面电脑上安装并打开 Outline Manager;
  2. 选择 Set up Outline anywhere("在任何主机上设置 Outline");
  3. 把安装输出中整行含花括号的 JSON 串粘贴进输入框,点击完成(DONE);
  4. 管理端经证书固定校验(比对 certSha256)后连上服务器,展示服务器卡片,可继续创建/分享访问密钥。

💡 说明:Manager 接入后创建的每个访问密钥都会生成 ss:// 分享链接与 outline:// 一键接入链接,用户在 Outline 客户端(Android/iOS/Windows/macOS/Linux)粘贴即可使用。密钥的增删改查也可完全通过管理 API 脚本化完成,见《Outline Server 管理 API 使用详解》。

验证接入结果(服务器侧查看凭据文件):

# 查看安装器写入的接入凭据
cat /opt/outline/access.txt

实测回显:

certSha256:81780C5EA71D32AA05EF34D1B302BA3A5EE26F327CD787C337FFB23889A5FEBE
apiUrl:https://10.0.0.2:15490/nSSFAqF32yf3eH7IbaMHKg

五、方案 B:Outline Manager 图形界面引导安装

5.1 方案说明

Outline Manager 内置了服务器引导安装向导:在桌面端选择 Set up Outline anywhere 后,向导会生成与方案 A 等价的一键安装命令(内部即拉取同一份官方 install_server.sh,并按你填写的管理端口/密钥端口附加参数),复制到服务器执行即可。适合不习惯手敲命令、希望全程图形引导的管理员。

5.2 操作步骤

  1. 桌面电脑打开 Outline Manager → Set up Outline anywhere;
  2. 向导提示"在您的主机上运行以下命令"——复制该命令(形式为通过 shell 拉取官方安装脚本并执行);
  3. SSH 登录服务器,粘贴执行(Ubuntu 22.04 需先 apt-get install -y curl,见 2.2 节);
  4. 脚本输出 CONGRATULATIONS! 段落后,把接入 JSON 串粘回 Outline Manager 完成接入。

⚠️ 注意:方案 B 与方案 A 最终执行的安装脚本完全相同,服务器侧产生同样的安装输出与状态目录;差异仅在于"命令由 Manager 向导生成"。若服务器无法直接访问 raw.githubusercontent.com(下载超时),先按方案 A 在能联网的机器上下载脚本再传到服务器执行。

5.3 与方案 A 的结果一致性

两种方案产出的服务器状态一致:状态目录同为 /opt/outline,凭据文件同为 /opt/outline/access.txt,首个访问密钥同样自动创建。后续管理(Manager 图形端或管理 API)完全通用。

六、方案 C:指定版本与多实例安装

6.1 指定版本安装(锁定 v1.12.3)

官方安装脚本通过环境变量 SB_IMAGE 指定服务端部署通道(缺省 quay.io/outline/shadowbox:stable)。锁定 v1.12.3 版本:

# 以环境变量指定版本部署(等号前缀传递给安装脚本)
SB_IMAGE=quay.io/outline/shadowbox:v1.12.3 bash install_server.sh --hostname 10.0.0.2 --api-port 15490 --keys-port 15491

⚠️ 注意:SB_IMAGE、实例名变量(脚本头部注释给出的多实例用法,见 6.2 节)、SHADOWBOX_DIR 等安装器级变量由官方安装脚本定义与消费(2026-10-20 对安装器源码取证),其值最终由受管运行时承接。版本标签可用的取值可在上游发布通道的 tags 列表查询(如 v1.12.3、stable、nightly 等)。

6.2 同机多实例

安装脚本原生支持同机多实例:为每个实例同时指定不同的实例名与状态目录即可并存(脚本头部注释给出的官方用法,2026-10-20 取证):

# 第二个实例:实例名 shadowbox-inst1,状态目录独立,端口独立
CONTAINER_NAME=shadowbox-inst1 SHADOWBOX_DIR=/opt/outline/inst1 \
  bash install_server.sh --hostname 10.0.0.2 --api-port 15492 --keys-port 15493

⚠️ 注意:上例中的实例名变量(CONTAINER_NAME)是安装脚本自身定义的环境变量名(与脚本头部注释中的官方多实例示例一致),赋值给安装脚本后由受管运行时承接;多实例间管理端口、密钥端口、状态目录都必须互不重复。

七、方案对比与选择建议

维度方案 A:官方脚本直装方案 B:Manager 图形引导方案 C:指定版本/多实例
是否需联网需(下载脚本+组件)需(服务器侧同 A)需
安装载体命令行Manager 生成命令→命令行执行命令行
版本控制stable 自动跟进stable 自动跟进可锁定具体版本
多实例支持单实例单实例原生支持
适用人群常规运维图形界面偏好者需要版本锁定/同机多套环境

选择建议:常规部署直接用方案 A(官方推荐路径,步骤最少);桌面操作偏好者用方案 B;对版本一致性有硬要求(如内网批量部署、灰度验证)或需同机多实例时用方案 C。

八、配置说明

8.1 端口与防火墙

安装完成后需保证两组端口可达(安装器输出末尾已明确提示):

  • 管理端口 15490/TCP:仅用于 Outline Manager 或管理脚本调用管理 API。建议在云安全组中仅放行管理员常用出口 IP,不应对全网开放;
  • 访问密钥端口 15491/TCP+UDP:代理数据端口,必须对客户端网络开放,TCP 与 UDP 都要放行(UDP 用于 UDP 中继)。

安装器自带防火墙自检(Checking host firewall 行):本机放行则输出 OK;若自检判定外部不可达会输出 BLOCKED 并提示放行端口——云服务器最常见的拦截点是云厂商安全组,需在控制台放行上述端口。

8.2 状态目录与关键文件

安装器落盘结构(实测 ls -la 输出):

# 查看状态目录结构
ls -la /opt/outline/ /opt/outline/persisted-state/

实测回显(实测时点为重跑安装后,密钥库含 3 个访问密钥;文件大小/时间戳随实装时点变化):

/opt/outline/:
total 20
drwsrwx--- 3 root root 4096 Oct 20 14:47 .
drwxr-xr-x 1 root root 4096 Oct 20 14:46 ..
-rw-rw---- 1 root root  129 Oct 20 14:55 access.txt
-rw-rw---- 1 root root  129 Oct 20 14:55 access.txt.bak
drwxrws--- 4 root root 4096 Oct 20 14:55 persisted-state

/opt/outline/persisted-state/:
total 36
drwxrws--- 4 root root 4096 Oct 20 14:55 .
drwsrwx--- 3 root root 4096 Oct 20 14:47 ..
drwxrws--- 2 root root 4096 Oct 20 14:55 outline-ss-server
drwxrws--- 3 root root 4096 Oct 20 14:46 prometheus
-rw-rw---- 1 root root 1805 Oct 20 14:55 shadowbox-selfsigned.crt
-rw------- 1 root root 3272 Oct 20 14:55 shadowbox-selfsigned.key
-rw-rw---- 1 root root  384 Oct 20 14:55 shadowbox_config.json
-rw-rw---- 1 root root  160 Oct 20 14:55 shadowbox_server_config.json

关键文件作用(逐项):

文件作用
access.txtManager 接入凭据(apiUrl + certSha256),忘掉接入串时从这里找回
shadowbox_server_config.json服务器级配置(对外地址、密钥默认端口、服务器 ID、指标开关等)
shadowbox_config.json访问密钥库(每个密钥的 id/名称/密码/端口/加密方法)
shadowbox-selfsigned.crt/.key管理 API 的自签证书与私钥(RSA-4096、有效期 100 年)
outline-ss-server/数据面后端密钥配置目录
prometheus/内置指标采集配置与数据

💡 说明:状态目录内文件的完整参数含义与修改方式(文件直改 vs 管理 API 改)在《Outline Server 配置参数详解》中逐项展开。状态目录中另有一个安装器生成的服务实例启动脚本(上表未列出),其内容属受管运行时范畴,由官方安装器自动生成与消费,管理员无需编辑。

九、安装验证

9.1 管理 API 健康验证

用 curl 携带服务器自签证书调用管理 API,读取服务器信息:

# 调用管理 API 读取服务器信息(--cacert 指定自签证书做服务端校验)
curl --cacert /opt/outline/persisted-state/shadowbox-selfsigned.crt \
  https://10.0.0.2:15490/nSSFAqF32yf3eH7IbaMHKg/server

实测回显:

{"name":"Outline Server","serverId":"d2397286-ac7e-4ed1-ae44-21fce44bf9f5","metricsEnabled":false,"createdTimestampMs":1792507680957,"version":"1.12.3","portForNewAccessKeys":15491,"hostnameForAccessKeys":"10.0.0.2"}

⚠️ 注意:上例 URL 中的 nSSFAqF32yf3eH7IbaMHKg 是本实测环境随机生成的秘密前缀,你的服务器要用自己 access.txt 里的值;返回体 "version":"1.12.3" 即服务端实装版本。

9.2 端口监听验证

# 查看服务监听端口(TCP)
ss -ltnp | grep -E ':(15490|15491)\b'
# 查看服务监听端口(UDP)
ss -lunp | grep 15491

实测回显:

LISTEN 0      511                *:15490            *:*    users:(("node",pid=4968,fd=23))
LISTEN 0      4096               *:15491            *:*    users:(("outline-ss-serv",pid=5067,fd=6))
UNCONN 0      0                  *:15491            *:*    users:(("outline-ss-serv",pid=5067,fd=7))

解读:15490 由管理 API 服务进程(node)监听;15491 由数据面后端 outline-ss-serv(Go 的 outline-ss-server)同时监听 TCP 与 UDP。

9.3 端到端隧道实测(Shadowsocks 客户端)

在服务器本机用 shadowsocks-libev 的 ss-local 建一条到本服务器的隧道,验证加密链路真实可用(完整模拟客户端→服务器流程):

# 安装 shadowsocks-libev(Ubuntu 22.04 官方仓库自带)
apt-get install -y shadowsocks-libev

实测回显(输出节选):

Processing triggers for libc-bin (2.35-0ubuntu3.14) ...
# 建立 socks5 本地隧道(密钥与加密方法来自管理 API 的 accessUrl,见下)
ss-local -s 127.0.0.1 -p 15491 -l 1084 \
  -k TjDlqvxukYzNcvTPW4qtsV -m chacha20-ietf-poly1305

实测回显:

 2026-10-20 15:08:08 INFO: initializing ciphers... chacha20-ietf-poly1305
 2026-10-20 15:08:08 INFO: listening at 127.0.0.1:1084
 2026-10-20 15:08:08 INFO: running from root user
# 经隧道访问外网站点验证
curl --socks5-hostname 127.0.0.1:1084 http://www.baidu.com -o /dev/null -w "%{http_code}\n"

实测回显:

200

💡 说明:-k 后的密码与 -m 后的加密方法即首个访问密钥的凭据,可在管理 API 返回的 accessUrl(ss:// 链接)中 base64 解码得到:ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTpUakRscXZ4dWtZek5jdlRQVzRxdHNW@10.0.0.2:15491/?outline=1 解码后为 chacha20-ietf-poly1305:TjDlqvxukYzNcvTPW4qtsV。真实用户使用时在 Outline 客户端粘贴 ss:// 链接即可,无需手填。

十、升级、重装与版本管理

10.1 自动更新机制(默认开启)

安装器部署的 watchtower 自动更新实例默认每小时检查一次上游 stable 通道(WATCHTOWER_REFRESH_SECONDS 缺省 3600,安装器源码 2026-10-20 取证),发现新稳定版后自动升级服务实例。对管理员来说常规小版本升级是零操作的。

10.2 重跑安装脚本(升级/修复路径)实测

重跑官方安装脚本是官方的修复/重装路径。实测行为(在已装好的服务器上再次执行第四章同一命令):

# 重跑官方安装脚本
bash install_server.sh --hostname 10.0.0.2 --api-port 15490 --keys-port 15491

实测回显(输出节选,实测首尾):

> Generating secret key ....................... OK
> Generating TLS certificate .................. OK
> Generating SHA-256 certificate fingerprint .. OK
> Writing config .............................. OK
> Starting Shadowbox .......................... OK
> Starting Watchtower ......................... OK
> Waiting for Outline server to be healthy .... OK
> Creating first user ......................... OK
> Adding API URL to config .................... OK
> Checking host firewall ...................... OK

{"apiUrl":"https://10.0.0.2:15490/81XKB8WldZi-_V92KSKvsQ","certSha256":"AB347D754F921ADFB7A3D7B522F1B34FB223AB832CA80B72C7A933629F699865"}

实测结论(重跑前后对比,均为实测):

项重跑后行为
访问密钥全部保留(重跑后 API 列出的密钥与重跑前一致,id/名称/密码不变)
管理 API 秘密前缀与证书重新生成(apiUrl 与 certSha256 均变化,Outline Manager 需用新 JSON 串重新接入)
服务器级配置(名称等)重置(如自定义的服务器名称会回到默认值 Outline Server)
数据面隧道不中断(重装后同密钥隧道按 9.3 节方法实测返回 200)
自动更新实例重名脚本会提示替换,确认后自动完成旧实例移除与新实例重启(两步各输出 OK)

⚠️ 注意:需要"升级到指定新版本"时,重跑脚本默认仍走 stable 通道(自动即新版);要锁定版本用方案 C 的 SB_IMAGE 指定。重跑前若有自定义服务器名称等配置,先记录,重跑后重新设置。

十一、常见问题(FAQ)

Q1:安装时报"Starting Shadowbox ... FAILED",错误信息含 fstype: overlay ... invalid argument? 该错误源于受管运行时的底层文件系统叠加挂载失败,常见于嵌套虚拟化、受限存储栈等特殊环境(普通物理机/标准云主机 ext4|xfs 文件系统不会遇到)。处理:把受管运行时的存储驱动由默认 overlayfs 切换为 vfs(编辑其 daemon 配置文件将 storage-driver 设为 vfs 后重启该运行时),再重跑安装脚本。本仓实测即在嵌套环境遇到并按此解决。

Q2:安装报"Starting Watchtower ... FAILED",错误含 registry 端点连接超时(Client.Timeout)? 自动更新实例(watchtower)的服务组件默认从上游公共 registry 端点拉取,服务器到该端点网络超时导致(国内服务器常见)。两种处理:① 为受管运行时配置可用的上游加速端点后重跑安装脚本;② 预先获取该组件(nickfedor/watchtower)到本地再重跑,脚本检测到已存在即不再拉取。注意:watchtower 启动失败会使整个安装中止(脚本遇错即停),修复后需完整重跑。

Q3:报错 --api-port must be different from --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

Q4:忘了 Manager 接入串(apiUrl/certSha256)怎么办? 查看凭据文件即可(内容即安装输出里的 JSON 串字段):

cat /opt/outline/access.txt

实测回显:

certSha256:81780C5EA71D32AA05EF34D1B302BA3A5EE26F327CD787C337FFB23889A5FEBE
apiUrl:https://10.0.0.2:15490/nSSFAqF32yf3eH7IbaMHKg

Q5:安装输出最后出现 BLOCKED 而不是 OK? 安装器从服务器自身对外地址回连管理端口失败,说明服务器出口方向被拦截。逐层排查:云厂商安全组(最常见)→ 系统防火墙(ufw/firewalld/iptables)→ 运营商封禁。放行"管理端口/TCP"与"访问密钥端口/TCP+UDP"后重跑安装脚本验证。

Q6:重跑安装脚本后 Outline Manager 连不上了? 正常现象:重跑会重新生成管理 API 秘密前缀与证书(见 10.2 节实测),Manager 里旧的服务器卡片失效。把最新安装输出里的 JSON 串按 4.5 节重新接入即可;已分发的访问密钥链接不受影响。

十二、卸载与清理

Outline 官方未提供独立卸载脚本。卸载分两步:先停止服务实例,再删除状态目录。

  1. 停止服务实例:Outline 的两个服务实例(核心实例 shadowbox、自动更新实例 watchtower)的生命周期由官方安装器部署的受管运行时托管(自动重启、开机自启)。停止时对该两个实例执行运行时的停止操作即可(受管运行时即安装器在 2.3 节自动安装或接管的运行时)。
  2. 删除状态目录(密钥、证书、配置、凭据全部位于其中,删除即完成卸载):
# 删除状态目录(含全部密钥与证书,删除后所有客户端立即断开且无法恢复)
rm -rf /opt/outline
  1. 清理运行时(可选):若该运行时是安装 Outline 时专为它自动安装的、且服务器上无其他使用方,可一并卸载;若为共享运行时则保留。
  2. 回收端口与安全组:在云安全组/防火墙中移除管理端口与访问密钥端口的放行规则。

⚠️ 注意:/opt/outline 中含全部访问密钥凭据与证书私钥,删除前如需迁移请先备份;本仓实测卸载即按"停止两个服务实例 + 删除 /opt/outline"执行并复核端口已无监听。

十三、参考链接