Giter VIP home page Giter VIP logo

enshrouded-server's Introduction

enshrouded-server

Static Badge Docker Pulls Static Badge GitHub Repo stars

Run Enshrouded dedicated server in a container. Optionally includes helm chart for running in Kubernetes.

Disclaimer: This is not an official image. No support, implied or otherwise is offered to any end user by the author or anyone else. Feel free to do what you please with the contents of this repo.

Usage

The processes within the container do NOT run as root. Everything runs as the user steam (gid:10000/uid:10000 by default). If you exec into the container, you will drop into /home/steam as the steam user. Enshrouded will be installed to /home/steam/enshrouded. Any persistent volumes should be mounted to /home/steam/enshrouded/savegame and be owned by 10000:10000.

In all of the examples below the image tag is set to v2.0.5 which is the current latest release. I will update the examples each time I cut a new release. This is to avoid forcing potentially breaking changes if your tag is set to latest and you always pull. Please review my release notes for each version between your current and your target before upgrading.

Proton and Wine based images

latest and semantic versioned (vN.N.N) image tags are Wine based images. If you would like to try my Proton (GE-Proton) based image, use the proton-latest tag.

If testing shows that the Proton image is substantially more performant than the Wine image, I may retire the Wine image.

Ports

Port Protocol Default
Game Port UDP 15636
Query Port UDP 15637

Environment Variables

Name Description Default Required
SERVER_NAME Name for the Server Enshrouded Containerized False
SERVER_PASSWORD Password for the server None True
GAME_PORT Port for server connections 15636 False
QUERY_PORT Port for steam query of server 15637 False
SERVER_SLOTS Number of slots for connections (Max 16) 16 False
SERVER_IP IP address for server to listen on 0.0.0.0 False

Note: SERVER_IP is ignored if using Helm because that isn't how Kubernetes works.

Docker

To run the container in Docker, run the following command:

docker volume create enshrouded-persistent-data
docker run \
  --detach \
  --name enshrouded-server \
  --mount type=volume,source=enshrouded-persistent-data,target=/home/steam/enshrouded/savegame \
  --publish 15636:15636/udp \
  --publish 15637:15637/udp \
  --env=SERVER_NAME='Enshrouded Containerized Server' \
  --env=SERVER_SLOTS=16 \
  --env=SERVER_PASSWORD='ChangeThisPlease' \
  --env=GAME_PORT=15636 \
  --env=QUERY_PORT=15637 \
  sknnr/enshrouded-dedicated-server:v2.0.5

Docker Compose

To use Docker Compose, either clone this repo or copy the compose.yaml file out of the container directory to your local machine. Edit the compose file to change the environment variables to the values you desire and then save the changes. Once you have made your changes, from the same directory that contains the compose and the env files, simply run:

docker-compose up -d

To bring the container down:

docker-compose down

compose.yaml file:

services:
  enshrouded:
    image: sknnr/enshrouded-dedicated-server:v2.0.5
    ports:
      - "15636:15636/udp"
      - "15637:15637/udp"
    environment:
      - SERVER_NAME=Enshrouded Containerized
      - SERVER_PASSWORD=PleaseChangeMe
      - GAME_PORT=15636
      - QUERY_PORT=15637
      - SERVER_SLOTS=16
      - SERVER_IP=0.0.0.0
    volumes:
      - enshrouded-persistent-data:/home/steam/enshrouded/savegame

volumes:
  enshrouded-persistent-data:

Podman

To run the container in Podman, run the following command:

podman volume create enshrouded-persistent-data
podman run \
  --detach \
  --name enshrouded-server \
  --mount type=volume,source=enshrouded-persistent-data,target=/home/steam/enshrouded/savegame \
  --publish 15636:15636/udp \
  --publish 15637:15637/udp \
  --env=SERVER_NAME='Enshrouded Containerized Server' \
  --env=SERVER_SLOTS=16 \
  --env=SERVER_PASSWORD='ChangeThisPlease' \
  --env=GAME_PORT=15636 \
  --env=QUERY_PORT=15637 \
  docker.io/sknnr/enshrouded-dedicated-server:v2.0.5

Kubernetes

I've built a Helm chart and have included it in the helm directory within this repo. Modify the values.yaml file to your liking and install the chart into your cluster. Be sure to create and specify a namespace as I did not include a template for provisioning a namespace.

Troubleshooting

Connectivity

If you are having issues connecting to the server once the container is deployed, I promise the issue is not with this image. You need to make sure that the ports 15636 and 15637 (or whichever ones you decide to use) are open on your router as well as the container host where this container image is running. You will also have to port-forward the game-port and query-port from your router to the private IP address of the container host where this image is running. After this has been done correctly and you are still experiencing issues, your internet service provider (ISP) may be blocking the ports and you should contact them to troubleshoot.

For additional help, refer to this closed issue where some folks were able to debug their issues. It may be of help.
jsknnr#16

Storage

I recommend having Docker or Podman manage the volume that gets mounted into the container. However, if you absolutely must bind mount a directory into the container you need to make sure that on your container host the directory you are bind mounting is owned by 10000:10000 by default (chown -R 10000:10000 /path/to/directory). If the ownership of the directory is not correct the container will not start as the server will be unable to persist the savegame.

enshrouded-server's People

Contributors

jsknnr avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.