Blender op afstand renderen met Flamenco

Wanneer het renderen van zware scènes in Blender te veel van de tijd van je team begint te vergen, heb je twee opties: of de computer van elk teamlid upgraden of rendering uitbesteden aan een speciale renderfarm. Veel bedrijven bieden kant-en-klare renderoplossingen, maar als je volledige controle over de infrastructuur nodig hebt, zijn deze oplossingen misschien niet de meest betrouwbare optie.
Een alternatieve aanpak is het creëren van een hybride infrastructuur. In deze opzet houdt u uw gegevensopslag en rendering farm management binnen uw bestaande infrastructuur. Het enige element dat zich daarbuiten zou bevinden, zijn de gehuurde GPU-servers waarop de rendering wordt uitgevoerd.
In het algemeen ziet de rendering farm infrastructuur voor Blender er als volgt uit:

Hier hebben we een centrale Manager node die alle processen organiseert. Het ontvangt rendertaken van gebruikers via een specifieke Blender Add-on en verplaatst alle benodigde bestanden naar Shared Storage. Vervolgens verdeelt de Manager de taken naar Worker nodes. Zij ontvangen een job die alle informatie bevat over waar de Worker bestanden kan vinden om te renderen en wat te doen met de verkregen resultaten. Om dit schema te implementeren kun je gebruik maken van een volledig vrije en open-source applicatie genaamd Flamenco. In deze handleiding laten we zien hoe je alle knooppunten kunt voorbereiden, vooral de Manager en Worker.
Het knooppunt Storage heeft geen specifieke vereisten. Het kan gebruikt worden met elk besturingssysteem dat SMB/CIFS of NFS protocollen ondersteunt. De enige vereiste is dat de opslagmap gemount en toegankelijk moet zijn voor het besturingssysteem. In jouw infrastructuur kan dit elke gedeelde map zijn die toegankelijk is voor alle knooppunten.
Elk knooppunt heeft verschillende IP-adressen en de Wireguard VPN server wordt een centraal punt dat ze samenbrengt in één L2-netwerk. Met deze server, die zich op de externe perimeter bevindt, kun je werken zonder wijzigingen aan te brengen in het bestaande NAT-beleid.

Voor dit voorbeeld maken we de volgende gemengde configuratie:
- 10.0.0.1 - Wireguard VPN server (virtuele server van een willekeurige infrastructuurprovider) met een extern IP;
- 10.0.0.2 - Worker node (dedicated server van LeaderGPU) met een extern IP;
- 10.0.0.3 - Manager node (virtuele server in het kantoornetwerk) achter NAT;
- 10.0.0.4 - Storage node (virtuele server in het kantoornetwerk) achter NAT;
- 10.0.0.5 - User node (consumentenlaptop in het kantoornetwerk) achter NAT.
Stap 1. Draadbeschermer
VPN-server
U kunt Wireguard handmatig installeren en configureren met behulp van een officiële handleiding en voorbeelden. Er is echter een eenvoudiger alternatief: een onofficieel script van software engineer uit Parijs (Stanislas aka angristan).
Download het script van GitHub:
wget https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh
Maak het uitvoerbaar:
sudo chmod +x wireguard-install.sh
Uitvoeren:
sudo ./wireguard-install.sh
Volg de instructies en stel het IP-adresbereik in 10.0.0.1/24. Het systeem zal je vragen om onmiddellijk een configuratiebestand aan te maken voor de eerste client. Volgens het plan zal deze client het werkknooppunt zijn met de naam Worker en het adres 10.0.0.2. Wanneer het script is voltooid, verschijnt er een configuratiebestand in de hoofdmap: /root/wg0-client-Worker.conf.
Voer het volgende commando uit om deze configuratie te bekijken:
cat /home/usergpu/wg0-client-Worker.conf
[Interface]
PrivateKey = [CLIENT_PRIVATE_KEY]
Address = 10.0.0.2/32,fd42:42:42::2/128
DNS = 1.1.1.1,1.0.0.1
[Peer]
PublicKey = [SERVER_PRIVATE_KEY]
PresharedKey = [SERVER_PRESHARED_KEY]
Endpoint = [IP_ADDRESS:PORT]
AllowedIPs = 10.0.0.0/24,::/0
Voer het installatiescript opnieuw uit om nog een client aan te maken. Voeg op deze manier alle toekomstige clients toe en tot slot kun je controleren of alle configuratiebestanden zijn aangemaakt:
cd ~/
ls -l | grep wg0
-rw-r--r-- 1 root root 529 Jul 14 12:59 wg0-client-Manager.conf -rw-r--r-- 1 root root 529 Jul 14 12:59 wg0-client-Storage.conf -rw-r--r-- 1 root root 529 Jul 14 12:59 wg0-client-User.conf -rw-r--r-- 1 root root 529 Jul 14 12:58 wg0-client-Worker.conf
VPN-clients
VPN-clients omvatten alle knooppunten die verbonden moeten worden met een enkel netwerk. In onze handleiding verwijst dit naar het beheerknooppunt, opslagknooppunt, clientknooppunt (als Linux wordt gebruikt) en worker knooppunten. Als de VPN-server op een worker node draait, hoeft deze niet als client te worden geconfigureerd (deze stap kan worden overgeslagen).
Werk de pakketcache-repository bij en installeer vervolgens Wireguard en CIFS-ondersteuningspakketten:
sudo apt update && sudo apt -y install wireguard cifs-utils
Verhoog rechten naar superuser:
sudo -i
Open de Wireguard configuratiemap:
cd /etc/wireguard
Voer het commando umask uit zodat alleen de superuser toegang heeft tot de bestanden in deze directory:
umask 077
Genereer een privésleutel en sla deze op in een bestand:
wg genkey > private-key
Genereer een openbare sleutel met behulp van de privésleutel:
wg pubkey > public-key < private-key
Maak een configuratiebestand:
nano /etc/wireguard/wg0.conf
Plak je eigen configuratie, gemaakt voor deze client:
[Interface]
PrivateKey = [CLIENT_PRIVATE_KEY]
Address = 10.0.0.2/32,fd42:42:42::2/128
DNS = 1.1.1.1,1.0.0.1
[Peer]
PublicKey = [SERVER_PRIVATE_KEY]
PresharedKey = [SERVER_PRESHARED_KEY]
Endpoint = [SERVER_IP_ADDRESS:PORT]
AllowedIPs = 10.0.0.0/24,::/0
PersistentKeepalive = 1
Vergeet niet de optie PersistentKeepalive = 1 toe te voegen (waarbij 1 staat voor 1 seconde) op elk knooppunt dat zich achter NAT bevindt. U kunt deze periode experimenteel kiezen. De aanbevolen waarde door de auteurs van Wireguard is 25. Sla het bestand op en sluit het af met de sneltoets CTRL + X en de toets Y om te bevestigen.
Als je internetverkeer wilt doorlaten, stel dan AllowedIPs in op 0.0.0.0/0,::/0
Log vervolgens uit met het root-account:
exit
Start de verbinding met systemctl:
sudo systemctl start wg-quick@wg0.service
Controleer of alles in orde is en de service succesvol is gestart:
sudo systemctl status wg-quick@wg0.service
● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0 Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; vendor preset: enabled) Active: active (exited) since Mon 2023-10-23 09:47:53 UTC; 1h 45min ago Docs: man:wg-quick(8) man:wg(8) https://www.wireguard.com/ https://www.wireguard.com/quickstart/ https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8 https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8 Process: 4128 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS) Main PID: 4128 (code=exited, status=0/SUCCESS) CPU: 76ms
Als je een foutmelding tegenkomt zoals "resolvconf: opdracht niet gevonden" in Ubuntu 22.04, maak dan gewoon een symboolkoppeling:
sudo ln -s /usr/bin/resolvectl /usr/local/bin/resolvconf
Schakel de nieuwe service in om automatisch verbinding te maken terwijl het besturingssysteem opstart:
sudo systemctl enable wg-quick@wg0.service
Nu kun je de connectiviteit controleren door echopakketten te versturen:
ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data. 64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=145 ms 64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=72.0 ms 64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=72.0 ms 64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=72.2 ms --- 10.0.0.1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev = 71.981/90.230/144.750/31.476 ms
Stap 2. NAS-knooppunt
Maak verbinding met de VPN-server met behulp van de handleiding uit stap 1. Installeer vervolgens de Samba-pakketten voor de server en client:
sudo apt install samba samba-client
Maak een back-up van je standaardconfiguratie:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
Maak een map aan die zal worden gebruikt als share:
sudo mkdir /mnt/share
Maak een nieuwe gebruikersgroep aan die toegang krijgt tot de nieuwe share:
sudo groupadd smbusers
Voeg een bestaande gebruiker toe aan de aangemaakte groep:
sudo usermod -aG smbusers user
Stel een wachtwoord in voor deze gebruiker. Dit is een noodzakelijke stap omdat het systeemwachtwoord en het Samba-wachtwoord verschillende entiteiten zijn:
sudo smbpasswd -a $USER
Verwijder de standaardconfiguratie:
sudo rm /etc/samba/smb.conf
En maak een nieuwe:
sudo nano /etc/samba/smb.conf
[global]
workgroup = WORKGROUP
security = user
map to guest = bad user
wins support = no
dns proxy = no
[private]
path = /mnt/share
valid users = @smbusers
guest ok = no
browsable = yes
writable = yes
Sla het bestand op en test de nieuwe parameters:
testparm -s
Start beide Samba-services opnieuw op:
sudo service smbd restart
sudo service nmbd restart
Geef tot slot de toestemming om de map te delen:
sudo chown user:smbusers /mnt/share
Stap 3. Samba client-verbinding
Alle knooppunten in Flamenco gebruiken een gedeelde map op /mnt/flamenco. U moet deze map op elk knooppunt mounten voordat u de flamenco-client of flamenco-manager scripts uitvoert. In dit voorbeeld gebruiken we een worker node gehost op LeaderGPU met de gebruikersnaam usergpu. Vervang deze gegevens door uw eigen gegevens als ze afwijken.
Maak een verborgen bestand aan waarin u de referenties van SMB-shares kunt opslaan:
nano /home/usergpu/.smbcredentials
Typ deze twee strings:
username=user # your Samba username
password=password # your Samba password
Sla dit bestand op en sluit af. Beveilig dit bestand vervolgens door de toegangsrechten te wijzigen:
sudo chmod 600 /home/usergpu/.smbcredentials
Maak een nieuwe map aan die kan worden gebruikt als koppelpunt voor de externe opslag:
sudo mkdir /mnt/flamenco
En maak de gebruiker eigenaar van deze map:
sudo chown usergpu:users /mnt/flamenco
Het enige wat overblijft is om de netwerkdirectory automatisch te laten mounten:
sudo nano /etc/systemd/system/mnt-flamenco.mount
[Unit]
Description=Mount Remote Storage
[Mount]
What=//10.0.0.4/private
Where=/mnt/flamenco
Type=cifs
Options=mfsymlinks,credentials=/home/usergpu/.smbcredentials,uid=usergpu,gid=users
[Install]
WantedBy=multi-user.target
Voeg twee regels toe aan je VPN-configuratie in de sectie [Interface]:
sudo -i
nano /etc/wireguard/wg0.conf
…
PostUp = ping 10.0.0.4 -c 4 && systemctl start mnt-flamenco.mount
PostDown = systemctl stop mnt-flamenco.mount
…
Herstart de server:
sudo shutdown -r now
Controleer of de services zijn geladen en of de gedeelde map is gemount:
df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 35G 3.3M 35G 1% /run
/dev/sda2 99G 18G 77G 19% /
tmpfs 174G 0 174G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 35G 8.0K 35G 1% /run/user/1000
//10.0.0.4/private 40G 9.0G 31G 23% /mnt/flamenco
Stap 4. Beheerknooppunt
Zet een VPN-verbinding op met behulp van de handleiding uit stap 1. Stop de VPN-service voordat u verdergaat:
sudo systemctl stop wg-quick@wg0.service
Laten we ons voorbereiden. Automatisch mounten vereist hulpprogramma's voor het CIFS-protocol:
sudo apt -y install cifs-utils
De volgende belangrijke stap is het installeren van Blender. Je kunt dit doen met de standaard APT pakketbeheerder, maar dit zal waarschijnlijk een van de oudere versies installeren (minder dan v3.6.4). Laten we Snap gebruiken om de nieuwste versie te installeren:
sudo snap install blender --classic
Controleer de geïnstalleerde versie met het volgende commando:
blender --version
Blender 4.4.3
build date: 2025-04-29
build time: 15:12:13
build commit date: 2025-04-29
build commit time: 14:09
build hash: 802179c51ccc
build branch: blender-v4.4-release
build platform: Linux
build type: Release
…
Als je een foutmelding krijgt die aangeeft dat er bibliotheken ontbreken, installeer ze dan gewoon. Al deze bibliotheken zijn opgenomen in het XOrg-pakket:
sudo apt -y install xorg
Download de toepassing:
wget https://flamenco.blender.org/downloads/flamenco-3.7-linux-amd64.tar.gz
Pak het gedownloade archief uit:
tar xvfz flamenco-3.7-linux-amd64.tar.gz
Ga naar de aangemaakte map:
cd flamenco-3.7-linux-amd64/
En start Flamenco voor de eerste keer:
./flamenco-manager
Open het volgende adres in je webbrowser: http://10.0.0.3:8080/. Klik op de knop Let's go. Typ /mnt/flamenco in het verplichte veld en klik vervolgens op Next:

Flamenco zal proberen het Blender uitvoerbare bestand te lokaliseren. Als je Blender hebt geïnstalleerd vanaf Snap, zal het pad /snap/bin/blender zijn. Controleer dit punt en klik op Next:

Controleer de samenvatting en klik op Confirm:

Ga terug naar de SSH-sessie en gebruik de sneltoets Ctrl + C om de toepassing te onderbreken. De eerste start genereert het configuratiebestand flamenco-manager.yaml. Laten we wat opties toevoegen aan de secties variables en blenderArgs:
nano flamenco-manager.yaml
# Configuration file for Flamenco.
# For an explanation of the fields, refer to flamenco-manager-example.yaml
#
# NOTE: this file will be overwritten by Flamenco Manager's web-based configuration system.
#
# This file was written on 2023-10-17 12:41:28 +00:00 by Flamenco 3.7
_meta:
version: 3
manager_name: Flamenco Manager
database: flamenco-manager.sqlite
listen: :8080
autodiscoverable: true
local_manager_storage_path: ./flamenco-manager-storage
shared_storage_path: /mnt/flamenco
shaman:
enabled: true
garbageCollect:
period: 24h0m0s
maxAge: 744h0m0s
extraCheckoutPaths: []
task_timeout: 10m0s
worker_timeout: 1m0s
blocklist_threshold: 3
task_fail_after_softfail_count: 3
variables:
blender:
values:
- platform: linux
value: blender
- platform: windows
value: blender
- platform: darwin
value: blender
storage:
values:
is_twoway: true
values:
- platform: linux
value: /mnt/flamenco
- platform: windows
value: Z:\
- platform: darwin
value: /Volumes/shared/flamenco
blenderArgs:
values:
- platform: all
value: -b -y -E CYCLES -P gpurender.py
Het eerste extra blok beschrijft extra tweerichtingsvariabelen, die nodig zijn voor multiplatform farms. Dit lost het belangrijkste probleem op met slashes en paden. In Linux gebruiken we het forward slash symbool (/) als scheidingsteken, maar in Windows gebruiken we het backslash symbool (^). Hier maken we de vervangingsregel voor alle beschikbare alternatieven: Linux, Windows en macOS (Darwin).
Wanneer je een netwerkshare koppelt in Windows, moet je een stationsletter kiezen. Onze Storage is bijvoorbeeld gekoppeld met de letter Z:. De vervangingsregel vertelt het systeem dat voor het Windows-platform het pad /mnt/flamenco zich op Z:\ bevindt. Voor macOS zal dit pad /Volumes/shared/flamenco zijn.
Kijk naar het tweede toegevoegde blok. Dit instrueert Blender om Cycles rendering engine te gebruiken en roept een eenvoudig Python script, gpurender.py, aan wanneer Blender wordt uitgevoerd. Dit is een eenvoudige truc om de GPU te selecteren in plaats van de CPU. Er is geen standaard optie om dit direct te doen. Je kunt niet blender --use-gpu of iets dergelijks aanroepen. Je kunt echter wel een extern Python script aanroepen met de -P optie. Dit commando instrueert de Worker om een script te vinden in de lokale directory en het uit te voeren wanneer de toegewezen job de Blender executable aanroept.
Nu kunnen we de controle over de applicatie delegeren aan het systemd init subsysteem. Laten we het systeem informeren over de locatie van de werkmap, het uitvoerbare bestand en de gebruikersrechten die nodig zijn voor het starten. Maak een nieuw bestand:
sudo nano /etc/systemd/system/flamenco-manager.service
Vul het met de volgende strings:
[Unit]
Description=Flamenco Manager service
[Service]
User=user
WorkingDirectory=/home/user/flamenco-3.7-linux-amd64
ExecStart=/home/user/flamenco-3.7-linux-amd64/flamenco-manager
Restart=always
[Install]
WantedBy=multi-user.target
Sla het bestand op en sluit de nano-teksteditor af.
sudo systemctl daemon-reload
sudo systemctl start flamenco-manager.service
sudo systemctl status flamenco-manager.service
● flamenco-manager.service - Flamenco Manager service Loaded: loaded (/etc/systemd/system/flamenco-manager.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2023-10-17 11:03:50 UTC; 7s ago Main PID: 3059 (flamenco-manage) Tasks: 7 (limit: 4558) Memory: 28.6M CPU: 240ms CGroup: /system.slice/flamenco-manager.service └─3059 /home/user/flamenco-3.7-linux-amd64/flamenco-manager
Schakel automatisch starten in wanneer het systeem opstart:
sudo systemctl enable flamenco-manager.service
Stap 5. Werkerknooppunt
Maak verbinding met de VPN-server met behulp van de handleiding uit stap 1 en koppel de share uit stap 3. Stop de VPN-service voordat u verdergaat:
sudo snap install blender --classic
Moderne *.blend bestanden worden gecomprimeerd met het Zstandard algoritme. Om fouten te voorkomen is het essentieel om ondersteuning voor dit algoritme op te nemen:
sudo apt -y install python3-zstd
Download de toepassing:
wget https://flamenco.blender.org/downloads/flamenco-3.7-linux-amd64.tar.gz
Pak het gedownloade archief uit:
tar xvfz flamenco-3.7-linux-amd64.tar.gz
Navigeer naar de aangemaakte map:
cd flamenco-3.7-linux-amd64/
Maak een extra script dat GPU rendering inschakelt wanneer Flamenco jobs draait:
nano gpurender.py
import bpy
def enable_gpus(device_type, use_cpus=False):
preferences = bpy.context.preferences
cycles_preferences = preferences.addons["cycles"].preferences
cycles_preferences.refresh_devices()
devices = cycles_preferences.devices
if not devices:
raise RuntimeError("Unsupported device type")
activated_gpus = []
for device in devices:
if device.type == "CPU":
device.use = use_cpus
else:
device.use = True
activated_gpus.append(device.name)
print('activated gpu', device.name)
cycles_preferences.compute_device_type = device_type
bpy.context.scene.cycles.device = "GPU"
return activated_gpus
enable_gpus("CUDA")
Sla het bestand op en sluit af. Maak vervolgens een aparte service om Flamenco uit te voeren vanuit systemd:
sudo nano /etc/systemd/system/flamenco-worker.service
[Unit]
Description=Flamenco Worker service
[Service]
User=usergpu
WorkingDirectory=/home/usergpu/flamenco-3.7-linux-amd64
ExecStart=/home/usergpu/flamenco-3.7-linux-amd64/flamenco-worker
Restart=always
[Install]
WantedBy=multi-user.target
Herlaad de configuratie en start de nieuwe service:
sudo systemctl daemon-reload
sudo systemctl start flamenco-worker.service
sudo systemctl status flamenco-worker.service
● flamenco-worker.service - Flamenco Worker service Loaded: loaded (/etc/systemd/system/flamenco-worker.service; enabled; preset: enabled) Active: active (running) since Tue 2023-10-17 13:56:18 EEST; 47s ago Main PID: 636 (flamenco-worker) Tasks: 5 (limit: 23678) Memory: 173.9M CPU: 302ms CGroup: /system.slice/flamenco-worker.service └─636 /home/user/flamenco-3.7-linux-amd64/flamenco-worker
Automatische start inschakelen wanneer het systeem opstart:
sudo systemctl enable flamenco-worker.service
Stap 6. Gebruikersknooppunt
Gebruikersknooppunten kunnen met elk besturingssysteem worden beheerd. In deze handleiding laten we zien hoe je een knooppunt instelt met Windows 11 en 4 benodigde componenten:
- VPN-verbinding
- Gemonteerde map op afstand
- Blender geïnstalleerd
- Flamenco add-on
Download en installeer Wireguard van de officiële website. Maak een nieuw tekstbestand aan en plak daarin de configuratie die in stap 1 voor de client is gegenereerd. Hernoem het bestand naar flamenco.conf en voeg het toe in Wireguard met de knop Add tunnel:

Maak verbinding met uw server door op de knop Activate te drukken:

Koppel een externe map. Klik met de rechtermuisknop op This PC en selecteer Map network drive…

Kies Z: als stationsletter, typ het Samba share adres \\10.0.0.4\private en vergeet niet Connect using different credentials aan te vinken. Klik vervolgens op Finish. Het systeem zal je vragen om een gebruikersnaam en wachtwoord voor de share in te voeren. Daarna wordt de netwerkmap gemount als het Z: station.
Download en installeer Blender van de officiële website. Open vervolgens de URL http://10.0.0.3:8080/flamenco3-addon.zip en installeer de Flamenco add-on. Activeer het in voorkeuren: Edit > Preferences > Add-ons. Vink System: Flamenco 3 aan, voer de Manager URL http://10.0.0.3:8080 in en klik op de refresh knop. Het systeem zal verbinding maken met het beheerdersknooppunt en de opslaginstellingen automatisch laden:

Open het bestand dat je moet renderen. Kies Cycles op het tabblad Scene in de vervolgkeuzelijst Render Engine. Vergeet niet het bestand op te slaan, want deze instellingen worden direct opgeslagen in het *.blend bestand:

Scroll naar beneden en vind de Flamenco 3 sectie. Klik op Fetch job types voor een lijst met beschikbare types. Selecteer Simple Blender Render in de vervolgkeuzelijst en stel andere opties in, zoals het aantal frames, de grootte van de chunk en de uitvoermap. Klik ten slotte op Submit to Flamenco:

De Flamenco add-on maakt een nieuwe taak aan en uploadt een blendbestand naar gedeelde opslag. Het systeem stuurt de taak naar een beschikbare worker en start het renderproces:

Als je de belasting van de GPU's controleert met nvtop of soortgelijke hulpprogramma's, zie je dat alle GPU's compute taken hebben:

Je vindt het resultaat in een map die je in de vorige stap hebt geselecteerd. Voorbeeld hier (Ripple Dreams door James Redmond)
Zie ook:
Bijgewerkt: 12.08.2025
Gepubliceerd: 21.01.2025