Thanks
This guide was made possible by Shadow Panther's Headless Image.
Prerequisites
- Basic familiarity with:
- Command Line Systems
- Configuration files including JSON familiarity
- Docker & Docker Compose
- A Patreon linked Resonite account that has access to the Headless Beta Code
- You only need ONE account to get the code.
- A spare Steam account
Recommendations
Before you get started here are some recommendations:
- Use a non-windows machine - While this setup works for Windows, Docker on windows can break depending on your CPU, Operating System setup and even sometimes the motherboard. For less issues, stay off windows.
- Use a separate machine - It is not recommended to run a headless on the same machine that you run Resonite on. This could lead to performance issues for both clients if you run them both at the same time.
- Use a separate Resonite account - A separate account causes less issues in the long term.
- Use a separate Steam account from the one you use to play games - This prevents any issues with conflicting logins etc.
Install Docker & Docker Compose
- Visit Docker's Get Docker page
- Follow instructions for your operating system
- Ensure you also have Docker Compose. Depending on your setup, this may be included already but if not there's a Docker documentation page which has the details.
Test Docker Setup
To verify that docker is setup on your machine and working correctly:
- Open a terminal window
- Enter
docker run hello-world
- If all goes well, you'll see a pleasant message from Docker telling you that everything worked.
- Run
docker compose version
to verify that you also have Docker Compose, you should see the Docker Compose version printed.
Docker Refresher
Here is a small refresher of Docker in general.
Basic commands
docker pull <image>
- Downloads the image locallydocker run <parameters> <image>
- Creates and starts a container with the specified image (doing CTRL+C or closing the prompt will stop it by default), some common parameters are:-p <sourcePort>:<desinationPort>
- Opens a port from within the container to your machine (specify127.0.0.1:
before the port specification to only open it locally)-d
- Detaches from the image, AKA runs it in the background-e SOMETHING=value
- Sets an environment variable, in this case sets the env variableSOMETHING
to the valuevalue
.-v /path/local:/path/inside
- Binds a local path into the container, usually used to pass files or persist data such as databases
docker container list --all
- Lists all created containersdocker container <stop/start/rm> <container name/ID>
- Will stop, start or remove the specified container
Compose
Compose is a tool provided by Docker that makes it trivial to deploy software following a defined configuration file written in YAML. A compose file is usually named docker-compose.yml
and a sample one looks like this:
version: '3.8' services: hello-world: image: hello-world
Compose has some common commands to know:
docker compose up <service(s) (optional)>
- Will start all the services or the ones specified, from the configuration file (doing CTRL+C or closing the prompt will close the service)- To run all the services in the background, you will need to append the
-d
argument, for instance:docker compose up -d
- To run all the services in the background, you will need to append the
docker compose logs <service(s) (optional)>
- Will display the logs of all the services or specified ones- You can also see the logs in real time by adding the argument
-f
, for instancedocker compose logs -f
(you will need to do CTRL+C to break out of this)
- You can also see the logs in real time by adding the argument
docker compose stop <service>
- Will stop the container created for the service, for instancedocker compose stop hello-world
docker compose down
- Will stop all the services specified in the configuration and destroy their containersdocker compose pull
- Will check if any service has a newer image available and if so, will download it- After running this, you will still need to do
docker compose up
so containers are re-created with the latest version downloaded
- After running this, you will still need to do
Get the Files
For this setup we'll be using some sample files that are available on a [GitHub Repository](https://github.com/Yellow-Dog-Man/BasicDockerHeadlessSetup). So if you're familiar with git, you can probably leave off here and follow the directions there.
But if you're not familiar with git, don't worry. You don't even need git, just keep reading right here on the wiki.
- Download the files as a zip
- This zip comes directly from GitHub
- Extract the zip file
- You should now have a folder called "Headless"
Specifying some credentials
Next, we'll need to gather some credentials and place them in a file within the "Headless" folder.
So be prepared with your:
- Patreon Headless Code
- Username and Password to a spare Steam account
- The Steam account does not need to own any games
- The Steam account does not need to be a Resonite Patreon
- We recommend using a separate Steam account from the one you use to play Resonite.
- We recommend turning off Steam Guard to prevent issues when signing on. That can be done on Steam's Website.
With those prepared:
- Inside the "Headless" folder, create a new file called
.env
. - Add a line:
RES_HEADLESS_CODE=<Headless Code>
where<Headless Code>
is replaced by the Patreon Headless Code. - Add a line:
RES_STEAM_LOGIN=<Steam Username> <Steam Password>
where<Steam Username>
and<Steam Password>
- Save the file
Running a Headless
This is the last step, everything should be ready!
- Open a Terminal window in the Headless folder
- On Windows, this can be done by:
- holding shift and pressing right click in some empty space within the Headless folder in Windows Explorer
- selecting "Open PowerShell window here"
- On Linux, for common distributions such as Ubuntu you can right click in the folder browser and select "Terminal" or "Open Terminal".
- Editors Note: It's been awhile since i've been in Linux from the point of view as a new user, if someone can edit that in it would help. But keep in mind "New User" ProbablePrime (talk) 09:07, 13 March 2024 (UTC)'
- On Windows, this can be done by:
- In the Terminal window enter
docker compose up
After this a huge amount of items should appear in the terminal, this might be overwhelming but just wait, after awhile(any where from 3 to 10 minutes) you should see: <nowiki>resonite-headless | World running...<nowiki>
.
This means your headless is running.
Joining your Headless
Inside Resonite on your regular account:
- Open the world browser
- Select the "Headless Sessions" item on the left
- Type "Testing" into the search bar
- You should see your headless' session
- Click it
- Click Join
Limitations and where to go
Due to the simplicity of this guide, you'll probably notice a few things you'll want to change or correct, due to that here's a few links to get you started:
- Your world is just a simple grid world and you want it to be a custom world
- Replace the contents of "Config.json" with one of the example configuration files.
- Your Headless has a weird name
- This name is based on an internal part of the Docker runtime.
- To override it, simply add a Resonite user's username and password to one of our example configuration files.
- Or take a look at our configuration guide
- The Resonite account does not need to:
- Be a Patreon
- We Recommend using a separate Resonite account from the one you use on Resonite regularily.
- You want Builder permissions in your Headless
- Take a look at our configuration guide
- Your question isn't answered?
- Take a look at our configuration guide
- Ask on our Discord.
See Also
- Setup a Headless - How to setup a headless for the first time
- Managing Worlds - Guidance on world management with a headless.
- Configuration File - Learn about Headless Configuration Files
- Commands - Learn about Headless Commands