Fxserver
Transform any Cloud drive into a VFX pipeline ready server.
Install / Use
/learn @healkeiser/FxserverREADME
Table of Contents
<!--ts--> <!--te--> <!-- ABOUT -->About
Quick tutorial to setup a Cloud Server for multiple machines access, and VFX Pipeline on Windows, macOS and Linux. This repository is based on Google Drive VFX Server, with loads of improvements.
<!-- SETUP SERVER -->Setup Server
First, you'll need to mount your Cloud server on your system, using any software you like (rclone, Google Drive File Stream, etc.)
We can then start moving files around. The setup only relies on environment variables:
SERVER_ROOT: The root of the mounted Cloud server. This is the only value that needs to be changed depending on your setupCONFIG_ROOT: The.configfolderENVIRONMENT_ROOT: the.config/environmentfolderPIPELINE_ROOT: the.config/pipelinefolder
You can now download the code from this repository and extract its content to your SERVER_ROOT. Using Z:/My Drive as the mounted Cloud server path, it should look like this:
.
└── 📁 Z:/My Drive/
└── 📁 .config/
├── 📁 environment
└── 📁 pipeline
Which equals to:
.
└── 📁 $SERVER_ROOT/
└── 📁 $CONFIG_ROOT/
├── 📁 $ENVIRONMENT_ROOT
└── 📁 $PIPELINE_ROOT
You will need to modify SERVER_ROOT in .zshrc (Unix) and/or dcc.bat (Windows) by your mounted Cloud server path:
- In .zshrc:
export SERVER_ROOT="Path/to/drive/linux"(Line 12, 17, 21) - In dcc.bat:
setx SERVER_ROOT "Path\to\drive\windows"(Line 9)
Once the folder structure is created and the SERVER_ROOT value has been modified, you can now assign the environment variables:
Windows
Windows supports shell scripting after some manipulations but it's way easier to "hard" write the environment variables by running dcc.bat.

To check that everything is working:
- Type <kbd> Win </kbd> + <kbd> I </kbd> to open the Windows Settings
- Scroll to the bottom of the page and click
About - Navigate to
Device Specificationsand pressAdvanced System Settings - In the
System Propertiesdialogue box, hitEnvironmental Variables - The freshly created variables should be under
User - Check is
SERVER_ROOThas been defined with the right path
Unix
macOS and Linux are both Unix based OS.
The simplest way is to migrate your shell to Zsh using chsh -s $(which zsh) in your terminal.
You can then symlink .zshrc in your $HOME folder.
To check that everything is working, restart your terminal and type echo $SERVER_ROOT: it should output your mounted Cloud server path.
[!WARNING] .zshrc needs to be called exactly that way in
$HOMEto be picked up by the terminal: remove anyaliasorsymlinkadded in the name.
<!-- SOFTWARE -->[!WARNING] The
Make Aliascommand in macOS Finder won't work properly. You should use this service instead to create proper Symlinks: Symbolic Linker
Software
This setup automatically links the following DCCs, using this folder structure:
.
└── 📁 $SERVER_ROOT/
└── 📁 .config/
├── 📁 environment
└── 📁 pipeline/
├── 📁 houdini ──> Using $HSITE
├── 📁 maya ──> Using $MAYA_APP_DIR
├── 📁 nuke ──> Using $NUKE_PATH
├── 📁 other
└── 📁 substance_painter
└── 📁 python ──> Using $SUBSTANCE_PAINTER_PLUGINS_PATH
The DDCs can be launched normally on Windows if the dcc.bat file has been used to define the environment variables.
For macOS and Linux, you should start them from a terminal, in order to inherit the environment variables defined by .zshrc.
You can find an example script for Houdini just here: houdini.sh.
To access it quickly, we also defined an alias for houdini pointing to that script in aliases.sh. It will allow you to simply type this command to launch Houdini.
<img src="https://cdn.worldvectorlogo.com/logos/maya-2017.svg" alt="Maya" width="20"/> Maya
WIP
[!NOTE] See Maya file path variables
.
└── 📁 $SERVER_ROOT/
└── 📁 .config/
├── 📁 environment
└── 📁 pipeline/
└── 📁 maya/
└── 📁 2023/
├── 📄 Maya.env
├── 📁 prefs
├── 📁 presets
└── 📁 scripts
<img src="https://cdn.worldvectorlogo.com/logos/substance-painter.svg" alt="Substance" width="20"/> Substance Painter
WIP
Note<br> See Substance Painter environment variables
.
└── 📁 $SERVER_ROOT/
└── 📁 .config/
├── 📁 environment
└── 📁 pipeline/
└── 📁 substance_painter/
└── 📁 python/
└── 📄 plugin.py
<img src="https://secure.meetupstatic.com/photos/event/b/9/f/6/600_494327606.jpeg" alt="Houdini" width="20"/> Houdini
Houdini will automatically scan the folder defined by $HSITE for any folder being named houdini<houdini version>/<recognized folder> such as otls or packages and load the content of those folders at Houdini startup.
[!NOTE] See Configuring Houdini
You can find two package file examples:
- A generic plugin_name.json
- An arnold.json
Both taking advantage of the environment variables posteriorly defined.
.
└── 📁 $SERVER_ROOT/
└── 📁 .config/
├── 📁 environment
└── 📁 pipeline/
└── 📁 houdini/
└── 📁 houdini19.5/
├── 📁 desktop
├── 📁 otls/
│ └── 📄 digital_asset.hda
└── 📁 packages/
└── 📄 package.json
<img src="https://www.foundry.com/sites/default/files/2021-03/ICON_NUKE-rgb-yellow-01.png" alt="Nuke" width="20"/> Nuke
Nuke will scan the content of the folder defined by NUKE_PATH, searching for init.py and menu.py.
[!NOTE] See What are the init.py and menu.py files
You can find an init.py file example, showing how to load plugins on Nuke startup.
.
└── 📁 $SERVER_ROOT/
└── 📁 .config/
├── 📁 environment
└── 📁 pipeline/
└── 📁 nuke/
├── 📄 init.py
└── 📄 menu.py
<!-- RESSOURCES -->
Useful Resources and Tools
<!-- CONTACT -->Contact
Project Link: Cloud VFX Server
<p align='center'> <!-- GitHub profile --> <a href="https://github.com/healkeiser"> <img src="https://img.shields.io/badge/healkeiser-181717?logo=github&style=social" alt="GitHub"/></a> <!-- LinkedIn --> <a href="https://www.linkedin.com/in/valentin-beaumont"> <img src="https://img.shields.io/badge/Valentin%20Beaumont-0A66C2?logo=linkedin&style=social" alt="LinkedIn"/></a> &n