Skip to content

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Arcata

Containerized Dedicated Servers for Warframe's Conclave. It runs Warframe in a Debian container using Proton with UMU.

This way, the servers can be deployed on any device capable of running OCI containers, regardless of operating system. It also includes a simplified configuration setup to easily spin up multiple instances and game modes.

Also consider playing Lunaro with us at https://lunaro.wf/discord

Note

Arcata is in no way affiliated with Digital Extremes or Warframe.

Usage

To use Arcata, you'll need a contianer runtime. The most popular ones include Podman and Docker.

Spin up a Docker container using the basic setup described in the compose.yaml.

I recommend running the containers in Host-Network mode and enable UPnP on your router to simplify port handling. Otherwise, you can manually forward your server ports, more details on that below. Make sure you create the two directories bound to ~/.wine/pfx and ~/.local/share/Steam/compatibilitytools.d in you bind them to your host to avoid permission errors; no special setup should be required when using Docker volumes.

You'll need around 50 Gigabytes of free storage and anywhere from 500 to 800 Megabytes of RAM per instance, as the container requires a full Warframe installation. Dont worry though, it will do essentially everything for you, all you need to do is wait awhile during the first time.

You'll also need to mount an arcata.yaml into /opt/arcata/arcata.yaml to configure the servers you want to run, as described below.

Once the container is up and running, you can connect to it via VNC as configured in VNC_PORT and VNC_PASSWORD to view and interact with the container's virtual display.

Configuration

The container itself is configured via environment variables, while the dedicated servers are configured via /opt/arcata/arcata.yaml. The file is fairly straight forward and simplifies the setup described on the Warframe Wiki while staying true to its keys.

A typical arcata.yaml will look something like this:

# Setting this will attribute your account to the servers, defaults to no email at all (anonymous hosting).
# This way, they might eventually end up on https://api.warframe.com/cdn/dedServerStats.php
# Leave empty to host anonymously (default)
email: tenno@warframe.com

# This list contains your seperate dedicated server settings
# You must set at least one config.
servers:
  - name: EveryoneLovesLunaro # An arbitrary name for your config. Should be purely [A-Za-z] with no spaces, although I haven't tested it
    instances: 4 # The amount of instances to run for this config. Default is 1

    # The server properties to use, the names match the wiki.
    # Please consult it at https://wiki.warframe.com/w/Dedicated_Servers#Server_Settings_Properties
    settings:
      missionId: SB_Title
      motd: "Welcome to Lunaro, Tenno! Come play with us: lunaro.wf/discord"
      allowXPlatform: 1
      highBandwidth: 2

  # You can add as many configs as you like here (none of these are tested)

  - name: CephalonCaptureForNoobs
    settings:
      serverPort: 9999 # Manually forward this port on your router. Will likely cause issues with multiple instances
      missionId: CTF_Title
      eloRating: 0

  - name: OpticorMadness # Variant mode for https://wiki.warframe.com/w/Conclave#Annihilation
    instances: 2
    settings:
      missionId: DM_Title
      useAlternativePVPMode: 1
      matchmakingRegionOverride: NORTH_AMERICA

As seen in CephalonCaptureForNoobs, you can manually set the port on which a server should run. This only works if you have 1 instance! There is no way (using the official way to configure) to use the same config on multiple ports (for multiple instances) without duplicating it. I might add something for that in the future.

If no port is set, the server decides on a port by itself. This is why network_mode: host is recommended, as it will automatically open the port on the host and forward it when needed. UPnP should be enabled on your router to allow Warframe to request said ports to open on your router while the server is active. This is not a security risk and standard practice in most online games with peer-to-peer connectivity. It is usually enabled on most household routers, but you can make sure by looking up how to enable it for your specific router; just look up " upnp" online and you'll eventually figure it out ;)

For completeness' sake, here's also a list of useful environment variables:

Variable Effect Default
AUTO_ACCEPT_EULA Auto-accepts the Warframe EULA. See below for details 0
VNC_PORT Port to run the VNC server on 5900
VNC_PASSWORD Password to use for VNC. Leave blank for no password prompt lunaro
TZ Your IANA time zone, used for logs UTC

Warframe's EULA

Given the grey legality of auto-accepting a licence agreement on a human's behalf, auto-accepting is strictly opt-in. Setting AUTO_ACCEPT_EULA=1 in your environment will allow the container to automatically update today's and future EULAs. I take no responsibility for any of your EULA violations, it is your decision to auto-accept.

If you do not want to auto-accept the EULA, you will have to connect to the container using VNC and manually click the I AGREE button on first startup and any time the EULA updates in the future.

How it works

Here's a rough rundown on what the container does, assuming EULA auto-accept is on. Most of these run on every startup for simplicity's sake, since they're idempotent anyway.

  1. Starts the VNC server for observability and troubleshooting

  2. Downloads and sets up Protn and UMU with proper configuration

  3. Downloads the standalone Warframe launcher

  4. Manually set the target installation directory in the registry to avoid a file picker from popping up

  5. Start the launcher to let it download the EULA, then kill the process

  6. Hash EULA_en.rtf and write it to the registry, tricking the launcher into thinking EULA are accepted

  7. Generate DS.cfg, EE.cfg, and Arcata.cfg based on arcata.yaml

  8. Runs umu-run path/to/Launcher.exe -headless -dedicated -dscfg:"path/to/Arcata.cfg"

Since it uses Launcher.exe rather than running Warframe.x64.exe directly, the servers should auto restart themselves when a new Warframe build drops. I have however not tested this.

If anything goes wrong, the containers simply runs tail -d /dev/null to keep it open for troubleshooting via VNC. It's not ideal, but it works for now.

Roadmap

Arcata is in its early stages, and there's at least a few more things I'd like to implement.

  • Healthchecks for the container
  • Ensure container auto-restart (e.g. on Warframe updates) works
  • Sync with https://conclave.gg i.e. integration with MatNova's https://github.com/matrix224/WFData
  • Potental migration to something more sophisticated than shellscripts, mabye Nushell or even a "proper" binary, also to make it easier to implement the aforementioned integration (or others)

Contributing

Feel free to open issues an PRs on this project, as long as they're not about the roadmap I've listed above (unless the repo's been dead for like 6+ months). You can also message me on Discord with questions or issues, you can find me as quonnz at https://lunaro.wf/discord

Please also feel free to help maintain the Warframe Wiki page on Dedicated Servers! Any outdated information helps both this project and anyone else interested in Conclave.

About

⚔️ Containerized Dedicated Servers for Warframe's Conclave

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages