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:
- Create a Secret named valheimServerPass in the same region you plan to deploy the CDK Stack - we reference it by name here and pass that value to our container as a secret. valheim-server-docker requires this to be AT LEAST 5 characters (ideally much more). The secret string should be a key value pair as below:
aws secretsmanager create-secret --name valheimServerPass --secret-string '{"VALHEIM_SERVER_PASS":"SuperSecretServerPassword"}'
- Clone down our source code:
git clone git@github.com:rileydakota/valheim-ecs-fargate-cdk.git
- Install dependencies:
npm i
- Configure any server settings you need to change in the code here - will absolutely want to change
SERVER_NAME
!
const container = valheimTaskDefinition.addContainer("valheimContainer", {
image: ecs.ContainerImage.fromRegistry("lloesche/valheim-server"),
logging: ecs.LogDrivers.awsLogs({ streamPrefix: "ValheimServer" }),
environment: {
SERVER_NAME: "YOUR_SERVER_NAME_HERE",
SERVER_PORT: "2456",
- 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 or don't want them, then update here
new ValheimServer(app, "ValheimServer", {addAppGatewayStartStopStatus: true, appGatewayStartStopPassword: "changeme"});
- Assuming you have already bootstrapped your account via the CDK (see here if not) - deploy the stack
npx cdk deploy --all
- enjoy accidentally chopping trees onto your friends powered by AWS!
Coming soon
Coming soon
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