このページは、まだ未完成です。。。

nicotalk&キャラ素材配布所 http://www.nicotalk.com/charasozai_kt.html (2024年5月16日)

この記事を作った動機

 最近 Gemini Fast 3 を使っていると、Blender において分散コンピューティングみたいなレンダリングの仕方ができることが分かり、気になった。それで、最初は Gemini Fast 3 が提案してきて、Blender - ArchWiki にも掲載されている、BlendNetを試そうと思った。

 しかし、BlendNet のリポジトリを見てみると、実際のところは Blender 2.x.x の古い Blender にしか対応してなさそうな感じであった。私が使っている Blender のバージョンは 5.x.x 以降であったことから、別の物がないか Gemini Fast 3 に提案させてみると、Blender 公式の Flamenco が出てきたため試した。

 そして、とりあえず動くようになるところまで、設定して確かめることができたため、そのことについて記録したい。まだ完全ではなく、途中でレンダリングに失敗したりと、成果物を得られている状態ではない。現状では Flamenco Manager と Flamenco Worker が実際に疎通を取り、Manager 側のクライアントの Blender からジョブを投げると、Worker 側がレンダリングを開始し負荷がかかるところまで確認した。

細かい説明(序章)

全体的な Flamenco 運用イメージ

 以下に構築する環境のイメージを示す。今回はファイル共有サーバと Worker となる PC は物理的に1つに全部がまとまっている事を想定しているが、以下の画像ではわかりやすさのために、ファイル共有サーバやレンダリングを行う Worker farm の PC は物理的に分けている前提で表現している。

全体的なイメージ

前提について

 以下の点については、すでに設定されているものまたは前提として取り扱う。

  • Manager 側と Worker 側の間の設定
    • LAN で物理的に同じネットワークに繋がっているか、VPNによって実質的に同じネットワークに繋がっている。
    • SSH の設定が済ませてあり、LAN で物理的に同じネットワークに繋がっているときに疎通が取れる。
    • ping によって物理的に同じネットワークに繋がっているときに疎通が取れる。
    • Worker 側は GNOME RDP の設定が済ませてあり、Remmina クライアントにより LAN で物理的に同じネットワークに繋がっているときに疎通が取れる。
    • SFTP によるファイル共有が可能な状態になっている。
    • どちらも Linux 環境がセットアップされてあり、インターネットへの接続が確認できている。
    • firewalld をファイアウォールとして使っている。
  • VPN での接続がある場合について
    • SMB ではなく SFTP によってファイルのやり取りを行う。
    • MTU サイズが十分小さく設定されており、ネットワーク障害が発生しないように設定されている。(MTUサイズ1000にするなど)
    • 高遅延を前提とする。
  • Manager 側の視点から設定作業などを行い、Flamenco Manager と Blender を立ち上げた状態で作業する。
  • Manager 側と Worker 側は VPN によって遠隔地で通信を行う。

単語の解釈

Worker

 Flamenco において実際にレンダリング処理をする端末を、Flamenco公式ドキュメントなどを見た結果、Workerと呼ぶと私は現時点(2026/3/22)では解釈している。

Manager

 Flamenco において実際に Blender で対象のプロジェクトを開き、レンダリング処理を命令する端末を、Flamenco公式ドキュメントなどを見た結果、Managerと呼ぶと私は現時点(2026/3/22)では解釈している。

やり方 (Worker 側)

 GTX1080Ti など古い環境を使っている場合は、blender の実行バイナリについて工夫が必要である。(Blender 5.x.x において、GTX 1080Ti(Pascal) を Cycles レンダリングで使えるようにしたい)

必要なパッケージをインストールする

yay -S blender

flamenco-worker を手動でインストール

 設定を保存するディレクトリとで作成した場所と同じ場所にDownload | Flamencoからダウンロードしてきたflamenco-workerのバイナリを配置する。設定ファイルとバイナリを配置するディレクトリは任意の場所で良いが、一度作成すると Systemd でそこを絶対パスで指定したりしてあとから変えるのは面倒くさいので、作成場所に注意すること。

専用のネットワーク共有フォルダを作成する

 Client(Managerを動かしている側) と Worker側で絶対パスが一致する必要があるため、工夫が必要である。今回の例では、専用に共有するフォルダを/mnt配下に新規作成する。

# 適宜 chmod chown で権限や所有者情報を変更し、flamenco-worker や sshfs で接続する manager 側 PC が読み書きできるようにしておく。
mkdir /mnt/FlamencoRenderPlace

flamenco-workerを設定する

 flamenco-worker用の設定ファイルを配置しておくディレクトリを作成し、Worker Configuration | Flamencoを参考に以下のようにして設定をflamenco-worker.yamlとして保存する。

manager_url: http://[managerServerIP:managerServerPort]/
task_types: [blender, ffmpeg, file-management, misc]
restart_exit_code: 47

# Optional advanced option, available on Linux only:
oom_score_adjust: 500

flamenco-workerを起動する Systemd サービスを用意

 /etc/systemd/system/flamenco-worker.serviceとして配下に以下を配置する。flamenco-workerを設定するのところで、flamenco-worker.yamlを配置したフォルダーをWorkingDirectory=の項目に指定する。ExecStart=に指定するflamenco-workerのバイナリも絶対パスで手動で配置したものを指定する。

[Unit]
Description="Start Flamenco Worker for blender rendering."
#After=

[Service]
WorkingDirectory=/Path/To/Flamenco/Worker/config/folder
Type=simple
User=[UserNameWhoUseTheWorker]
ExecStart=/Path/To/Flamenco/Worker/config/folder/flamenco-worker
Restart=on-failure

[Install]
WantedBy=multi-user.target

flamenco-workerを起動(有効化)する

sudo systemctl enable --now flamenco-worker

やり方 (Manager 側)

必要なパッケージをインストールする

yay -S sshfs blender

flamenco-manager を手動でインストール

 設定を保存するディレクトリとで作成した場所と同じ場所にDownload | Flamencoからダウンロードしてきたflamenco-managerのバイナリを配置する。設定ファイルとバイナリを配置するディレクトリは任意の場所で良いが、一度作成すると Systemd でそこを絶対パスで指定したりしてあとから変えるのは面倒くさいので、作成場所に注意すること。

専用のネットワーク共有フォルダをマウントする

 Client(Managerを動かしている側) と Worker側で絶対パスが一致する必要があるため、工夫が必要である。今回の例では、専用に共有するフォルダを/mnt配下に新規作成する。

ファイヤーウォールの設定をする

 今回は、58080番に flamenco を動作させることを仮定して以下のように設定する。

# 適宜既存の設定次第で、--zoneオプションなどをつける必要がある。
# 今回は Manager として機能する PC は firewalld デフォルトの public ゾーンを使っていることを仮定している。
sudo firewall-cmd --add-port=58080/tcp --permanent
sudo firewall-cmd --add-port=58080/udp --permanent
sudo systemctl restart firewalld

flamenco-managerを設定する

 flamenco-manager用の設定を配置しておくディレクトリを作成し、flamenco-manager -write-configを実行することでflamenco-manager.yamlのテンプレートを生成させる。

flamenco-manager -write-config
# 2026-03-26T19:37:59+09:00 INF starting Flamenco arch=amd64 git=f7aef5bfc os=linux osDetail="Arch Linux (6.18.13-arch1-1)" releaseCycle=release version=3.5
# 2026-03-26T19:37:59+09:00 INF This seems to be your first run of Flamenco! A webbrowser will open to help you set things up.
# 2026-03-26T19:37:59+09:00 INF configuration file written filename=flamenco-manager.yaml
# 2026-03-26T19:37:59+09:00 INF stopping the Flamenco Manager process

ls
# flamenco-manager.yaml

flamenco-managerを起動する Systemd サービスを用意

 /etc/systemd/system/flamenco-manager.serviceとして配下に以下を配置する。flamenco-managerを設定するのところで、flamenco-manager.yamlを配置したディレクトリをWorkingDirectory=として指定する。ExecStart=に指定するflamenco-managerのバイナリも絶対パスで手動で配置したものを指定する。

[Unit]
Description="Start Flamenco Manager for blender rendering."
#After=

[Service]
WorkingDirectory=/Path/To/Flamenco/Manager/config/folder
Type=simple
User=[UserNameWhoUseTheManager]
ExecStart=/Path/To/Flamenco/Manager/config/folder/flamenco-manager
Restart=on-failure

[Install]
WantedBy=multi-user.target

flamenco-managerを起動(有効化)する

sudo systemctl enable --now flamenco-manager

ブラウザでフロントエンドを開いて初期設定を行う。

 今回は、58080番を指定したので、http://localhost:58080に好みのブラウザでアクセスする。flamenco-managerは初回起動時に、ネットワークドライブの manager と worker で共有する場所のパスと、manager 側の PC に入っている Blender バイナリについて聞いてくるので、適宜設定する。

flamenco-manager初期設定画面 sshfsのパスを指定
flamenco-manager初期設定画面 blenderのパスを指定
flamenco-manager 起動したての様子

アドオンをインストール

 Flamenco には、Blender と提携するための専用のアドオンがあるため、Flamenco のフロントエンドからアドオンをダウンロードしてインストールする。flamenco-managerのフロントエンドからダウンロードする zip ファイルは展開せずそのまま Blender の設定画面で読み込ませる。ダウンロードしたファイルは、ユーザのホームディレクトリからして、ダウンロードされたファイルが配置される場所にあるものとする。

アドオン本体のダウンロード

flamenco-manager アドオンのインストール
flamenco-manager アドオンのインストール

Blender にアドオンをインストール

設定を開く
アドオンの設定画面を開き、ローカルインストールを選択
ダウンロードしたアドオンファイルを指定
flamencoのアドオンがインストールされたことを確認し、ポート番号を書き換えmanagerを起動した状態で更新ボタンを押す
flamencoのJOBを出すUIが現れることを確認する

 

躓いたこと

AUR にある AUR (en) - flamenco はインストールに失敗する

 Download | Flamencoから直接ダウンロードして展開した物を使うのが良いと思われる。いろいろ試したところflamenco-worker-が動作しないで書いたように、AUR にある Flamenco を使うことは、Flamenco 開発元の思想と相性が極端に悪く解決しない問題があるためやめたほうがいいという結論に今回はなった。

makepkg -si
==> パッケージを作成: flamenco 3.5-1 (2026年03月21日 23時57分59秒)
==> ランタイムの依存関係を確認...
==> ビルドタイムの依存関係を確認...
==> ソースを取得...
  -> flamenco git リポジトリを複製...
Cloning into bare repository '/home/main/work/flamenco/flamenco'...
fatal: unable to access 'https://projects.blender.org/studio/flamenco.git/': The requested URL returned error: 403
==> エラー: flamenco git リポジトリのダウンロードに失敗
    中止...

 記事を書くために問題を再現しようとしたところ、障害が直っていた。

makepkg -si
==> パッケージを作成: flamenco 3.5-1 (2026年03月22日 02時50分28秒)
==> ランタイムの依存関係を確認...
==> ビルドタイムの依存関係を確認...
==> ソースを取得...
  -> flamenco git リポジトリを複製...
Cloning into bare repository '/home/main/work/flamenco/flamenco'...
remote: Enumerating objects: 46487, done.
^Cfetch-pack: unexpected disconnect while reading sideband packet

==> エラー: Aborted by user! Exiting...

SMB でファイル共有すると限界がある

 私が当初 Flamenco を試したときには、ファイル共有に SMB を使っていた。しかしそれだと、VPN経由でファイルをやり取りする構成で、VPN経由で Worker 側と Manager 側が隔たれている環境だと、限界があるらしく Flamenco の動作が固まってしまい、Blender が応答しなくなったり、強制終了にも応じなくなるなどの問題が起こり、不安定なことがわかった。

 そのため、解決策としてそもそも SMB を使わず、SFTP を使うようにした。SFTP では、SMB とはことなり、高遅延なネットワーク環境においても、ある程度安定して動作することが確認できた。SFTP は、コマンドライン等で SMB と同じようにネットワークドライブとしてマウントする方法を今回使っている。

Worker 側で特定の Blender を実行させる

 環境によっては AUR から直接インストールした blender が使えず、GPU が正しく動作する構成にした Blender をリンダリングに使うよう指定する必要があることがある。やり方としては以下のことが考えられた。

  • Blender の手動インストールと設定を行い、Flamenco の設定でそのバイナリを使うように誘導する。
    • 既存の Blender と共存するために、blender-manual-installなどの名前でコマンドラインから呼び出せるようにし、それを Flamenco の Worker の項目で設定する。
    • Flamenco 起動時だけ特定の PATH を設定し、優先的に意図した Blender バイナリが、blenderコマンドを入力したときに優先的に使われるように仕向ける。

flamenco-managerflamenco-worker の設定ファイルの場所

 flamenco-manager は基本的にコマンドが実行されたカレントディレクトリを起点として、flamenco-manager.yamlを探しているようであり、決まった配置場所はないようである。flamenco-workerについても設定ファイルがflamenco-worker.yamlになり内容が worker 専用になる以外は、コマンドが実行されたカレントディレクトリを起点として設定ファイルを探しに行くようである。Systemd のサービスにおいては、このことに配慮して、flamenco-managerflamenco-workerを実行する際のカレントディレクトリがflamenco-manager.yamlflamenco-worker.yamlの設定ファイルが見つけられるよう、それらファイルが存在するフォルダ内になるようにする。

flamenco-worker が動作しない (いくら設定してもパスが勝手に/usr/binを起点にしたり変なパスを使おうとする)

 いくら、flamenco-manager側から正しいパスを設定しても内部で正しく解釈されず不正なパスを利用しようとしてしまう挙動が見受けられた。この問題に関しては、Flamenco の Worker と Manager を AUR (en) - flamencoAUR (en) - flamenco でインストールするとバイナリが/usr/bin配下に配置されてしまい、そこを起点としてパスを組み立てようとする Flamenco そのものの動作に起因していると思われ、いくら設定を変えても施しようがなさそうなことがわかった。

 この問題の解決策に関しては、flamenco-managerを設定するflamenco-workerを設定するの項目で作成したディレクトリ内に直接Download | Flamencoからダウンロードしてきたflamenco-managerflamenco-workerのバイナリを配置する以上の対策はなさそうである。以下は問題発生時の Worker PC 側のログである。

./flamenco-worker 
# ...
# 2026-03-26T22:16:09+09:00 WRN unable to obtain task for unknown reason error="{\"code\":500,\"message\":\"internal error appending to task log: creating directory: mkdir /usr/bin/mnt: permission denied\"}\n" code=500
# 2026-03-26T22:16:19+09:00 WRN unable to obtain task for unknown reason error="{\"code\":500,\"message\":\"internal error appending to task log: creating directory: mkdir /usr/bin/mnt: permission denied\"}\n" code=500
# 2026-03-26T22:16:29+09:00 WRN unable to obtain task for unknown reason error="{\"code\":500,\"message\":\"internal error appending to task log: creating directory: mkdir /usr/bin/mnt: permission denied\"}\n" code=500
# 2026-03-26T22:16:40+09:00 WRN unable to obtain task for unknown reason error="{\"code\":500,\"message\":\"internal error appending to task log: creating directory: mkdir /usr/bin/mnt: permission denied\"}\n" code=500
# 2026-03-26T22:16:50+09:00 WRN unable to obtain task for unknown reason error="{\"code\":500,\"message\":\"internal error appending to task log: creating directory: mkdir /usr/bin/mnt: permission denied\"}\n" code=500
# ...

ジョブの出し方にパスの制限がある

 Blender から Flamenco の拡張機能を使って Job を出すときに、レンダリング結果の出力先を Manager 側の PC のローカルにしてしまうと、魔法のようにパスが解決されるわけではなく、Worker 側の PC にそのような場所は存在しないとして Blender がレンダリングする前に即座にクラッシュしてしまうことがわかった。

 Blender からジョブを出すときも、Manager 側の PC と Worker 側の PC が両方同じパスでアクセスできるネットワークドライブ上のフォルダを、レンダリング結果の出力先として指定しなければならないようである。以下は問題発生時の Worker PC 側のログである。

./flamenco-worker 
# 2026-03-26T22:44:59+09:00 INF starting Flamenco Worker arch=amd64 git=51a41a19 os=linux osDetail="Arch Linux (6.19.8-arch1-1)" pid=1198634 releaseCycle=release version=3.8.2
# 2026-03-26T22:44:59+09:00 INF will load configuration from these paths credentials=/home/UserNameWorkerSide/.local/share/flamenco/flamenco-worker-credentials.yaml main=/home/UserNameWorkerSide/scripts/flamenco/flamenco-worker.yaml
# 2026-03-26T22:45:00+09:00 INF Blender found on this system, it will be used unless the Flamenco Manager configuration specifies a different path. path=/usr/bin/blender version="Blender 5.0.1"
# 2026-03-26T22:45:00+09:00 INF FFmpeg found on this system path=/usr/bin/ffmpeg version=n8.1
# 2026-03-26T22:45:00+09:00 INF executables will be run with OOM score adjustment oom_score_adjust=500
# 2026-03-26T22:45:00+09:00 INF loaded configuration config={"manager_url":"http://192.168.1.xx:58080/","oom_score_adjust":500,"restart_exit_code":47,"task_types":["blender","ffmpeg","file-management","misc"],"worker_name":""}
# 2026-03-26T22:45:00+09:00 INF loaded credentials filename=/home/UserNameWorkerSide/.local/share/flamenco/flamenco-worker-credentials.yaml
# 2026-03-26T22:45:00+09:00 INF signing on at Manager manager=http://192.168.1.xx:58080/ name=dataSrv softwareVersion=3.8.2 taskTypes=["blender","ffmpeg","file-management","misc"]
# 2026-03-26T22:45:00+09:00 INF manager accepted sign-on startup_state=awake
# 2026-03-26T22:45:00+09:00 INF opening database dsn=/home/UserNameWorkerSide/.local/share/flamenco/flamenco-worker.sqlite
# 2026-03-26T22:45:00+09:00 INF state change curState=starting newState=awake
# 2026-03-26T22:47:27+09:00 INF obtained task task={"commands":[{"name":"blender-render","parameters":{"args":["--scene","Scene","--render-output","/home/UserName/Documents/free/aaa/2026-03-26_224801/######","--render-format","PNG","--render-frame","1"],"argsBefore":[],"blendfile":"/mnt/FlamencoRenderPlace/blenderRender/jobs/aaa/untitled1.flamenco.blend","exe":"blender","exeArgs":"-b -y"},"total_step_count":1}],"job":"b4da0a35-86a8-46fe-b946-888c7085412f","job_priority":50,"job_type":"simple-blender-render","name":"render-1","priority":50,"status":"active","steps_completed":0,"steps_total":1,"task_type":"blender","uuid":"66d34b02-4498-4f7c-b8d2-c5dcf30be050"}
# 2026-03-26T22:47:27+09:00 INF starting task job=b4da0a35-86a8-46fe-b946-888c7085412f task=66d34b02-4498-4f7c-b8d2-c5dcf30be050 taskType=blender
# 2026-03-26T22:47:27+09:00 INF running Flamenco command command=blender-render parameters={"args":["--scene","Scene","--render-output","/home/UserName/Documents/free/aaa/2026-03-26_224801/######","--render-format","PNG","--render-frame","1"],"argsBefore":[],"blendfile":"/mnt/FlamencoRenderPlace/blenderRender/jobs/aaa/untitled1.flamenco.blend","exe":"blender","exeArgs":"-b -y"} task=66d34b02-4498-4f7c-b8d2-c5dcf30be050
# 2026-03-26T22:47:27+09:00 INF going to run: blender -b -y /mnt/FlamencoRenderPlace/blenderRender/jobs/aaa/untitled1.flamenco.blend --scene Scene --render-output '/home/UserName/Documents/free/aaa/2026-03-26_224801/######' --render-format PNG --render-frame 1 command=blender-render task=66d34b02-4498-4f7c-b8d2-c5dcf30be050
# 2026-03-26T22:47:28+09:00 INF blender-render: frame rendered command=blender-render duration=00:00.87 task=66d34b02-4498-4f7c-b8d2-c5dcf30be050
# 2026-03-26T22:47:29+09:00 ERR command exited abnormally command=blender-render exitCode=1 pid=1201254 task=66d34b02-4498-4f7c-b8d2-c5dcf30be050
# 2026-03-26T22:47:29+09:00 ERR command exited abnormally command=blender-render exitCode=1 pid=1201254 task=66d34b02-4498-4f7c-b8d2-c5dcf30be050
# 2026-03-26T22:47:29+09:00 ERR command exited abnormally error="command exited abnormally with code 1" command=blender-render exitCode=1 task=66d34b02-4498-4f7c-b8d2-c5dcf30be050
# 2026-03-26T22:47:29+09:00 WRN error executing task error="command exited abnormally with code 1" task={"commands":[{"name":"blender-render","parameters":{"args":["--scene","Scene","--render-output","/home/UserName/Documents/free/aaa/2026-03-26_224801/######","--render-format","PNG","--render-frame","1"],"argsBefore":[],"blendfile":"/mnt/FlamencoRenderPlace/blenderRender/jobs/aaa/untitled1.flamenco.blend","exe":"blender","exeArgs":"-b -y"},"total_step_count":1}],"job":"b4da0a35-86a8-46fe-b946-888c7085412f","job_priority":50,"job_type":"simple-blender-render","name":"render-1","priority":50,"status":"active","steps_completed":0,"steps_total":1,"task_type":"blender","uuid":"66d34b02-4498-4f7c-b8d2-c5dcf30be050"}

blender バイナリパスの指定

worker と manager のポート番号の指定

パス指定がシビア

共有ファイルのパスを合わせる必要がある

GNOME の SFTP のパスは指定できない

関係ありそうな記事

使った画像素材など

参考にしたサイトとか