How to Set Up a Yuzu Online Multiplayer Server

How to Set Up a Yuzu Online Multiplayer Server

Don’t see a server that’s close to your location when browsing a public lobby in Yuzu? Well, we can create our own with just a few steps. You’ll need the following:

  • a Linux server, or an Amazon server with AWS
  • if you’re using your own server, access to your router settings

In the event that you don’t have your own server, we can use Amazon Web Services (AWS). Note that this is not something that I’ve personally tried, so you’ll be on your own if you go this route.

If, on the other hand, you happen to have a spare Linux server around, we can make good use of it. Making an online multiplayer server for Yuzu can be done on virtually any device, including the Steam Deck, as long as it can use Docker. You’ll also need access to your router settings, so we can port forward the necessary port for the server to work.

So what exactly is Docker, anyway? According to the official site, Docker is described as follows:

Docker provides the ability to package and run an application in a loosely isolated environment called a container. The isolation and security lets you run many containers simultaneously on a given host. Containers are lightweight and contain everything needed to run the application, so you don’t need to rely on what’s installed on the host.

1. Get Docker Engine

After you’ve logged into your server, installing the Docker Engine is going to be dependent on what distro it’s running. Instructions are available for:

You can also use binaries in case you’re using a distro that’s not listed here.

For example, if you’re using Ubuntu server, you would install as follows:

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

Then install the Docker Engine with:

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

After Docker Engine is installed, regardless of what distro your server is using, you can verify that it’s running correctly with:

sudo docker run hello-world

Running hello world container with Docker

2. Get Yuzu Server Set Up

Run sudo service docker start to get the Docker Engine up and running on your server.

The next command will get our Yuzu server set up. Please modify the values first before pressing Enter on the keyboard once you’ve pasted the following line on your server:

sudo docker run -d --publish 5000:5000/udp ikuzen/yuzu-hdr-multiplayer-dedicated --room-name "INSERT YOUR SERVER NAME" --room-description "INSERT YOUR DESCRIPTION" --password "(OPTIONAL)INSERT YOUR ROOM PASSWORD" --preferred-game "INSERT GAME NAME" --preferred-game-id "INSERT GAME ID" --port 5000 --max_members 16 --web-api-url api.ynet-fun.xyz/ --allowed-name-suffix "(OPTIONAL)INSERT YOUR SUFFIX TO ALLOW ONLY USERS WITH A SPECIFIC NAME SUFFIX" --moderator-password "(OPTIONAL) INSERT YOUR PASSWORD. USED TO JOIN THE ROOM WITH MODERATOR RIGHTS" --allow-non-preferred-game(OPTIONAL people not playing the preferred game won’t get kicked automatically)

Fill in the values for the room name, the room description, the preferred game, the game ID (you can get the name ID by right-clicking the game in Yuzu and selecting “Copy Title ID to Clipboard”), and the max amount of players allowed on the server. Optionally set a password for the server, allowed name suffixes, a moderator password, and whether or not people who join the server without the preferred game should get kicked. If there is an optional parameter that you don’t want, you can simply omit it when running the command.

As an example, here’s what I’m using to set up my HDR server:

sudo docker run -d --publish 5000:5000/udp ikuzen/yuzu-hdr-multiplayer-dedicated --room-name "The Outcaster's Massachusetts HDR Server" --room-description "HDR for the East Coast" --preferred-game "Super Smash Bros. Ultimate" --preferred-game-id "01006A800016E000" --port 5000 --max_members 16 --web-api-url api.ynet-fun.xyz --allowed-name-suffix -HDR --allow-non-preferred-game

This command will specify the following:

  • use port 5000 for the server
  • a room name of “The Outcaster’s Massachusetts HDR Server” with a description of “HDR for the East Coast”
  • set Smash Ultimate as the preferred game, along with its game ID
  • set the max amount of players in the server to 16
  • set the web API URL to api.ynet-fun.xyz
  • only allow users with the ending name of -HDR to join the server
  • an optional parameter is set up to not automatically kick those who aren’t playing the preferred game

I don’t have a password set up for the server, so I omitted that parameter, as well as moderator-password.

If everything went well your terminal should show a long string of characters. Run sudo docker ps to verify that the server/container is running.

Docker container with Yuzu server

Additionally, if you’re in the Public Room Browser window in Yuzu, click the “Refresh List” button. Your server should now be listed!

Newly created server now listed in Yuzu public room browser

If, however, you run into an error along the way, or your server isn’t listed in Yuzu, you’ll need to kill the Docker container and re-run the command with different parameters. Get the container ID with sudo docker ps, then kill it with sudo docker kill <container id>.

You’ll notice, however, that you won’t be able to join your server just yet. That’s because we need to forward the necessary port to our server – which, in this case, is 5000.

3. Forward Port 5000 to Your Server

If you set up your server with AWS, you can skip this step, as the Google Doc guide already had you forward port 5000.

Otherwise, open up your router settings. This would typically involve putting in the local IP address of the router in the URL field of your web browser, then logging in with the default credentials if you haven’t changed them, or logging in with whatever password you set up for the router.

Go to the Port Forward page of the router settings. This will usually be under the “Advanced” section or something similar, depending on what router you’re using. Forward port 5000 with both the TCP and UDP protocols to the local IP address of your server. You can see here the settings with a Verizon router:

Verizon port forward settings for Yuzu server

Save your router settings. If everything went well you should be able to join your server in Yuzu’s public room list; just make sure that your nickname ends with whatever suffix you specified in the command you ran in step 2. For instance, I set my nickname to outcaster-HDR; only players who have their nickname ending in -HDR will be able to join.

That should be it! Now you can create an in-game room with the game’s Local Wireless mode and have your friends join. Hit me up on Discord if you have any questions.