One of my favorite games to play with friends, both LAN and WAN formats, is the Artemis Spaceship Bridge Simulator game. While its incredibly rudimentary, once you get playing, it can be quite exciting (especially aided with alcohol).

However, to run a Artemis server instance, you need a copy of the game and must launch the entire main dashboard. They don’t run servers so one person (or another computer) has to run one for the group. That person also needs to physically interface with the server instance to change game type and do other actions. This makes it more manual than even your standard classic Steam game which uses rcon for remote control and of which you can launch a server instance without owning the game.

In this post, I’ll cover how I made a reverse proxying tunnel with SSH to expose my internal home machine for my remote friends. While there are other great solutions that let you do this (Inlets, Tailscale, Zerotier), all I really needed to do was leverage my already existent Bastion-Prime container!!

Creating the Proxy

Using my publicly available cloud instance, we’ll run Bastion-Prime to listen for SSH connections and ensure port 2010 is forwarded for when our client (my home machine running Artemis Server) connects in.

## docker-compose.yml

artemisproxy:
    image: inanimate/bastion-prime:latest
    restart: always
    command: -o GatewayPorts=yes
    ports:
        - "20010:2222" # Our SSH Port
        - "2010:2010" # Our Artemis Server forwarded port

GatewayPorts ensures clients other than this server instance will be allowed to connect in to the forwarded port through to the Artemis Server.

Additionaly, you’ll need to create a SSH key pair without a passphrase so Autossh can automatically reconnect without user intervention. Utilize the ssh-keygen command to do this and follow these instructions to provide your public key to Bastion-Prime.

WSL and Autossh

My gaming machine is a Windows 10 machine with WSL setup where I’ll create the tunnel to the public cloud instance. Here’s the steps I took to get that achieved!

Autossh is a utility that will watch your ssh connection and restart it if either SSH dies or the connection becomes problematic.

  1. Enable WSL via the Turn On Windows Features dialog
  2. Install Ubuntu 20.04 LTS from Microsoft Store
  3. Optional: Install Windows Terminal from Microsoft Store
  4. Launch into Terminal and ensure your environment is properly setup with the right SSH key.
  5. apt install autossh
  6. Let’s spawn our SSH Tunnel connecting to Bastion-Prime on the public cloud instance:
AUTOSSH_DEBUG=true AUTOSSH_POLL=200 autossh -M 20000 -o ServerAliveInterval=7 -o ServerAliveCountMax=3 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -N -R 2010:localhost:2010 -p 20010 [email protected] -v`
  1. Now continue on to Launching Artemis Server

With our proxied tunnel all set, lets get the Artemis server instance running and the main game so we can lead our team to victory!

Launching Artemis Server

  1. Run Autossh to create tunnel to Artemis Proxy (see above “WSL and Autossh” section)
  2. Select Artemis game on Steam and click Settings -> Manage -> Browse Local Files
  3. Double click the Artemis.exe executable
  4. Select Windowed mode and a smaller resolution than your full screen rez
  5. Select Server and configure the parameters you want.
  6. When the server starts, you’ll see a dialog telling you how to connect with an IP address. That is not the IP you give your friends! As soon as the first person connects, you’ll see that dialog go away and be in the Space view of your mission!

You’ll now have the following:

Windows Gaming Machine (Artemis Server) -> Public Cloud Instance (Bastion-Prime) <- Friends (Artemis Clients)

Launching Artemis Game

You can technically connect on localhost but you’ll want to be sure to give your friends the public hostname/domain/IP of the public cloud instance!

  1. Ensure the server is running from the “Launching Artemis Server” step above
  2. Launch Artemis from Steam as normal (click Play)
  3. Enter in the cloud instance domain/IP i.e. artemis.example.com and click Connect.
  4. You’re in! Select the role you want and go go go!!! Share connection details with your friends and have them connect in!

Sharing the Artemis Server Screen on Discord

  1. Move the Discord window to the same screen the windowed Artemis Server is running
  2. Click the Stream button on the “Artemis” game tab (bottom of the left pane)
  3. Instead of the main game window, select “Change” and select the window with the Server window.
  4. Click Go Live and others can see the server Window!!!
Mario Loria is a builder of diverse infrastructure with modern workloads on both bare-metal and cloud platforms. He's traversed roles in system administration, network engineering, and DevOps. You can learn more about him here.