インストールとデプロイ
Docker
イメージのアドレスは ghcr.io/wangwanjie/gately で、amd64、arm64、arm/v7 に対応しています。
docker run -d --name gately --network host --cap-add NET_ADMIN \
-v ./gately-data:/etc/gately \
-v /var/run/docker.sock:/var/run/docker.sock \
ghcr.io/wangwanjie/gately:latestDocker Compose
services:
gately:
image: ghcr.io/wangwanjie/gately:latest
container_name: gately
restart: unless-stopped
# ポート転送、STUN 穿孔、Web サービスはいずれもホストのポートを直接待ち受ける必要があります
network_mode: host
# 侵入防御がブロックをホストのファイアウォールに書き込みます(不要なら削除)
cap_add:
- NET_ADMIN
volumes:
# 設定ディレクトリ(平文の JSON。git でのバックアップも可能。ssl.json には証明書の秘密鍵が含まれます)
- ./data:/etc/gately
# Docker 管理(不要なら削除してください)
- /var/run/docker.sock:/var/run/docker.sock
environment:
- TZ=Asia/Shanghai--cap-add NET_ADMIN と cap_add は、侵入防御がブロックをホストの nftables ファイアウォールに書き込むためのものです。不要なら外してもかまいません。その場合もブロックは Gately 自身のサービスに適用されます。
イメージには sh、bash、curl が含まれているため、一般的な通知スクリプトはそのまま実行できます。
バイナリ
- ダウンロードページ から使用するプラットフォーム向けのアーカイブを取得します。対応は Linux(amd64 / arm64 / arm / mips / mipsle / riscv64)、macOS、Windows、FreeBSD です。
- 展開して次のコマンドを実行します。
./gately -c /etc/gatelysystemd
リポジトリには完全なサービスファイル deploy/systemd/gately.service が用意されており、低い番号のポートで待ち受けるために必要なケーパビリティも付与済みです。
sudo install -m 0755 gately /usr/local/bin/gately
sudo install -m 0644 gately.service /etc/systemd/system/gately.service
sudo systemctl daemon-reload && sudo systemctl enable --now gatelyOpenWrt
各リリースには OpenWrt 向けパッケージが含まれます。バイナリ、procd 用の起動スクリプト、ファームウェア更新時に設定を保持するルールが入っています。
- OpenWrt 24.10 以前(iStoreOS など 24.10 ベースのファームウェアを含む)は
.ipkを使い、opkg installでインストールします。 - OpenWrt 25.12 以降は
.apkを使い、apk add --allow-untrustedでインストールします(パッケージは署名されていないため、--allow-untrustedが必要です)。
grep DISTRIB_ARCH /etc/openwrt_release でデバイスのアーキテクチャを確認し、次の表に従って ダウンロードページ の OpenWrt グループからパッケージを選びます。
| DISTRIB_ARCH | パッケージ |
|---|---|
x86_64 | gately_<version>_openwrt_amd64 |
aarch64_* | gately_<version>_openwrt_arm64 |
arm_cortex-a*_*(VFP / NEON 対応の ARMv7) | gately_<version>_openwrt_arm |
mipsel_* | gately_<version>_openwrt_mipsle |
mips_* | gately_<version>_openwrt_mips |
riscv64_* | gately_<version>_openwrt_riscv64 |
cd /tmp
# OpenWrt 24.10 / iStoreOS(x86_64 の例)
opkg install ./gately_<version>_openwrt_amd64.ipk
# OpenWrt 25.12
apk add --allow-untrusted ./gately_<version>_openwrt_amd64.apk- インストール後に自動起動が有効になり、サービスがすぐに起動します。管理画面は
http://<ルーターのアドレス>:16680です。設定は/etc/gatelyに保存され、ファームウェアの更新(sysupgrade)後も保持されます。 - アップグレード:新しいパッケージをダウンロードし、もう一度
opkg installまたはapk add --allow-untrustedを実行します。設定は保持されます。自動起動を無効にしていた場合は、アップグレード後も無効のままです。 - アンインストール:
opkg remove gatelyまたはapk del gatelyを実行します。設定ディレクトリは残るため、完全に削除するにはrm -rf /etc/gatelyも実行してください。 - インストール前にデバイスのアーキテクチャを確認します。アーキテクチャが合わない場合、opkg はインストールを中止します。OpenWrt 25.12 の apk はパッケージ自体はインストールしますがサービスを起動しないため、
apk del gatelyを実行してから正しいパッケージを入れ直してください。 - バイナリは約 32 MB で、同程度の空き容量が必要です(
df -h /overlayで確認できます)。x86 のソフトルーターや ARM64 ボックスなどストレージに余裕のあるデバイス向けで、フラッシュが 16 MB / 32 MB のルーターには収まりません。 - arm パッケージにはハードウェア浮動小数点に対応した ARMv7 が必要です。ARMv5 / ARMv6 のデバイスや、
arm_cortex-a9のような FPU を持たないコアには現在対応していません。
手動でデプロイすることもできます。Linux 用のアーカイブをダウンロードし、procd 用の起動スクリプト deploy/openwrt/gately.init を使います。
cp gately /usr/bin/gately && chmod +x /usr/bin/gately
cp gately.init /etc/init.d/gately && chmod +x /etc/init.d/gately
/etc/init.d/gately enable && /etc/init.d/gately startfnOS ネイティブアプリ
各リリースには fnOS 向けのオフラインパッケージ gately_<version>_fnos_x86.fpk(Intel / AMD)と gately_<version>_fnos_arm.fpk(ARM)が含まれます。公式のアプリセンターには掲載されていないため、手動でインストールします。
- ダウンロードページ から、デバイスのアーキテクチャに合った
.fpkを取得します。 - fnOS で「アプリセンター → 手動インストール」(左下のボタン)を開き、ファイルを選んでウィザードを完了します。
- fnOS デスクトップの Gately アイコンをクリックすると、管理画面が開きます。
fnOS 統一ゲートウェイに対応
デスクトップのアイコンは、fnOS へのアクセスに使っているアドレスの /app/gately/ で、fnOS 統一ゲートウェイ経由で管理画面を開き、同じアクセス入口を共用します。LAN のアドレスでも fnOS のリモートドメインでもそのまま使え、16680 ポートを開放・転送する必要はありません。
ゲートウェイ経由のアクセスは fnOS が制御し、fnOS 管理者だけが開けます。セキュアエントリーと「LAN 内からのみ許可」は 16680 ポートへの直接アクセスにのみ適用されます。LAN 内では http://<NAS のアドレス>:16680 も引き続き使えます。
fnOS 管理者のログイン状態でログイン
「設定 → アクセス制御」で「fnOS のログイン状態で自動ログイン」を有効にすると、fnOS にログイン済みの管理者はデスクトップのアイコンからパスワードや 2 段階認証コードなしでそのまま Gately に入れます。
- 自動ログインの対象は fnOS 管理者だけで、Gately の管理者としてログインします。一般の fnOS ユーザーは引き続きユーザー名とパスワードを入力します。
- 統一ゲートウェイ経由のアクセスにのみ適用されます。16680 ポートへの直接アクセスでは通常のログインが必要です。
- ログアウトした後は自動で再ログインせず、ログイン画面に「fnOS アカウント <ユーザー名> でログイン」ボタンが表示されます。
- この設定は既定で無効で、fnOS パッケージでのみ表示されます。
注意事項
- アプリは
rootで動作するため、80/443 の待ち受け、docker.sockを通じた Docker の管理、実際の Web ターミナルが利用できます。自分で管理している NAS にのみインストールしてください。 - 設定はアプリの
varディレクトリに保存され、アンインストール時も保持されます。アンインストールウィザードで「すべて削除」を選んだ場合のみ消去されます。 - パッケージには
/usr/local/bin/gatelyコマンドも含まれ、gately ctl、gately mcp、gately reset-passwordを使えます。 - 16680 ポートは Docker イメージと共通です。ネイティブアプリを起動する前に
gatelyコンテナを停止してください。
初回ログイン
管理画面はデフォルトで 16680 ポートを待ち受けます。デフォルトのアカウントは admin、パスワードは gately.cn です。自動デプロイでは環境変数 GATELY_INITIAL_PASSWORD で、デフォルトのパスワードの代わりに使う初期パスワードを指定できます。
デフォルトのパスワードは公開されているため、使用している間は管理画面の上部に変更を促す警告が表示され続けます。初回ログイン時には初期設定ガイドが表示され、パスワードの変更、2 段階認証または Passkey の有効化、ネットワーク自己診断の実行、Lucky からのインポート、通知の設定を順に案内します。
パスワードと 2 段階認証のリセット
管理者パスワードを忘れたときや、2 段階認証(TOTP)のアプリを紛失したときは、Gately が稼働しているサーバー上でコマンドを実行してリセットします。コマンドは設定ディレクトリの読み書きが必要で、サーバーの権限を持つことと同等なため、ネットワーク経由では使えません。
gately reset-password:管理者パスワードをデフォルトのgately.cnにリセットします。-p <新しいパスワード>で新しいパスワードを直接指定することもできます。gately reset-totp:管理者の 2 段階認証を無効にします。ログイン後に再び有効にできます。
実行前に管理者のユーザー名と実行する操作が表示され、誤操作を防ぐため yes と入力して確認する必要があります。スクリプトなどの非対話環境では -y を付けると確認を省略できます。稼働中の Gately には再起動なしで数秒以内に反映され、稼働していない場合は次回起動時に反映されます。リセット後はログイン中のすべてのセッションが無効になり、ログイン失敗によるロックも解除されます。ユーザー名、Passkey、読み取り専用アカウント、その他の設定は変わりません。
| インストール方法 | コマンド |
|---|---|
| Docker | docker exec -it gately gately reset-password |
| systemd | sudo gately reset-password |
| OpenWrt / iStoreOS | gately reset-password |
| fnOS | sudo gately reset-password |
| その他 | ./gately reset-password -c <設定ディレクトリ> |
-c を指定しない場合は、GATELY_CONFIG_DIR、カレントディレクトリの data、/etc/gately、fnOS パッケージの設定ディレクトリ /var/apps/gately/var/config の順に探し、実際に使ったディレクトリを表示します。リセット操作はシステムログと監査ログに記録されます。
アップグレード
オンラインアップグレード
Linux バイナリ導入(systemd、PVE の LXC コンテナ、手動で導入した OpenWrt など)では、管理画面の「バージョン情報」ページからオンラインでアップグレードできます。「アップデートを確認」をクリックし、新しいバージョンが見つかったら「今すぐアップグレード」をクリックします。PVE で OCI イメージから作成した LXC コンテナも対象で、削除して作り直す必要はありません。Gately は次の順に処理します。
- このプラットフォーム用の
gately_<バージョン>_linux_<アーキテクチャ>.tar.gzを GitHub からダウンロードします。 - 同じリリースの
checksums.txtと SHA-256 を照合します。 - 新しいバイナリを
-versionで試験実行し、このマシンで動くことを確認します。 - 実行ファイルを置き換えて同じ引数で再起動します。旧バージョンは同じディレクトリに
gately.oldとして残ります。
すべてダイアログ内で進みます。まずそのバージョンの更新内容が表示され、開始後は現在のステップ、ダウンロードの進捗と速度が表示されます。プログラムを置き換える前(バージョン取得・ダウンロード・検証の段階)なら、いつでも「アップグレードを取消」をクリックでき、現在のプログラムは変更されません。
GitHub への接続が不安定な場合は、「バージョン情報」ページまたは「設定 → ネットワークと実行」で更新用プロキシを設定できます。http://、https://、socks5:// に対応し、更新確認とダウンロードの両方がこのプロキシを経由します。空欄の場合は直接接続し、HTTPS_PROXY 環境変数があればそれに従います。
インターネットに接続できない環境では、ダウンロードページ から tar.gz を入手し、「バージョン情報」ページの「アップグレードパッケージをアップロード」でアップグレードできます。アップロードはバージョンの新旧を問わないため、旧バージョンへのロールバックにも使えます。
オンラインアップグレードは管理者が操作したときだけ実行され、Gately が自動でダウンロードやインストールを行うことはありません。新しいバージョンが起動しない場合は、残しておいた旧バージョンで手動でロールバックできます(systemd の例)。
mv /usr/local/bin/gately.old /usr/local/bin/gately
systemctl restart gatelysetcap でバイナリに低番号ポートの権限を付与している場合は、アップグレード後にもう一度 setcap を実行してください。
その他のデプロイ方式
- Docker:新しいイメージを
docker pullしてからコンテナを再作成します(設定ディレクトリをマウントしたままにしておけば問題ありません)。 - fnOS:アプリセンターで新しい
.fpkを手動インストールします。設定は保持されます。 - OpenWrt パッケージ:新しい
.ipk/.apkをダウンロードしてopkg install/apk add --allow-untrustedを実行します。設定は保持されます(OpenWrt を参照)。 - Windows、macOS、FreeBSD:実行ファイルを置き換えて、サービスを再起動します。
アップグレード前に設定のバックアップをエクスポートするか、設定ディレクトリごと git に入れておくことをおすすめします。ダウンロードしたアーカイブやイメージは、リリースの検証 に従って署名を確認できます。