# Windmill サーバー設定手順 (VPS移行版) 本番環境(VPS)へのデプロイ手順です。 既にTraefikが稼働している環境(`traefik-net` ネットワークが存在する環境)を前提としています。 ## 前提条件 - サーバー上でTraefikが稼働しており、`traefik-net` ネットワークが存在すること。 - ドメイン `windmill.keinafarm.net` がサーバーのIPに向けられていること。 ## ステップ1: リポジトリの準備 サーバー上の任意の場所(例: `/home/windmill/windmill`)にリポジトリをクローンします。 **重要**: WindmillのGit同期機能を使用するため、このディレクトリパスは重要です。 ```bash mkdir -p /home/windmill cd /home/windmill git clone https://gitea.keinafarm.net/akira/windmill.git windmill cd windmill ``` ## ステップ2: 環境変数の設定 `.env` ファイルを作成し、本番用の設定を行います。 ```bash cp .env .env.production nano .env ``` 以下の内容を確認・修正してください: - `DATABASE_URL`: `postgres://postgres:あなたの強力なパスワード@db/windmill?sslmode=disable` - `POSTGRES_PASSWORD`: 上記と同じパスワード - `WM_IMAGE`: `ghcr.io/windmill-labs/windmill:main` ## ステップ3: 起動 `docker-compose.yml` は本番用に構成されています(Traefik連携済み)。 ```bash docker-compose up -d ``` ## ステップ4: Git同期用ワークフローのセットアップ Windmill上で「登録されたワークフローをGitに保存する」機能を有効にする手順です。 `git_sync` フローが定期実行されると、Windmill DB上のスクリプト/フローの変更がGiteaリポジトリに自動コミット&プッシュされます。 ### 4-1. Windmill APIトークンの取得 1. ブラウザで `https://windmill.keinafarm.net` にログイン 2. 左下の **Settings** → **Account** をクリック 3. **Tokens** セクションで **Create token** をクリック 4. Label(例: `git-sync`)を入力し、作成 5. 表示されたトークンをコピーしておく(後のステップで使用) ### 4-2. ワークフロー定義の取り込み(初回のみ) リポジトリの `workflows/` にある定義ファイルをWindmill DBに取り込みます。 ```bash # Windmillサーバーコンテナに入る docker exec -it windmill_server /bin/bash # コンテナ内で実行:windmill-cli をインストール npm install -g windmill-cli # wmill.yamlがあるディレクトリに移動して sync push cd /workspace/workflows wmill sync push \ --token "<4-1で取得したトークン>" \ --base-url "http://localhost:8000" \ --workspace admins \ --yes exit ``` > **注意**: `wmill sync push` はディスク→DBへの反映です。 > 逆に `wmill sync pull` はDB→ディスクへの反映です。 > スケジュールされた `git_sync` フローが `sync pull` を実行するため、 > **UIで直接スクリプトを修正した場合、次回の sync pull で正しくディスクにも反映されます。** ### 4-3. Gitea認証情報の設定(git push用) `git_sync` フローが Gitea へ `git push` できるよう、サーバー上のリモートURLにGiteaのアクセストークンを含めます。 ```bash # サーバーのホスト側で実行 cd ~/windmill # 現在のリモートURLを確認 git remote -v # Giteaのアクセストークンを含んだURLに変更 git remote set-url origin https://:@gitea.keinafarm.net/akira/windmill.git ``` > **Giteaトークンの作成方法**: Gitea(`https://gitea.keinafarm.net`)にログイン → > 右上アバター → Settings → Applications → Generate New Token ### 4-4. WM_TOKEN Variable の設定 WindmillのWeb画面で、`git_sync` フローが使用する変数を登録します。 1. 左メニューの **Variables** をクリック 2. **+ Variable** をクリック 3. 以下を入力: - **Path**: `u/antigravity/wm_token` - **Value**: 4-1で取得したWindmill APIトークン - **Is Secret**: ✅ オン 4. **Save** をクリック > **注意**: `git_sync` フローのスクリプト(`a.sh`)内で `$WM_TOKEN` として参照されます。 > フローのInput設定で、この変数が正しく紐づけられていることを確認してください。 ### 4-5. git_sync フローの手動実行テスト 1. Windmill UI で **`u/antigravity/git_sync`** フローを開く 2. **Run** ボタンで手動実行 3. **Runs** ページで実行ログを確認 4. 成功すれば、Giteaリポジトリに自動コミットが作成されているはず ### 4-6. スケジュール実行の確認 `git_sync.schedule.yaml` により、2分ごとに自動実行されるスケジュールが登録されています。 左メニューの **Schedules** から、スケジュールが有効になっていることを確認してください。 --- ## トラブルシューティング ### ディスク上のファイルが古い内容に戻る `git_sync` フローが `wmill sync pull`(DB→ディスク)を実行するため、UIで修正した内容がディスクに上書きされます。 スクリプトの修正は **Windmill UI上で直接編集** するのが確実です。 ### git push が失敗する ```bash # サーバー上でリモートURLにトークンが含まれているか確認 cd ~/windmill git remote -v # https://:@gitea.keinafarm.net/... の形式であること ``` ### 開発環境(ローカル)での起動 ローカルで起動する場合は `docker-compose-dev.yml` を使用します: ```bash docker-compose -f docker-compose-dev.yml up -d ``` ### ログ確認 ```bash docker-compose logs -f ```