Files
windmill/SERVER_SETUP.md
Akira 86c0180c3f おっしゃる通り、説明が不十分でした。整理させてください。
/workspace はコンテナ内のパスです。
docker-compose.yml
 の - .:/workspace によって、サーバーのホスト上の ~/windmill/(リポジトリルート)がコンテナ内の /workspace にマウントされています。
a.sh
 はWindmillのWorkerコンテナ内で実行されるので、スクリプト内で使う /workspace はコンテナ内のパスとして正しいです。

ただし、問題は
wmill.yaml
 がリポジトリルートではなく workflows/ サブディレクトリにある ことです。コンテナ内で言うと /workspace/workflows/ に
wmill.yaml
 があるので、スクリプトの cd /workspace を cd /workspace/workflows に変更する必要があります。

修正します:

Analyzed
a.sh#L1-63
なるほど、ポイントは以下の通りです:

cd /workspace → コンテナ内ではリポジトリルートです。しかし
wmill.yaml
 はここにはなく、workflows/ の中にあります。
wmill sync pull は
wmill.yaml
 がある場所で実行しなければ動きません。
git 操作(add, commit, push)はリポジトリルート(/workspace)で行う必要があります。
つまり、wmill sync pull は /workspace/workflows で、git 操作は /workspace で行う、という二段構えが必要です。修正します:

Edited
a.sh
+9
-5
修正しました。最終的なスクリプトの流れを確認します:

Analyzed
a.sh#L1-67
修正後のスクリプトは以下の流れになっています:

cd /workspace/workflows →
wmill.yaml
 がある場所で wmill sync pull を実行(Windmill DB → ファイルに書き出し)
cd /workspace → Gitリポジトリルートに戻って git add / commit / push(ファイル → Gitea)
ここで重要な補足:

/workspace はサーバーのホスト上のパスではなく、コンテナ内のパスです。
docker-compose.yml
 の - .:/workspace により、ホスト上の ~/windmill/(docker-composeを実行した場所)がコンテナ内の /workspace にマウントされます。
つまり、コンテナ内の /workspace/workflows/ = ホスト上の ~/windmill/workflows/ です。
a.sh
 はWindmillのWorkerコンテナ内で実行されるので、コンテナ内パス(/workspace)を使うのが正しいです。
この変更をGiteaにプッシュしますか?プッシュ後、サーバー側で git pull して再度お試しください。
2026-02-19 15:25:08 +09:00

3.8 KiB
Raw Blame History

Windmill サーバー設定手順 (VPS移行版)

本番環境VPSへのデプロイ手順です。 既にTraefikが稼働している環境traefik-net ネットワークが存在する環境)を前提としています。

前提条件

  • サーバー上でTraefikが稼働しており、traefik-net ネットワークが存在すること。
  • ドメイン windmill.keinafarm.net がサーバーのIPに向けられていること。

ステップ1: リポジトリの準備

サーバー上の任意の場所(例: /home/windmill/windmill)にリポジトリをクローンします。 重要: WindmillのGit同期機能を使用するため、このディレクトリパスは重要です。

mkdir -p /home/windmill
cd /home/windmill
git clone https://gitea.keinafarm.net/akira/windmill.git windmill
cd windmill

ステップ2: 環境変数の設定

.env ファイルを作成し、本番用の設定を行います。

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連携済み

docker-compose up -d

ステップ4: Git同期用ワークフローのセットアップ

Windmill上で「登録されたワークフローをGitに保存する」機能を有効にする手順です。

4-1. ワークフロー定義の取り込み(初回のみ)

重要: リポジトリ構成上、wmill.yamlworkflows ディレクトリ内にあります。 Windmillコンテナはデフォルトでルートの /workspace を見ていますが、実際のデータは /workspace/workflows にあるため、同期時にパスを指定する必要があります。

# Windmillサーバーコンテナに入り、wmillコマンドを実行
docker exec -it windmill_server /bin/bash

# コンテナ内で実行
export WM_TOKEN="<ステップ5で取得するトークン>" # まだ無ければGUIで作成してから

# 初回同期workflowsディレクトリを指定して同期
cd /workspace/workflows
wmill sync push --workspace admins --deploy --yes
exit

admins ワークスペースが存在しない場合は、GUIで作成するか、デフォルトのワークスペース名を確認してください。

4-2. 認証情報の準備

Gitへのプッシュを行うため、Giteaのアクセストークンを含むリモートURLを設定します。

cd /home/windmill/windmill
# Giteaのアクセストークンを含んだURLを設定git pushのため
git remote set-url origin https://<username>:<token>@gitea.keinafarm.net/akira/windmill.git

<username><token> は適切なものに置き換えてください。

4-3. Variableの設定

WindmillのWeb画面Variablesで、以下の変数を設定します。

  • WM_TOKEN: WindmillのService TokenSettings -> Tokensで作成Sync 権限が必要です。
  • WM_WORKSPACE: admins (または使用しているワークスペース名)

4-4. スケジュール実行の確認

git_sync フローが登録され、スケジュール設定(git_sync.schedule.yamlも取り込まれていれば、自動的に同期が開始されます。Runsページで実行ログを確認してください。

トラブルシューティング

開発環境(ローカル)での起動

ローカルで起動する場合は、リネームされた docker-compose-dev.yml を使用します:

docker-compose -f docker-compose-dev.yml up -d

ログ確認

docker-compose logs -f