landung について
Albatros から自主管理サーバーへプロジェクトを移すためのスキルです。デプロイ運用を担うプロジェクト担当者向けに、計画、サーバー設定、GitHub への移行、データとドメインの移転を案内し、新環境の確認後に旧環境を停止する手順を示します。
主な機能
- 01移行が適切かを評価
- 02プロジェクト、データ、秘密情報の移行を計画
- 03Ubuntu と Docker のサーバー設定を案内
- 04Git リポジトリとデプロイワークフローを GitHub へ移行
- 05データを移しドメインを切り替え
- 06停止前に新環境を検証
活用シーン
- 01ホスティング環境から自主管理サーバーへの移行
- 02デプロイを GitHub Actions に切り替え
- 03データベース、アップロード、環境変数の移行
- 04ドメイン変更と HTTPS の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ dischen87/ albatros-skills --skill landungインストール後、Claude Code で/landungを入力して読み込まれたか確認します。
詳細
着地:自分の家への引っ越し
たとえ話
Albatros では、管理人のいる集合住宅に住んでいます。管理人が玄関のドアを閉め、鍵を交換し、毎晩部屋の写真を撮ります。自分の家では、それを自分で行います。
引っ越しは新築ではありません。プロジェクトはすでに、どこにでも持っていける箱に詰めてあります。ログブック(Git)、設計図(Dockerfile、compose.yaml)、そしてベルトコンベア(ワークフロー)です。残りを加えて引っ越し、住所変更を届け出ます。Albatros の家に属するのは港だけです。ログブックの新しい港として、たとえば GitHub を使います。
**このたとえ話の使い方:**質問をしたりコマンドを示したりする前に、すぐに解決策を求められた場合でも、最初の返答でこの話を相手に伝えてください。
話し方
- **質問だけで終わらせない:**プロジェクトや情報が足りない場合でも、具体的な手順を示すか、仮定を明記したドラフトとしてファイルを作成します(
[仮定:…])。不足している点は最後に尋ねてください。 - 相手には「あなた」と呼びかけます。必要な作業について正直に伝えます。自分のサーバーを使えば費用を抑えられることが多い一方、保守に時間がかかります。
- サーバーのレンタルと支払いは、本人がプロバイダーで行います。
- 新しい家が確実に稼働していると確認できるまで、古い家は停止しません。
手順
1. 引っ越しする価値はあるか?
相手と簡単に確認します(スキル kosten を参照)。プロジェクトに Albatros の提供内容以上のものが必要ですか?すべてを自分で管理したいですか?毎月、保守に1〜2時間かけられますか?そうでなければ、現状のままにするのも良い選択です。
Light の場合、引っ越しは簡単です。seite/ フォルダーは、どの静的サイトホスティングサービスでも動作します。ログブックを GitHub に移し(手順4の項目1と2)、そこでサイトを有効にします。たとえば GitHub Pages を使えます。サーバー、ベルトコンベア、ドメインの移行は不要ですが、引っ越しリストはそのまま使います。
2. 引っ越しリスト
プロジェクト内の docs/landung.md:
# Umzug auf eigenen Server
## Kisten
- [ ] Logbuch: alles gepusht (`git status` sauber)
- [ ] Logbuch im neuen Hafen (z. B. GitHub), alle Einträge dort angekommen
- [ ] Geheimnisse: Liste der Namen aus `.env.example` (Werte nie hier!)
- [ ] Daten: Datenbank, hochgeladene Dateien (Ordner: …)
- [ ] Einstellungen: Domains, E-Mail-Einträge im DNS (nicht anfassen), Cronjobs
- [ ] Domain über Albatros gekauft? Dann mit dem Auth-Code (`domain_mitnehmen`) zu einem neuen Registrar
## Was ich selbst übernehme
- [ ] Updates (automatisch, nur Sicherheitsupdates)
- [ ] Sicherungen (nächtlich, ausser Haus, verschlüsselt, Probe jeden Monat)
- [ ] Überwachung (Seite antwortet? Platte voll?)
## Ablauf und Datum
…
3. 新しい家
- Ubuntu 24.04 のサーバーをレンタルします。メモリーは、少なくとも現在と同じ容量が必要です。注文時に、本人の公開鍵を登録します。
- 安全に何度でも実行できるスクリプトでセットアップします(root として、まず内容を読んでから実行します)。
- アップデート、公式ソースからの Docker のインストール
- あなたの鍵を設定した
deployユーザー、~/projektフォルダー - SSH は鍵認証のみとします。
/etc/ssh/sshd_config.d/10-haerten.confにPasswordAuthentication noを設定し、事前にsshd -tで確認します。 - ファイアウォール:まず
ufw allow 22/tcp、80/tcp、443を許可し、その後でufw enableを実行します(そうしないと、自分自身を締め出してしまいます)。救済手段として、SSH 接続を1つ開いたままにします。 fail2ban、自動セキュリティアップデート(unattended-upgrades)- ディスクがいっぱいにならないよう、ログの上限を設定します。
- ウェブサイトの前に立つ門番として Caddy を使います。アドレスがサーバーを指すようになると、HTTPS 用の証明書を自動取得します。
compose.yamlに独立したサービスとして追加し、ウェブサイト自体は127.0.0.1のみにバインドします。Caddyfileにエラーがあるとすべて停止してしまいます。再読み込みの前には必ずcaddy validateを実行し、その後、外部から動作を確認します。
4. ログブックとファイルバンドを持っていく
Albatros では、ファイルバンドの作業者は家に住んでいます。自分の家では、GitHub の作業者が引き継ぎます。自分でビルドするのではなく、新しいサーバーのところへ専用の鍵で呼び出しに行き、デプロイさせます。
- 新しい港: ご本人が github.com でアカウントを作成します。次に
ghをインストールし(Mac:brew install gh)、gh auth loginを実行します。ログインはブラウザーで行います。 - ログブックを移す:
引っ越しが完了するまでは、古い港にgit remote rename origin albatros gh repo create <projektname> --private --source . --remote origin --pushalbatrosとしてアクセスできます。 - 新しいサーバー用の読み取り専用キー: サーバーがログブックを自分で取得します。読み取り専用です。家の鍵はサーバーに置いたまま、GitHub に渡すのは錠前だけです。
github.com のフィンガープリントを docs.github.com に掲載されているものと照合してください。ssh deploy@<neue-adresse> 'ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N "" -C eigener-server' ssh deploy@<neue-adresse> 'cat ~/.ssh/id_ed25519.pub' > server-schloss.pub gh repo deploy-key add server-schloss.pub --title "eigener-server" # nur lesen, das ist der Standard rm server-schloss.pub ssh deploy@<neue-adresse> 'ssh-keyscan -t ed25519 github.com >> ~/.ssh/known_hosts && git clone [email protected]:<benutzer>/<projektname>.git ~/projekt' - ファイルバンド専用の鍵: ご本人の家の鍵は使いません。こうすれば、この鍵だけを個別に無効化できます。
鍵はファイルから GitHub の保管庫(Secrets)に直接保存します。チャットにもログブックにも決して入れないでください。その後、コンピューター上のssh-keygen -t ed25519 -f ~/.ssh/fliessband -N "" -C fliessband ssh deploy@<neue-adresse> 'cat >> ~/.ssh/authorized_keys' < ~/.ssh/fliessband.pub gh secret set DEPLOY_KEY < ~/.ssh/fliessband gh secret set DEPLOY_KNOWN_HOSTS --body "$(ssh-keyscan -t ed25519 <neue-adresse> 2>/dev/null)" gh variable set SERVER --body "deploy@<neue-adresse>" gh variable set SEITE_URL --body "https://<domain>"~/.ssh/fliessbandは削除してかまいません。 - ワークフローを調整する:
.github/workflows/deploy.ymlでは、作業者とサーバーへの接続先を変更します。それ以外はそのままです。
シークレットはjobs: fliessband: runs-on: ubuntu-latest # ein Arbeiter von GitHub statt deines Servers permissions: contents: read # so wenig Rechte wie möglich concurrency: group: ausliefern cancel-in-progress: false # eine laufende Auslieferung nie abbrechen env: ZIEL: ${{ vars.SERVER }} SEITE: ${{ vars.SEITE_URL }} SHA: ${{ github.sha }} steps: - name: Schlüssel des Fliessbands einsetzen env: DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }} DEPLOY_KNOWN_HOSTS: ${{ secrets.DEPLOY_KNOWN_HOSTS }} run: | [ -n "$DEPLOY_KEY" ] || { echo "::error::Secret DEPLOY_KEY fehlt"; exit 1; } install -d -m 700 ~/.ssh printf '%s\n' "$DEPLOY_KEY" > ~/.ssh/id_ed25519 && chmod 600 ~/.ssh/id_ed25519 printf '%s\n' "$DEPLOY_KNOWN_HOSTS" > ~/.ssh/known_hosts - name: Bauen und ausliefern, notfalls zurück run: | ssh "$ZIEL" "SHA=$SHA bash -s" <<'EOF' # hier der Block aus der Albatros-Version, ab «set -euo pipefail» bis «echo "läuft: $SHA"», ohne die Zeile mit willkommen EOF - name: Endkontrolle von aussen run: | # unverändert aus der Albatros-Versionenv:を通じてのみコマンドに渡し、${{ secrets.… }}をrun行に直接書かないでください。次にgh workflow run deploy.ymlとgh run watchを実行します。成功を示す緑色になれば完了です。
5. データとシークレットを持っていく
.envはサーバー間で直接、またはご自身のコンピューターを経由してscpで転送します。Git は決して使わないでください。- データベース:Albatros 上でバックアップを作成し(例:
sqlite3 app.sqlite ".backup kopie.sqlite"またはpg_dump)、新しいサーバーに復元します。 - アップロードされたファイルは
rsync -aで転送します。
6. アドレスを切り替える
まず、電話帳を変更せずに、新しいサーバーのアドレスでテストします:curl --resolve <domain>:443:<neue-ip> https://<domain>/。その後は、アドレスをどこで契約したかによって手順が異なります。
Albatros で購入した場合(konto_status で「Eigene Domains」の下に表示されるもの):このアドレスの電話帳は Albatros が管理しています。ご本人が選んだレジストラーにアドレスを移します。
- ご本人が新しいレジストラーでアカウントを作成します。
- ご本人の了承を得てから
domain_mitnehmenを呼び出します。この時点から、Albatros はアドレスを更新しなくなります。移転が完了するまでは、アドレスは引き続き Albatros のサーバーを指します。 - ツールから、アドレス移転用の鍵である Auth-Code が発行されます。これを見せるのはご本人だけにしてください。ファイルやログブックに書いてはいけません。ご本人は新しいレジストラーでこのコードを入力し、そこで移転(Transfer)を開始します。通常、更新料金として1年分を支払います。
.comと.netは、購入後60日間は移転できないことがよくあります。 - 移転が完了したら、新しいレジストラーでレコードを設定します。A と AAAA は新しいサーバーを指すようにし、該当する場合は
wwwとメール用レコード(MX)も設定します。
別の場所で契約した場合:
- 前日に、レコードの有効期間(TTL)を300秒に下げます。そうすれば、切り替えが早くなります。
- A レコードと AAAA レコードを新しいサーバーに向けます。Albatros では解約の手続きは必要ありません。
その後、https://<domain> が応答すること、www がリダイレクトすること、鍵のアイコンが表示されることを確認します。
7. それから引っ越す
1週間、状況を確認します。すべて順調なら、Albatros のサブスクリプションを変更するか、解約します(Cockpit)。ご本人が Albatros で購入したドメインは、その前に移転してください(手順6)。移転しないと、サブスクリプションの終了とともに使えなくなります。その後は写真(スナップショット)が利用できなくなります。これからは、ご自身のバックアップが頼りです。
8. ミッションを確認する
docs/landung.md をログブックに追加し、ファイルバンド(スキル git-logbuch、pipeline)経由で反映してから、flugschule-10-landung を指定して mission_pruefen を実行します。検証では、移転リスト docs/landung.md がプロジェクトにあるかどうかを確認します(Albatros サーバーに Pilot がいる場合も、港に Light がいる場合も同様です)。ご本人がまだ Albatros を利用している間にリストを作成するのがおすすめです。
注意点
- 証明書がない:アドレスがまだ新しいサーバーを指していないか、ポート 80 が閉じています。
- Docker のポートがファイアウォールを迂回する:内部サービスは
127.0.0.1のみにバインドしてください。 - バックアップを設定しただけで、復元したことがない:復元テストに成功して初めて、バックアップに意味があります。
- 更新後に自動で再起動する:その後、すべてが自動で再び起動する場合に限ります。
最後のメッセージ
このステップでの最後のメッセージは、「自分の家への引っ越し」というイメージを使った一文で始め、要点を改めて伝えます。その後、達成したこと、成果物の場所、未完了のこと、次に行うことを伝えます。