Skip to content
このページは AI で翻訳されており、不正確な表現が含まれる場合があります。GitHub で改善にご協力ください。

Lucky から Gately へ移行する ​

Gately は独立したプロジェクトであり、Lucky とは一切関係がありません。互換性は公開されている観察可能な形式に基づいています。

Gately は Lucky の .lkcf 設定ファイル、または Lucky の「設定のバックアップ」でエクスポートしたサイト全体の zip を直接読み込み、ルール、タスク、証明書を移行できます。移行中に Lucky をアンインストールする必要はなく、両方を並行して動かしながらモジュール単位で切り替えられます。

nginx からの移行

このページでは Lucky からの移行を説明します。既存の nginx サイトは「Web サービス → nginx をインポート」で直接インポートできます。Web サービス · nginx 設定のインポート を参照してください。

1. 準備 ​

  1. Lucky の設定ディレクトリを確認します。Docker でデプロイしている場合、通常はコンテナの /app/conf にマッピングしたホスト側ディレクトリで、lucky_base.lkcf、lucky_ddns.lkcf などのファイルが入っています。
  2. Gately をデプロイします(README を参照)。次の点をおすすめします。
    • --network host を使い、Lucky と同様にホストのポートを直接待ち受けます。
    • 管理ポートのデフォルトは 16680 で、Lucky の 16601 と競合しません。
    • Lucky のスクリプトや証明書のマッピングがコンテナ内のパス(例:/etc/lucky/custom_scripts、/data/nginx/...)を使っている場合は、Gately のコンテナにも同じパスでマウントすると、インポート後の修正が不要になります。

2. インポート ​

Gately の「設定 → バックアップと移行」を開き、すべての lucky_*.lkcf ファイル、または Lucky がエクスポートしたサイト全体の設定 zip を選択します(zip 内の .lkcf は自動で認識され、それ以外のファイルは無視されます)。まず「プレビュー」で各モジュールにインポートできる件数と注意事項を確認し、問題なければ「インポート」を押します。

繰り返しのインポートは安全です。既存の項目と同名のルール、タスク、証明書はスキップされます。

対応しているファイル:

ファイルインポート先説明
lucky_portforward.lkcfポート転送TLS / ストリーム暗号化、速度制限のオプションは未対応で、通知が表示されます
lucky_ddns.lkcfダイナミック DNS11 のプロバイダーに対応。Lucky 公式の IP 照会アドレスは削除されます
lucky_stun.lkcfSTUN 穿孔グローバルな STUN サーバー一覧とグローバル Webhook を含みます
lucky_ssl.lkcfSSL 証明書発行済みの証明書はそのままインポートされ、有効期限が切れるまで再取得しません
lucky_reverseproxy.lkcfWeb サービスサイト、認証、WAF 参照(サブルールの WAF が main の場合は待ち受けルールのインスタンスを引き継ぎます)
lucky_coraza.lkcfWAF ファイアウォールインスタンスキーを引き継ぐため、サイトからの参照は有効なままです
lucky_wol.lkcfWake-on-LAN
lucky_webterminal.lkcfWeb ターミナルSSH 接続。初回接続時にホストフィンガープリントを記録します
lucky_webdav.lkcfWebDAVユーザーのマウント一覧は複数のディレクトリに変換され、同名・同パスワードのユーザーは統合されます。ストレージ管理を参照するマウントは対応するローカルディレクトリに解決されます
lucky_ftpserver.lkcfFTP待ち受けポート、パッシブポート範囲、TLS とタイムアウトのパラメーター、およびユーザー(扱いは WebDAV と同じ)
lucky_storagemanagement.lkcfストレージマウントローカルディレクトリと WebDAV ストレージ。Alibaba Cloud Drive、システムマウント、アクセスプロキシは移行されません
lucky_frp.lkcffrp最初のクライアントインスタンス(サーバーアドレス、トークン、トランスポートプロトコル、プロキシ)と最初のサーバーインスタンス。ビジター、プラグインプロキシ、ダッシュボードは移行されません
lucky_cloudflared.lkcfCloudflare トンネルトンネルトークンを使うトンネル。Access のアクセス側と、API トークンのみを入力したトンネルは移行されません
lucky_base.lkcf全体設定、Web サービスLAN 内からのみ許可、ログイン失敗の上限、セッション期間、タイムゾーン、カスタム DNS(doh@ 形式を含む)、GC パラメーター、PROXY プロトコルの信頼元。管理ポート、セキュアエントリー、管理者アカウント、2 段階認証は移行されません

Lucky のスケジュールタスク、IP フィルター、Docker 設定は一般的な構成では空のため、現時点では移行されません。内容がある場合は手動で設定してください。

インポートしたルールはデフォルトで無効になります。テスト機にインポートしたせいで本番のドメインが誤ったアドレスに解決されたり、稼働中の Lucky とポートやルーターの UPnP マッピングを取り合ったりするのを防ぐためです。Gately が移行先のデバイスで動作していて、Lucky が停止していることを確認できたら、「インポート後に Lucky での有効状態を維持する」にチェックを入れてください。ルールは Lucky での有効状態(各モジュールのマスタースイッチを含む)のとおり、すぐに動き始めます。

3. 切り替え ​

モジュールごとに 1 つずつ切り替え、切り替えるたびに動作を確認することをおすすめします。

  1. 証明書:Gately で証明書を有効にします。有効にすると、証明書がマッピング先のディレクトリに書き込まれ、変更時のスクリプトが実行されます(ファイル名は Lucky と同じです)。ディレクトリに書き込めることを確認してください。
  2. DDNS:Lucky でタスクを無効化 → Gately で対応するタスクを有効化 → 「強制同期」を押してレコードが更新されたことを確認します。
  3. ポート転送 / STUN:先に Lucky でルールを無効化し(ポートと UPnP マッピングを解放)、そのあと Gately で有効化します。STUN ルールを有効にすると公開ポートが変わることがありますが、スクリプトと Webhook で自動的に通知されます。
  4. Web サービス:Lucky の待ち受けルールを無効化 → Gately で有効化します。HTTPS サイトには、そのドメインをカバーする有効な証明書が証明書モジュールに存在している必要があります。
  5. すべて問題ないことを確認してから、Lucky のコンテナを停止します。

4. Docker デプロイ時のマウント ​

Lucky のスクリプトと証明書マッピングは Lucky コンテナ内のパスを使っています。Gately のコンテナにも、同じホスト側ディレクトリを同じコンテナ内パスにマウントする必要があります。Lucky の compose を見ながら 1 つずつ追加してください。例:

yaml
volumes:
  - ./config:/etc/gately
  - /var/run/docker.sock:/var/run/docker.sock
  # Lucky で証明書を /data/nginx/ssl にマッピングしている場合は、同じホスト側ディレクトリを同じパスにマウントします
  - /srv/nginx/ssl:/data/nginx/ssl
  # ルールから呼び出すスクリプト(Lucky に入力したパスが Lucky コンテナ内に実在するか確認してください)
  - /srv/lucky/custom_scripts:/etc/lucky/custom_scripts:ro

Gately のイメージには sh、bash、curl が含まれているため、一般的な通知スクリプトはそのまま実行できます。

5. 手動で対応が必要な項目 ​

  • 外部ログイン:Lucky の GitHub / QQ / Google ログインは Lucky 公式の中継サーバーを経由しますが、Gately では自分で取得した OAuth アプリを使います。インポート時は lucky_thirdPartyAuthManager.lkcf(ID テーブル)、lucky_reverseproxy.lkcf、lucky_base.lkcf を一緒に選択してください。
    • サイトや管理画面が参照しているサードパーティ ID は、ID テーブルに従って許可リストに移行されます(GitHub は数値 ID、Google は sub、QQ は openid を使い、ユーザー名とメールアドレスは備考に記録されます)。
    • 管理画面のログイン方法は「設定 → アカウントとセキュリティ → 外部ログイン」、サイトのログイン方法は「Web サービス → 全体設定」にあります。自分の Client ID / Secret とコールバックアドレスを入力して有効にして初めて機能し、インポートで自動的に有効になることはありません。ログイン方法の識別子には github、google、qq を使うと、移行された ID と対応づけられます。
    • QQ の openid は QQ Connect のアプリごとに異なります。自分のアプリに切り替えると、初回ログインは拒否され、新しいアカウント識別子が表示されるので、それを許可リストに追加してください。
    • 外部ログインのみに依存し、移行できる ID が見つからないサイトは、インポート後も無効のままになります。
  • ZeroSSL 証明書:Lucky の EAB 認証情報を引き継いで新しい ACME アカウントを登録します。ZeroSSL に拒否された場合は、ZeroSSL の管理画面で EAB を再生成してください。
  • frp インスタンス:Gately には frpc と frps が 1 つずつしかありません。Lucky の余分なインスタンスはレポートに一覧表示されるので、別のマシンに移すか 1 つのインスタンスにまとめてください。Gately ですでに別のサーバーへの frpc を設定している場合や、有効な frps がある場合は、上書きされません。frps のダッシュボードのアカウントは Lucky が管理しているため、移行後にダッシュボードが必要であれば、ポートとパスワードを設定し直してください。
  • ストレージの参照:Lucky の FTP / WebDAV ユーザーは「ストレージ管理」のストレージをマウントできます。インポート時は lucky_storagemanagement.lkcf も一緒に選択してください(またはサイト全体の zip をインポートしてください)。ローカルストレージは対応するディレクトリに解決されます。WebDAV、Alibaba Cloud Drive ストレージ、rclone マウントは未対応で、レポートに通知されます。
  • 未実装の Lucky 機能:DLNA、rclone によるネットワークドライブのマウント、Alibaba Cloud Drive、IP データベース(lucky_ipdb.lkcf)などは移行されず、インポート時にスキップされます。
  • Lucky 公式サーバー:Gately は 66666.host、lucky666.cn などのアドレスには接続しません。移行後の公開 IP 照会にはサードパーティの公開サービスが使われます(DDNS タスクで変更できます)。

6. ロールバック ​

Gately は Lucky のファイルを一切変更しません。元に戻したいときは、Gately の対応するルールを無効化し、Lucky で再び有効にするだけです。

Apache-2.0 ライセンスで公開されています。