122 lines
3.2 KiB
Markdown
122 lines
3.2 KiB
Markdown
# Podman Template
|
|
|
|
- [Podman Template](#podman-template)
|
|
- [Install minecraft](#install-minecraft)
|
|
- [Create the minecraft user](#create-the-minecraft-user)
|
|
- [Convert Compose to Quadlet](#convert-compose-to-quadlet)
|
|
- [Install Quadlets](#install-quadlets)
|
|
- [Upgrade Quadlets](#upgrade-quadlets)
|
|
- [Expose minecraft](#expose-minecraft)
|
|
- [Backup minecraft](#backup-minecraft)
|
|
|
|
## Install minecraft
|
|
|
|
Find and replace minecraft with the name of the service.
|
|
|
|
### Create the minecraft user
|
|
|
|
```bash
|
|
# SSH into your podman server as root
|
|
useradd minecraft
|
|
loginctl enable-linger $(id -u minecraft)
|
|
systemctl --user --machine=minecraft@.host enable podman-restart
|
|
systemctl --user --machine=minecraft@.host enable --now podman.socket
|
|
mkdir -p /home/minecraft/.config/containers/systemd
|
|
```
|
|
|
|
### Convert Compose to Quadlet
|
|
|
|
Create a folder called `quadlets` in your podman_minecraft project.
|
|
|
|
```bash
|
|
# Generate the systemd service
|
|
podman run \
|
|
--security-opt label=disable \
|
|
--userns keep-id \
|
|
--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
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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](/active/podman_ddns/ddns.md#)
|
|
2. Create a SRV record in your DNS provider like the following:
|
|
|
|
active/podman_minecraft/secrets/reeseapps_records.json:
|
|
|
|
```json
|
|
{
|
|
"Comment": "CREATE/UPSERT/DELETE a record ",
|
|
"Changes": [
|
|
{
|
|
"Action": "UPSERT",
|
|
"ResourceRecordSet": {
|
|
"Name": "_minecraft._tcp.testcraft.reeseapps.com",
|
|
"Type": "SRV",
|
|
"TTL": 300,
|
|
"ResourceRecords": [
|
|
{
|
|
"Value": "0 5 25566 minecraft.reeseapps.com"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
```bash
|
|
aws route53 change-resource-record-sets --hosted-zone-id $(cat active/aws_route53/secrets/reeseapps-zoneid) --change-batch file://active/podman_minecraft/secrets/reeseapps_records.json
|
|
```
|
|
|
|
3. Test your record with `nslookup`
|
|
|
|
```bash
|
|
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](/active/systemd_borg/borg.md#create-a-backup-service)
|