AWS CDK/Cloudformation to deploy a Valheim Server using ECS Fargate!
This is a CDK Project for spinning up a Valheim game server on AWS Using ECS Fargate and Amazon EFS!
Uses valheim-server-docker - thanks to lloesche for putting it together!
Making the assumption you have an AWS Account Already and a valid set of creds configured:
aws secretsmanager create-secret --name valheimServerPass --secret-string '{"VALHEIM_SERVER_PASS":"SuperSecretServerPassword"}'
git clone [email protected]:rileydakota/valheim-ecs-fargate-cdk.git && valheim-ecs-fargate-cdk
npm i
cp .env.example .env
Decide if you want the optional AWS App gateway lambda endpoints to start and stop your server and get the server status. If you do, then change APPGW_START_STOP_PASSWORD
in .env
.
Assuming you have already bootstrapped your account via the CDK (see here if not) - deploy the stack
npx cdk deploy --all
If you want to configure the Valheim server, then you can do so in .env
. Environment variables with the VALHEIM_DOCKER_
prefix will be used in the environment we run the docker image in.
To see a full list of possible environment variables, see valheim-server-docker#environment-variables
/config/worlds_local/
exists in the container, then we will not copy the files from S3 into the docker container..env
).BOOTSTRAP_WITH_WORLD_NAME
in .env
to the same filename.npx cdk deploy --all
Load world: MyCoolValheimServer (MyCoolValheimServer)
Old location found ...
messages.ZIP archive structure:
# kayo @ ClockTower in ~/workspace/valheim-ecs-fargate-cdk on git:bootstrap-world o [22:02:46]
$ unzip -l resources/worlds/valheim_backup_2023-01-08T09_26_00_00.zip
Archive: resources/worlds/valheim_backup_2023-01-08T09_26_00_00.zip
Length Date Time Name
--------- ---------- ----- ----
39 2021-02-13 18:16 adminlist.txt
40 2021-02-13 18:16 bannedlist.txt
42 2021-02-13 18:16 permittedlist.txt
217 2021-02-12 20:26 Player-prev.log
217 2021-02-12 20:28 Player.log
218 2023-01-02 23:39 prefs
0 2023-01-08 20:52 worlds_local/
69646068 2022-11-28 12:04 worlds_local/MyCoolValheimServer.db
44 2022-11-28 12:04 worlds_local/MyCoolValheimServer.fwl
--------- -------
141326454 13 files
Coming soon
This assumes that you either have credentials that give you admin roles or have setup an IAM role with the required permsissions.
aws ecs execute-command
--region <REGION> \
--cluster <YOUR_CLUSTER_NAME_GOES_HERE_CHANGEME> \
--task <YOUR_TASK_ID_GOES_HERE_CHANGEME> \
--command "/bin/bash" \
--interactive
Now you should have an interactive shell you can use to explore the container.
Install the ecs-cli by running the following (this assumes Linux - for other environments see here)
sudo curl -Lo /usr/local/bin/ecs-cli https://amazon-ecs-cli.s3.amazonaws.com/ecs-cli-linux-amd64-latest
sudo chmod +x /usr/local/bin/ecs-cli
Using the Cluster Name outputted by successfully running the CDK template - run the following command:
ecs-cli ps --cluster YOUR_CLUSTER_NAME_GOES_HERE_CHANGEME
You will be presented with the public ip of your server as follows:
Name State Ports TaskDefinition Health
ValheimServerAwsCdkStack-fargateCluster7F3D820B-AxbOSXn1ghAs/8d190269c9df4d3e9709dccb89bdf3d8/valheimContainer RUNNING 1.1.1.1:2456->2456/udp, 1.1.1.1:2457->2457/udp, 1.1.1.1:2458->2458/udp ValheimServerAwsCdkStackvalheimTaskDefinitionB5805DE1:17 UNKNOWN
Game server runs on port 2456 (unless changed)
goto the ECS Service page (click the services dropdown and select ECS - or click here if you are in us-east-2). From here - you will see a Cluster listed. Click the cluster name to continue to the details page.
At the bottom half of the screen - click the Tasks tab tab - you should see a "Task ID". Click the task id to continue to the next page.
Finally - the public IP of your server will be listed here - under the Network section. Connect to the server using the IP and port 2456!
Coming soon