Files
windmill/SERVER_SETUP.md
2026-02-19 16:13:43 +09:00

156 lines
5.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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://<username>:<giteaトークン>@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://<user>:<token>@gitea.keinafarm.net/... の形式であること
```
### 開発環境(ローカル)での起動
ローカルで起動する場合は `docker-compose-dev.yml` を使用します:
```bash
docker-compose -f docker-compose-dev.yml up -d
```
### ログ確認
```bash
docker-compose logs -f
```