gameadm/production/quadlet/rust.container

75 lines
1.9 KiB
Plaintext

# Rust Game Server Quadlet Container Definition
# Pfad: ~/.config/containers/systemd/rust.container (rootless)
# oder: /etc/containers/systemd/rust.container (system)
[Unit]
Description=Rust Game Server via gameadm
Documentation=https://git.pp1l.de/pp1l/gameadm
After=network-online.target
Wants=network-online.target
[Container]
Image=docker.io/didstopia/rust-server:latest
AutoUpdate=registry
# Umgebungsvariablen aus gameadm Konfiguration
EnvironmentFile=/etc/rust-server.conf
Environment=RUST_SERVER_STARTUP_ARGUMENTS=-batchmode -load -nographics +server.secure 1
Environment=RUST_SERVER_IDENTITY=main
Environment=RUST_SERVER_SEED=12345
Environment=RUST_SERVER_WORLDSIZE=3000
Environment=RUST_SERVER_MAXPLAYERS=4
Environment=RUST_SERVER_HOSTNAME=PP1L Rust Server - Powered by gameadm
Environment=RUST_SERVER_DESCRIPTION=Enterprise Rust Server managed by gameadm
Environment=RUST_SERVER_URL=https://git.pp1l.de/pp1l/gameadm
Environment=RUST_SERVER_BANNER_URL=
Environment=RUST_RCON_WEB=0
Environment=RUST_RCON_PORT=28016
Environment=RUST_RCON_PASSWORD_FILE=/tmp/rcon_password
# Netzwerk und Ports
PublishPort=28015:28015
PublishPort=28016:28016
# Volumes und Secrets
Volume=/srv/rust:/steamcmd/rust:Z
Secret=rust_server_password,type=mount,target=/tmp/server_password
Secret=rust_rcon_password,type=mount,target=/tmp/rcon_password
# Performance und Sicherheit
User=1000:1000
SecurityLabelType=container_runtime_t
NoNewPrivileges=true
ReadOnlyTmpfs=true
Tmpfs=/tmp
# Memory Limits
Memory=2G
MemorySwap=2G
# Health Check
HealthCmd=netstat -ln | grep :28015 || exit 1
HealthInterval=30s
HealthRetries=3
HealthStartPeriod=120s
# Restart Policy
Restart=on-failure
RestartSec=30
# Labels für Auto-Update
Label=io.containers.autoupdate=registry
Label=maintainer=gameadm
Label=service=rust
Label=environment=production
[Service]
Type=notify
NotifyAccess=all
Delegate=yes
TimeoutStartSec=600
TimeoutStopSec=120
[Install]
WantedBy=multi-user.target