Der eigene Minecraft Server aus der Cloud. Kein Problem mit Docker, Terraform und AWS. Vom Einsteiger bis zum Powergamer – mit den unterschiedlichen EC2-Instanzen kann die Lösung ganz einfach an den persönlichen Bedarf angepasst werden.
Mal eben einen privaten Server für die nächste Zockerrunde starten. Noch schnell was durchtesten oder einfach die Vorzüge von Pay-per-use genießen. Für alle interessierten Cloudcrafter kommt hier das Rezept.
Zutaten
Zubereitung
1 – Hol dir die Sourcen
$ git clone https://bitbucket.org/scorb/de.scorban.demo.wordpress.git
2 – Generier die AWS Security Credentials
Geh auf die AWS Management Console => Identity & Access Management => Create New Users. Leg einen neuen Benutzer an, merk dir die Access Key ID und den Secret Access Key. Über Permissions => Attach Policy musst du dem neuen Benutzer die Policy „Administrator Access“ zuweisen.
3 – Setz die AWS Security Credentials als Umgebungsvariablen auf deiner Maschine
TF_VAR_access_key = DEIN_Access_Key_ID
TF_VAR_secret_key = DEIN_Secret_Access_Key
4 – Erstell ein AWS Key Pair
Geh auf die AWS Management Console => EC2 => Key Pairs => Create Key Pair. Vergib einen Key-Namen und speicher das pem-File auf deinem Rechner.
5 – Verknüpf dein AWS Key Pair mit den Terraform Sourcen
Hinterleg in der Terraform Configuration den AWS Key-Namen (Zeile 45) und setz den Pfad zu deinem pem-File (Zeile 53):
### Create AWS EC2 instance ### resource "aws_instance" "minecraft" { ami = "ami-d3c022bc" availability_zone = "eu-central-1a" instance_type = "t2.micro" key_name = "AWS-minecraft-key" security_groups = ["${aws_security_group.minecraft-sg.name}"] tags { Name = "minecraft" } provisioner "remote-exec" { connection { host = "${aws_instance.minecraft.public_ip}" private_key = "C:/.../.ssh/AWS-minecraft-key.pem" user = "ec2-user" } script = "bootstrap.sh" } }
6 – Erstell den Server
.../de.scorban.demo.wordpress/minecraft/terraform$ terraform plan .../de.scorban.demo.wordpress/minecraft/terraform$ terraform apply
- die EC2-Instanz „minecraft“
- eine Security Group „minecraft-sg“ mit folgenden Freigaben:
- eingehend Port 22 (SSH-Zugriff)
- eingehend Port 25565 (Minecraft-Clients)
- ausgehend alle Ports
Anschließend werden die Docker Engine installiert und der Docker Container mit dem Minecraft Server gestartet.
FERTIG
Die Serveradresse findest du über die AWS Management Console: such die EC2-Instanz mit dem Namen „minecraft“ und merk dir die Public IP. Jetzt nur noch den Minecraft-Client starten => Mehrspieler => Direkt verbinden => Serveradresse eintragen => ZOCKEN!!!
Tipps & Tricks
[...] echo "##### Start docker container #####" sudo docker pull infra.scorban.de:5000/scorban/minecraft_server:v3 sudo docker run -d -p 25565:25565 --name minecraft scorb/demo_wp_minecraft
- Du kannst die default-server.properties der gestarteten Instanz verändern
- Bau eine SSH-Verbindung zur EC2-Instanz auf
- Verbind dich mit dem laufenden Docker Container
sudo docker exec -i -t mc /bin/bash
- Verändere die server.properties im Verzeichnis „/minecraft“
- Restarte den Dockercontainer
sudo docker stop minecraft sudo docker start minecraft
- Verwende dein eigenes Docker Image mit server.properties deiner Wahl
- Bau dir ein eigenes Docker Image, hier ist ein Ansatz für das Dockerfile:
FROM scorb/demo_wp_minecraft:latest ADD server.properties /minecraft/
- Verknüpfe dein Image im Bootstrap-File „bootstrap.sh“ => guckst du Frage 2
- Bau dir ein eigenes Docker Image, hier ist ein Ansatz für das Dockerfile: