Sign inSign up

nsnow/frozenflame-server

By nsnow

•Updated over 2 years ago

Image
1

1.5K

nsnow/frozenflame-server repository overview

Tag Gitlab Pipeline Issues Docker Stars Docker Pulls License

⁠frozenflame-server

Run a Frozen Flame dedicated server in a Docker container.

This uses steamCMD to automatically update your server software.

This Dockerfile will download the Frozen Flame dedicated server app and set it up, along with its dependencies.

If you run the container as is, the game directory will be created inside the container, which is inadvisable. It is highly recommended that you store your game files outside the container using a mount (see the example below). Ensure that your file system permissions are correct, chown 1000:1000 mount/path, and/or modify the UID/GUID variables as needed (see below).

It is also likely that you will want to customize your start.sh file. To do this, use the -e <ENVIRONMENT_VARIABLE>=<value> for each setting in the start.sh file. The start.sh file will be overwritten every time the container is launched. See below for details.

⁠Run the server

⁠Docker

Use this docker run command to launch a container with a few customized start.sh options. Replace <ENVIRONMENT_VARIABLE>=<VALUE> with the appropriate values (see section "Server properties and environment variables" below).

docker run --name frozenflame -it --rm \
  -p 7777:7777 \
  -p 27015:27015 \
  -p 25575:25575 \
  -v /home/$(whoami)/frozenflame:/home/frozenflame/server \
  -e FROZENFLAME_SERVER_NAME="frozenflame.example.com" \
  -e FROZENFLAME_STEAM_VALIDATE="false" # can be "true" or "false" \
  -e FROZENFLAME_SERVER_NOEAC="true" # can be "true" or "false" \
  -e FROZENFLAME_SERVER_LOG="true" # can be "true" or "false" \
  -e FROZENFLAME_SERVER_LOCALLOGTIMES="true" # can be "true" or "false" \
  -e FROZENFLAME_SERVER_NOEAC="true" # can be "true" or "false" \
  -e FROZENFLAME_GAME_BNOMODULECOST="True" \
  -e FROZENFLAME_GAME_SPRINTSTAMINACOST="0.5" \
  #-e FROZENFLAME_SERVER_<some key>="some value" \
  #-e FROZENFLAME_GAME_<some key>="some value" \
  nsnow/frozenflame-server:latest

⁠Versioning

The CI/CD pipeline will generate tags using major.minor.patch syntax. Example 1.0.0. You can use just the major version 1, the major and minor version 1.0, or the full version 1.0.0 when setting the docker image tag.

It is recommended that you at least pin to the major version 1 instead of using latest. Major versions typically include breaking changes.

⁠Set selinux context for mounted volumes

chcon -Rt svirt_sandbox_file_t /path/to/volume

⁠Additional Docker commands

kill and remove all docker containers

docker kill $(docker ps -qa); docker rm $(docker ps -qa)

docker logs

docker logs -f frozenflame

attach to the frozenflame server console

Use ctrl+p then ctrl+q to quit.

docker attach frozenflame

exec into the container's bash console

docker exec frozenflame bash

NOTE: referencing containers by name is only possible if you specify the --name flag in your docker run command.

⁠Helm

  • git clone https://gitlab.com/japtain_cack/frozenflame-server.git
  • cp frozenflame-server/helm_chart/values.yaml frozenflame_config.yaml
  • Customize frozenflame_config.yaml as necessary.
  • Install: helm install -n frozenflame frozenflame-world1 frozenflame-server/helm_chart -f frozenflame_config.yaml
  • Upgrade: helm upgrade -n frozenflame frozenflame-world1 frozenflame-server/helm_chart -f frozenflame_config.yaml
  • Keep your frozenflame_config.yaml in git.

⁠Configuration

⁠Reference files

⁠Faster startup, no steamCMD validation

SteamCMD validation is disabled by default, it was causing the server to take a lot more time on boot. Frozen Flame already takes FOREVER to boot, so this is disabled by default.

To enable SteamCMD file validation, in case you need to re-validate your pod/container data. This can be enabled on demand by adding an environment variable FROZENFLAME_STEAM_VALIDATE=true to your helm values or docker run command.

⁠Environment Variables

This project uses Remco config management⁠ This allows for templatization of config files and options can be set using environment variables. This allows for easier deployments using most docker orchistration/management platforms including Kubernetes.

⁠Set user and/or group id (optional)
  • FROZENFLAME_UID=1000
  • FROZENFLAME_GUID=1000
⁠remco environment variables

Let's start by looking at start.sh, you can also look at Game.ini. You should see something like this -ip="{{ getv("/frozenflame/server/ip", "127.0.0.1") }}". start.sh uses keys to determine the format of the environment variable. Let's break this down.

  • -ip is simply static text, in this example we are setting the -ip CLI option.
  • {{ ... }}. Everything in the brackets will be rendered using the templating language processor.
  • getv("/key", "default_value") is a function that takes two arguments. This looks up the environment variable based on the key, "/frozenflame/server/ip", and sets the value. If there is no value set in the env, the default is used.
  • "/frozenflame/server/ip" this is a key, which maps to an environment variable. Environment variables should be all CAPS and separated by underscores. Basically, slashes / become underscores _ and everything is capatalized. "/frozenflame/server/ip" becomes FROZENFLAME_SERVER_IP. Simple.

You can see an example of some of the environment variables in the helm chart values.yaml.

Tag summary

Content type

Image

Digest

sha256:6bf53d80e…

Size

109.2 MB

Last updated

over 2 years ago

docker pull nsnow/frozenflame-server