<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://freddy.mikeperalta.com/index.php?action=history&amp;feed=atom&amp;title=Usage</id>
	<title>Usage - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://freddy.mikeperalta.com/index.php?action=history&amp;feed=atom&amp;title=Usage"/>
	<link rel="alternate" type="text/html" href="https://freddy.mikeperalta.com/index.php?title=Usage&amp;action=history"/>
	<updated>2026-05-14T11:22:26Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>https://freddy.mikeperalta.com/index.php?title=Usage&amp;diff=144&amp;oldid=prev</id>
		<title>Mike at 10:32, 3 December 2021</title>
		<link rel="alternate" type="text/html" href="https://freddy.mikeperalta.com/index.php?title=Usage&amp;diff=144&amp;oldid=prev"/>
		<updated>2021-12-03T10:32:23Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
[[File:FreddyRender-Overview (Diagram).svg|thumb|right|Freddy Render Overview (Diagram)]]&lt;br /&gt;
&lt;br /&gt;
Freddy Render has three distinct modes: '''Master''', '''Slave''', and '''Client'''. You can launch all three modes on the same machine, if you'd like. But typically in a renderfarm-like setup, you'd want something like this:&lt;br /&gt;
&lt;br /&gt;
* One machine running '''Master''' mode, to control everything and expose a nifty web interface.&lt;br /&gt;
* One or more machines running '''Slave''' mode, to do all the rendering.&lt;br /&gt;
* Your personal workstation running '''Client''' mode, only when you need to submit a new job to the ''Master''.&lt;br /&gt;
&lt;br /&gt;
Each of these three modes is started with a simple command line.&lt;br /&gt;
&lt;br /&gt;
The subsections below will go into the modes in a bit more detail, as well as tell you how to launch them. You can see a general overview of the flow of control by viewing the image to the right.&lt;br /&gt;
&lt;br /&gt;
In all examples, suppose '''MASTER_IP''' represents the IP address of the machine running Freddy Render in '''Master''' mode, and '''MASTER_PORT''' represents the port you'd like the '''Master''' to listen on (an integer usually between 1025 and 65535).&lt;br /&gt;
&lt;br /&gt;
== Master Mode ==&lt;br /&gt;
&lt;br /&gt;
In '''Master''' mode, Freddy Render coordinates all activities and allows you to manage your jobs through a nifty web interface. You typically should only run 1 machine as the '''Master'''.&lt;br /&gt;
&lt;br /&gt;
=== Life Cycle ===&lt;br /&gt;
&lt;br /&gt;
A typical life cycle of your master might look like:&lt;br /&gt;
&lt;br /&gt;
# Install to some server that you can keep running 24/7 forever.&lt;br /&gt;
# Configure '''Master''' mode to boot with that machine.&lt;br /&gt;
# Launch the '''Master''' for the first time (directly or by rebooting the machine).&lt;br /&gt;
# Leave running forever.&lt;br /&gt;
&lt;br /&gt;
=== Invocation ===&lt;br /&gt;
&lt;br /&gt;
Invocation of the '''Master''' is as simple as:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
java -jar /path/to/FreddyRender.jar --master --port MASTER_PORT&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Web Interface ===&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot-Web-Overview.png|thumb|right|Master Web Interface]]&lt;br /&gt;
&lt;br /&gt;
To access the web interface, just open your browser and punch in the address of your '''Master'''. To tell your browser what port to connect to, use a colon (:) followed by the port number. The general form is:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
http://MASTER_IP:MASTER_PORT/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Depending on your own personal network configuration and the port you chose for your '''Master''', an example of the URL in your browser might look something like the following:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://192.168.1.100:8000&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also see the page [[Web_Interface|Web Interface]] for more information on using the Web Interface.&lt;br /&gt;
&lt;br /&gt;
=== Always-On ===&lt;br /&gt;
&lt;br /&gt;
The '''Master''' would typically run 24/7, or at least until your project finishes rendering. The machine running your '''Master''' doesn't have to be very powerful, because it won't do any rendering. A simple Raspberry Pi 4 or old laptop would probably be fine.&lt;br /&gt;
&lt;br /&gt;
However, it is acceptable to power off the '''Master''' sometimes, if you really need to. The next time you start the '''Master''', it will scan the local file system and try to recover where it left off. Be aware though, that powering off the '''Master''' has some significant drawbacks:&lt;br /&gt;
&lt;br /&gt;
* Whenever you start the '''Master''' again, it will cost some time to recover your previous jobs. If you have many jobs with many frames each, this could be a significant time delay where the '''Master''' seems unresponsive while starting.&lt;br /&gt;
&lt;br /&gt;
* None of your '''Slave''' machines will be able to render anything when the '''Master''' isn't running. They'll sit idle while they endlessly try to contact the '''Master''' for instructions.&lt;br /&gt;
 &lt;br /&gt;
* No '''Clients''' will be able to submit new jobs.&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
&lt;br /&gt;
'''Master''' mode has no security as of yet, so you should only run this on a private network that you trust. It's also possible to run the '''Master''' behind Apache with a reverse proxy running SSL and some sort of authentication. If you run '''Master''' mode as-is on an untrusted network (e.g., the Internet), you might get random people submitting offensive jobs or deleting yours, just to troll you. Also, because development of Freddy Render hasn't focused on security concerns thus far, it's possible an evil Internet person could find a way to exploit '''Master''' mode to hack the entire machine. In other words, it's not worth making public; Just keep it safe on your own network.&lt;br /&gt;
&lt;br /&gt;
==== Slaves On Different Networks ====&lt;br /&gt;
&lt;br /&gt;
If you must utilize some '''Slave''' machines that reside on different networks than the '''Master''', one potential idea is to run a VPN server/client configuration to securely connect the networks together. You should still be sure all networks can be trusted.&lt;br /&gt;
&lt;br /&gt;
One free and popular VPN implementation you may want to try is [https://openvpn.net/ OpenVPN].&lt;br /&gt;
&lt;br /&gt;
== Slave Mode ==&lt;br /&gt;
&lt;br /&gt;
'''Slave''' mode is where all your jobs actually get rendered. You'll want to run as many machines in '''Slave''' mode, as you can get your hands on. '''Slave''' machines will continuously ask the '''Master''' for a frame to render, render the frame, then send the rendered frame back to the '''Master'''. When there is no work to do, a '''Slave''' will sit mostly idle until the '''Master''' finally has work it can do.&lt;br /&gt;
&lt;br /&gt;
=== Life Cycle ===&lt;br /&gt;
&lt;br /&gt;
A typical lifecycle for a '''Slave''' might be:&lt;br /&gt;
&lt;br /&gt;
# Start the slave&lt;br /&gt;
# Keep it on endlessly&lt;br /&gt;
# Occasionally turn it off when you really need to, or when you're not rendering any Blender jobs.&lt;br /&gt;
&lt;br /&gt;
=== Invocation ===&lt;br /&gt;
&lt;br /&gt;
Invocation of '''Slave''' mode is also fairly simple:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;java -jar /path/to/FreddyRender.jar --slave --host MASTER_IP --port MASTER_PORT&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Shutting Down Slaves ===&lt;br /&gt;
&lt;br /&gt;
'''Slaves''' can be shut down and started again whenever you need. When a '''Slave''' is shut down while rendering a frame, the '''Master''' will eventually realize what has happened and send the frame to a different '''Slave''' (if any). There are no other significant adverse effects of shutting down a '''Slave''' without warning.&lt;br /&gt;
&lt;br /&gt;
If no '''Slaves''' are running, the '''Master''' will wait patiently until one comes online.&lt;br /&gt;
&lt;br /&gt;
== Client Mode ==&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot-Client-Finished.png|thumb|right|Client Mode]]&lt;br /&gt;
&lt;br /&gt;
'''Client''' mode is responsible for submitting new jobs to the '''Master'''. You don't need to run '''Client''' mode unless you need to submit a new job to the '''Master'''.&lt;br /&gt;
&lt;br /&gt;
=== Life Cycle === &lt;br /&gt;
&lt;br /&gt;
A typical life cycle for using '''Client''' mode would be:&lt;br /&gt;
&lt;br /&gt;
# Launch the '''Client''' on your Blender workstation.&lt;br /&gt;
# Use the '''Client''' window to submit a Blender project to the '''Master'''.&lt;br /&gt;
# Close the '''Client'''.&lt;br /&gt;
&lt;br /&gt;
'''Client''' mode can be launched on any machine with a graphical desktop, but this would usually be the machine you do your Blender design on since that's where your project files would be.&lt;br /&gt;
&lt;br /&gt;
=== Invocation ===&lt;br /&gt;
&lt;br /&gt;
In '''Client''' mode, Freddy Render will launch a window you can use to submit jobs to the '''Master'''. Invocation is as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;java -jar /path/to/FreddyRender.jar --client --host MASTER_IP --port MASTER_PORT&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In fact the &amp;quot;--host&amp;quot; and &amp;quot;--port&amp;quot; arguments are totally optional. All they do is initialize some fields in the window that spawns.&lt;br /&gt;
&lt;br /&gt;
=== Submitting a Job ===&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot-Client-SelectFile.png|thumb|right|Client Mode (Uploading)]]&lt;br /&gt;
&lt;br /&gt;
The only purpose of '''Client''' mode is to submit new jobs. The process is very simple:&lt;br /&gt;
&lt;br /&gt;
# Make sure the '''Server Address''' and '''Server Port''' fields both point to your '''Master''' instance.&lt;br /&gt;
# Make sure SSL is checked if-and-only-if you have the '''Master''' sitting behind SSL.&lt;br /&gt;
# Click the only visible button: ''Choose a .blend file to submit''.&lt;br /&gt;
# On the dialog that pops up, locate and select the ''.blend'' project file you wish to upload.&lt;br /&gt;
# Click the '''Open''' button on the dialog.&lt;br /&gt;
# Watch the progress bar and log window for an indication that your project has finished uploading.&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
&lt;br /&gt;
Freddy Render has no real security as of yet, so you should only run your render farm on a private network that you trust. If you run '''Master''' mode as-is on an untrusted network (e.g., the Internet), you might get random people submitting offensive jobs or deleting yours, just to troll you. Also, because development of Freddy Render hasn't focused on security concerns thus far, it's possible an evil Internet person could find a way to exploit '''Master''' mode to hack the entire machine. In other words, it's not worth making public; Just keep it safe on your own network.&lt;br /&gt;
&lt;br /&gt;
A tiny amount of privacy could be gained by running the '''Master''' behind Apache with a reverse proxy running SSL and some sort of authentication. But as of 2020-May-31, Freddy Render doesn't have any built in authentication, so a malicious Internet-person could still take control at any time.&lt;br /&gt;
&lt;br /&gt;
== Common Arguments ==&lt;br /&gt;
&lt;br /&gt;
Some command line arguments aren't specific to only one mode, so they're listed here.&lt;br /&gt;
&lt;br /&gt;
=== Host and Port ===&lt;br /&gt;
&lt;br /&gt;
The ''--host'' argument specifies the hostname or address of the '''Master''', and can be used on '''Client''' and '''Slaves''' modes.&lt;br /&gt;
&lt;br /&gt;
The ''--port'' argument specifies the '''Master''' port, and is used on all three modes.&lt;br /&gt;
&lt;br /&gt;
=== Connecting via SSL ===&lt;br /&gt;
&lt;br /&gt;
If you have setup your '''Master''' behind an SSL server (e.g., using an Apache Reverse Proxy with SSL enabled), you can also use the command line argument &amp;quot;--ssl&amp;quot; when you invoke your '''Client''' or '''Slave''' machines, like so:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Invoke a Client&lt;br /&gt;
java -jar /path/to/FreddyRender.jar --client --host MASTER_IP --port MASTER_PORT --ssl&lt;br /&gt;
&lt;br /&gt;
# Invoke a Slave&lt;br /&gt;
java -jar /path/to/FreddyRender.jar --slave --host MASTER_IP --port MASTER_PORT --ssl&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This essentially has the effect of having your machine connect with the ''https'' protocol instead of ''http''.&lt;br /&gt;
&lt;br /&gt;
=== Specifying a Blender Binary ===&lt;br /&gt;
&lt;br /&gt;
The '''Master''' and '''Slave''' modes should use the same version of Blender that you used to create your Blender project file. If the default blender installation for each machine is the same version, you don't need to specify which blender binary to use (i.e., this argument is optional).&lt;br /&gt;
&lt;br /&gt;
However, if that is not the case, you may want to specify a path to a Blender binary somewhere. You can do this with a simple argument &amp;quot;--blender-binary&amp;quot;, like so:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Invoke the Master&lt;br /&gt;
java -jar /path/to/FreddyRender.jar --master --port MASTER_PORT --blender-binary=/path/to/your/blender&lt;br /&gt;
&lt;br /&gt;
# Invoke a Slave&lt;br /&gt;
java -jar /path/to/FreddyRender.jar --slave --host MASTER_IP --port MASTER_PORT --blender-binary=/path/to/your/blender&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Temporary Directory ===&lt;br /&gt;
&lt;br /&gt;
You can specify a temporary directory for the '''Master''' and '''Slave''' modes with the option &amp;quot;--temp-dir&amp;quot;, like so:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Invoke the Master&lt;br /&gt;
java -jar /path/to/FreddyRender.jar --master --port MASTER_PORT --temp-dir=/path/to/some/temp/directory&lt;br /&gt;
&lt;br /&gt;
# Invoke a Slave&lt;br /&gt;
java -jar /path/to/FreddyRender.jar --slave --host MASTER_IP --port MASTER_PORT --temp-dir=/path&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mike</name></author>
	</entry>
</feed>