Files
homelab/active/podman_minecraft/minecraft.md
ducoterra 5184c84d50
All checks were successful
Podman DDNS Image / build-and-push-ddns (push) Successful in 33s
overhauls of most service docs
2025-07-22 18:29:07 -04:00

2.7 KiB

Podman Template

Install minecraft

Find and replace minecraft with the name of the service.

Create the minecraft user

useradd minecraft

su - minecraft
ssh-keygen
exit
cp ~/.ssh/authorized_keys /home/minecraft/.ssh/authorized_keys
chown minecraft:minecraft /home/minecraft/.ssh/authorized_keys
loginctl enable-linger $(id -u minecraft)

SSH into the server as minecraft

systemctl --user enable podman-restart
systemctl --user enable --now podman.socket
mkdir -p ~/.config/containers/systemd

Convert Compose to Quadlet

Create a folder called quadlets in your podman_minecraft project.

# Generate the systemd service
podman run \
--security-opt label=disable \
--rm \
-v $(pwd)/active/podman_minecraft:/compose \
-v $(pwd)/active/podman_minecraft/quadlets:/quadlets \
quay.io/k9withabone/podlet \
-f /quadlets \
-i \
--overwrite \
compose /compose/compose.yaml

# Copy the files to the server
scp -r active/podman_minecraft/quadlets/. minecraft:~/.config/containers/systemd/

Install Quadlets

ssh minecraft

export GAME_SERVER_NAME=testcraft
mkdir $GAME_SERVER_NAME

# Download the server jar (only needed once)
podman run \
-it \
--rm \
-e SERVER_VERSION=1.21.8 \
-v $(pwd)/$GAME_SERVER_NAME:/downloads \
--security-opt label=disable \
--userns keep-id \
docker.io/ducoterra/get-minecraft:latest

systemctl --user daemon-reload
systemctl --user restart $GAME_SERVER_NAME

Upgrade Quadlets

scp -r quadlets/. minecraft:~/.config/containers/systemd/
ssh minecraft systemctl --user daemon-reload
ssh minecraft systemctl --user restart minecraft

Expose minecraft

  1. Create your minecraft ddns record first following these docs

  2. Create a SRV record in your DNS provider like the following:

    Field Value
    Record name _minecraft._tcp.testcraft.reeseapps.com
    Value 0 5 25566 minecraft.reeseapps.com
  3. Test your record with nslookup

    nslookup -q=srv _minecraft._tcp.testcraft.reeseapps.com
    
  4. Access your server at your domain "testcraft.reeseapps.com"

Backup minecraft

Follow the Borg Create a Backup Service Docs