Server Core 部署
在 Linux 服务器上以独立服务账号运行 airlockd,用 airlock CLI 管理固定路由,可选的 Web UI 仅 loopback 且脱敏。
01 服务账号与目录 准备账号、目录与 token ⧉ sudo useradd --system --create-home --shell /usr/sbin/nologin airlock
sudo install -d -o airlock -g airlock -m 0700 /var/lib/airlock /etc/airlock
sudo -u airlock /usr/local/bin/airlock token generate --output /etc/airlock/control.token
sudo -u airlock /usr/local/bin/airlock token generate --output /etc/airlock/web.tokencontrol token 与 web token 分开存放;两者都是 0600 文件,任何 Secret 都不得写入命令行。
02 获取二进制 从仓库构建(Go 1.25+),或从 Release 的 core-kit 归档获取当前架构二进制:
构建 ⧉ git clone https://github.com/LouisonH/airlock-relay.git
cd airlock-relay
go build -trimpath -o ./bin/airlockd ./cmd/airlockd
go build -trimpath -o ./bin/airlock ./cmd/airlock
sudo install -m 0755 ./bin/airlockd /usr/local/bin/airlockd
sudo install -m 0755 ./bin/airlock /usr/local/bin/airlock
03 启动核心与 Web UI 前台验证 ⧉ sudo -u airlock /usr/local/bin/airlockd --mode server \
--data-dir /var/lib/airlock \
--control-token-file /etc/airlock/control.token \
--listen 127.0.0.1:4768 --ssh-listen 127.0.0.1:4770 \
--web-listen 127.0.0.1:4769 --web-token-file /etc/airlock/web.token确认 airlock status 正常后再配置 systemd。
04 systemd 服务 复制仓库中的 deploy/systemd/airlock.service.example 到 /etc/systemd/system/airlock.service,按注释填写 token 与监听参数,然后:
启用 ⧉ sudo systemctl daemon-reload
sudo systemctl enable --now airlock
sudo systemctl status airlock服务应以 airlock 非登录账号运行,ProtectSystem/PrivateTmp 等加固项已包含在示例单元中。
05 Web UI 远程管理 Web UI 只监听 loopback,使用独立 bearer token,可查看脱敏状态、健康检查、启停路由与全停;不能创建/删除路由或查看 Secret。远程访问使用 SSH 隧道:
运维工作站 ⧉ ssh -L 4769:127.0.0.1:4769 operator@example-server然后打开 http://127.0.0.1:4769,token 保存在标签页级 sessionStorage。
06 升级与备份 升级前:停止服务 → 离线备份 /var/lib/airlock 与两个 token 文件 → 替换二进制 → 启动 → status + 关键路由 routes health。备份按 Secret 处理。
Server Core deployment
Run airlockd on a Linux server under a dedicated service account, administer fixed routes with the airlock CLI, and optionally expose a loopback-only sanitized Web UI.
01 Service account and directories Account, directories, and tokens ⧉ sudo useradd --system --create-home --shell /usr/sbin/nologin airlock
sudo install -d -o airlock -g airlock -m 0700 /var/lib/airlock /etc/airlock
sudo -u airlock /usr/local/bin/airlock token generate --output /etc/airlock/control.token
sudo -u airlock /usr/local/bin/airlock token generate --output /etc/airlock/web.tokenControl and web tokens are separate 0600 files. Secrets never belong in command arguments.
02 Obtain the binaries Build from the repository (Go 1.25+) or take the matching core-kit archive from the release:
Build ⧉ git clone https://github.com/LouisonH/airlock-relay.git
cd airlock-relay
go build -trimpath -o ./bin/airlockd ./cmd/airlockd
go build -trimpath -o ./bin/airlock ./cmd/airlock
sudo install -m 0755 ./bin/airlockd /usr/local/bin/airlockd
sudo install -m 0755 ./bin/airlock /usr/local/bin/airlock
03 Start the core and Web UI Foreground verification ⧉ sudo -u airlock /usr/local/bin/airlockd --mode server \
--data-dir /var/lib/airlock \
--control-token-file /etc/airlock/control.token \
--listen 127.0.0.1:4768 --ssh-listen 127.0.0.1:4770 \
--web-listen 127.0.0.1:4769 --web-token-file /etc/airlock/web.tokenConfirm airlock status before installing systemd.
04 systemd service Copy deploy/systemd/airlock.service.example to /etc/systemd/system/airlock.service, fill in the token and listener settings, then:
Enable ⧉ sudo systemctl daemon-reload
sudo systemctl enable --now airlock
sudo systemctl status airlockThe service runs as the non-login airlock account; the example unit includes standard hardening options.
05 Remote Web UI management The Web UI listens on loopback only and uses a separate bearer token for sanitized status, health checks, enable/disable, and stop-all. Reach it over an SSH tunnel:
Operator workstation ⧉ ssh -L 4769:127.0.0.1:4769 operator@example-serverOpen http://127.0.0.1:4769; the token lives in tab-scoped sessionStorage.
06 Upgrades and backups Before upgrading: stop the service, back up /var/lib/airlock and both token files offline, replace binaries, start, then run status and routes health for critical routes. Treat backups as secrets.
Server Core デプロイ
Linux サーバーで専用サービスアカウントのもとに airlockd を実行し、airlock CLI で固定ルートを管理します。Web UI は loopback のみ・サニタイズ表示です。
01 サービスアカウントとディレクトリ アカウント・ディレクトリ・トークン準備 ⧉ sudo useradd --system --create-home --shell /usr/sbin/nologin airlock
sudo install -d -o airlock -g airlock -m 0700 /var/lib/airlock /etc/airlock
sudo -u airlock /usr/local/bin/airlock token generate --output /etc/airlock/control.token
sudo -u airlock /usr/local/bin/airlock token generate --output /etc/airlock/web.tokencontrol token と web token は分離し、両方 0600 で保持します。
02 バイナリの取得 ビルド ⧉ git clone https://github.com/LouisonH/airlock-relay.git
cd airlock-relay
go build -trimpath -o ./bin/airlockd ./cmd/airlockd
go build -trimpath -o ./bin/airlock ./cmd/airlock
sudo install -m 0755 ./bin/airlockd /usr/local/bin/airlockd
sudo install -m 0755 ./bin/airlock /usr/local/bin/airlock
03 コアと Web UI の起動 フォアグラウンドで検証 ⧉ sudo -u airlock /usr/local/bin/airlockd --mode server \
--data-dir /var/lib/airlock \
--control-token-file /etc/airlock/control.token \
--listen 127.0.0.1:4768 --ssh-listen 127.0.0.1:4770 \
--web-listen 127.0.0.1:4769 --web-token-file /etc/airlock/web.tokenairlock status を確認してから systemd を導入します。
04 systemd サービス deploy/systemd/airlock.service.example を /etc/systemd/system/airlock.service にコピーし、トークンとリスナーを設定します。
有効化 ⧉ sudo systemctl daemon-reload
sudo systemctl enable --now airlock
sudo systemctl status airlock
05 Web UI のリモート管理 Web UI は loopback のみ・専用 bearer token・サニタイズ表示です。SSH トンネル経由でアクセスします。
オペレータ端末 ⧉ ssh -L 4769:127.0.0.1:4769 operator@example-serverhttp://127.0.0.1:4769 を開きます。トークンはタブ単位の sessionStorage に保持されます。
06 アップグレードとバックアップ サービス停止 → /var/lib/airlock と 2 つのトークンファイルをオフラインでバックアップ → バイナリ差し替え → 起動 → status と routes health で確認。バックアップは Secret として扱います。