summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorKyle Brady2021-12-31 18:48:12 -0800
committerKyle Brady2022-01-03 23:33:53 -0800
commitc1ea0cdee4733e0a00d721dc1000d2e5411f9cda (patch)
treedda77c353be1da02ba19adf371a39c6b45883a7c
downloadaur-c1ea0cdee4733e0a00d721dc1000d2e5411f9cda.tar.gz
Inital package creation (41.65)
-rw-r--r--.SRCINFO26
-rw-r--r--.gitignore3
-rw-r--r--PKGBUILD41
-rw-r--r--project-zomboid-server.conf18
-rw-r--r--project-zomboid-server.install17
-rw-r--r--project-zomboid-server.service38
-rw-r--r--project-zomboid-server.sysusers2
-rw-r--r--project-zomboid-server.tmpfiles4
8 files changed, 149 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..95cc282e2d20
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,26 @@
+pkgbase = project-zomboid-server
+ pkgdesc = Dedicated server for the game Project Zomboid
+ pkgver = 41.65
+ pkgrel = 1
+ url = https://projectzomboid.com
+ install = project-zomboid-server.install
+ arch = x86_64
+ license = custom:PZLicense
+ makedepends = steamcmd
+ depends = java-runtime-headless
+ depends = lib32-glibc
+ depends = libxext
+ depends = gcc-libs
+ depends = libsm
+ depends = rcon-cli
+ backup = etc/project-zomboid/server.conf
+ source = project-zomboid-server.service
+ source = project-zomboid-server.conf
+ source = project-zomboid-server.sysusers
+ source = project-zomboid-server.tmpfiles
+ sha256sums = 1eb16b0d67aca6b112b1bfaead24fb3851c9b351b7e8804e334fb4f08906b891
+ sha256sums = 6d7163af00d1521c1802bbbf304eb62e8578ca7c7f9c3a1618f8ed5584c08591
+ sha256sums = 561f21c7cc53dc4a14eae829c04050e917d668649a1fffab630647c62f94bb08
+ sha256sums = b9bbddb77573ce3f4fde792114ac7685292caee07e7d6f1fc993db4f32013098
+
+pkgname = project-zomboid-server
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000000..2dfd12475b99
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+pkg/
+src/
+project-zomboid-server-*.pkg.tar.*
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..50e35c1fb6c1
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,41 @@
+# Maintainer: Kyle Brady <kyle at spark - gap dot com>
+
+pkgname=project-zomboid-server
+# While the pkgver is set to 41.65, the latest version will always be downloaded via steamcmd
+pkgver=41.65
+pkgrel=1
+pkgdesc="Dedicated server for the game Project Zomboid"
+arch=('x86_64')
+url='https://projectzomboid.com'
+license=('custom:PZLicense')
+depends=('java-runtime-headless' 'lib32-glibc' 'libxext' 'gcc-libs' 'libsm' 'rcon-cli')
+makedepends=('steamcmd')
+backup=('etc/project-zomboid/server.conf')
+install='project-zomboid-server.install'
+source=('project-zomboid-server.service'
+ 'project-zomboid-server.conf'
+ 'project-zomboid-server.sysusers'
+ 'project-zomboid-server.tmpfiles')
+sha256sums=('1eb16b0d67aca6b112b1bfaead24fb3851c9b351b7e8804e334fb4f08906b891'
+ '6d7163af00d1521c1802bbbf304eb62e8578ca7c7f9c3a1618f8ed5584c08591'
+ '561f21c7cc53dc4a14eae829c04050e917d668649a1fffab630647c62f94bb08'
+ 'b9bbddb77573ce3f4fde792114ac7685292caee07e7d6f1fc993db4f32013098')
+
+prepare() {
+ steamcmd +force_install_dir "$srcdir/$pkgname" +login anonymous +app_update 380870 validate +quit
+}
+
+package() {
+ cd "$srcdir"
+ mkdir -p "$pkgdir/opt"
+ cp -r $pkgname "$pkgdir/opt/"
+ rm -r "$pkgdir/opt/$pkgname/jre64"
+ rm "$pkgdir/opt/$pkgname/start-server.sh"
+ rm "$pkgdir/opt/$pkgname/ProjectZomboid32.json"
+
+ install -Dm644 $pkgname.service "$pkgdir/usr/lib/systemd/system/$pkgname.service"
+ install -Dm644 $pkgname.conf "$pkgdir/etc/project-zomboid/server.conf"
+ install -Dm644 $pkgname.sysusers "$pkgdir/usr/lib/sysusers.d/$pkgname.conf"
+ install -Dm644 $pkgname.tmpfiles "$pkgdir/usr/lib/tmpfiles.d/$pkgname.conf"
+ install -Dm644 "$pkgdir/opt/$pkgname/license/PZLicense.txt" "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
diff --git a/project-zomboid-server.conf b/project-zomboid-server.conf
new file mode 100644
index 000000000000..54b2854d7195
--- /dev/null
+++ b/project-zomboid-server.conf
@@ -0,0 +1,18 @@
+# Save/sever to use
+NAME="servertest"
+
+# Bypasses the create a password prompt
+ADMIN_PASSWORD="CHANGE_ME"
+
+# RCON Options both here and in:
+# /opt/project-zomboid-server/Zomboid/Server/$NAME.ini
+RCON_PORT="27015"
+# Password used to connect to RCON for graceful shutdowns
+RCON_PASSWORD="CHANGE_ME"
+
+# Most options should be set via:
+# /opt/project-zomboid-server/ProjectZomboid64.json
+# /opt/project-zomboid-server/Zomboid/Server/$NAME*
+# But any extra startup arguments to java and zomboid can be set with:
+#JVM_ARGS=
+#SERVER_ARGS=
diff --git a/project-zomboid-server.install b/project-zomboid-server.install
new file mode 100644
index 000000000000..0993305bcc89
--- /dev/null
+++ b/project-zomboid-server.install
@@ -0,0 +1,17 @@
+## arg 1: the new package version
+post_install() {
+ echo "CHANGE THE PASSWORDS IN /etc/project-zomboid/server.conf BEFORE STARTING THE SERVICE"
+ echo "UDP ports 16261 and 8766 need to be open in your firewall for users to connect."
+ echo "RCON password needs to be updated in the game settings to enable graceful service shutdown."
+ echo "Settings can be configured via:"
+ echo " Passwords & launch args: /etc/project-zomboid/server.conf"
+ echo " Server & game settings (made on start): /opt/project-zomboid-server/Zomboid/Server/servertest*"
+ echo " JVM settings (RAM): /opt/project-zomboid-server/ProjectZomboid64.json"
+ echo "By default, saves will be stored in /opt/project-zomboid-server/Zomboid/Saves/Multiplayer/"
+ echo "Start project-zomboid-server.service to create a default world."
+}
+
+## arg 1: the old package version
+post_remove() {
+ echo "Game saves, settings, and mods may left in /opt/project-zomboid-server/"
+}
diff --git a/project-zomboid-server.service b/project-zomboid-server.service
new file mode 100644
index 000000000000..f988e14058f0
--- /dev/null
+++ b/project-zomboid-server.service
@@ -0,0 +1,38 @@
+[Unit]
+Description=Project Zomboid dedicated server
+
+[Service]
+Type=simple
+User=zomboid
+Group=zomboid
+
+Environment=LD_LIBRARY_PATH="/opt/project-zomboid-server/linux64:/opt/project-zomboid-server/natives:/opt/project-zomboid-server/:${LD_LIBRARY_PATH}"
+EnvironmentFile=/etc/project-zomboid/server.conf
+# These variables need to be changed from the default value in the EnvironmentFile
+ExecCondition=/usr/bin/test "${ADMIN_PASSWORD}" != "CHANGE_ME"
+ExecCondition=/usr/bin/test "${RCON_PASSWORD}" != "CHANGE_ME"
+ExecStart=/opt/project-zomboid-server/ProjectZomboid64 $JVM_ARGS -- -adminpassword "${ADMIN_PASSWORD}" -servername "${NAME}" $SERVER_ARGS
+ExecStop=/usr/bin/rcon -a "127.0.0.1:${RCON_PORT}" -p "${RCON_PASSWORD}" -t rcon quit
+# Quitting / saving is aysnc, and doesn't have a good way to be wrapped by systemd
+# use timeout + tail to try and give the process some time to exit
+ExecStop=/usr/bin/timeout 60s /usr/bin/tail --pid="${MAINPID}" -f /dev/null
+ExecReload=/usr/bin/rcon -a "127.0.0.1:${RCON_PORT}" -p "${RCON_PASSWORD}" -t rcon reloadoptions
+
+WorkingDirectory=/opt/project-zomboid-server
+ReadWritePaths=/opt/project-zomboid-server
+ProtectSystem=full
+ProtectHome=true
+PrivateTmp=yes
+PrivateDevices=yes
+ProtectClock=yes
+ProtectKernelTunables=yes
+ProtectKernelModules=yes
+ProtectKernelLogs=yes
+ProtectControlGroups=yes
+RestrictSUIDSGID=yes
+RestrictRealtime=yes
+RestrictNamespaces=yes
+NoNewPrivileges=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/project-zomboid-server.sysusers b/project-zomboid-server.sysusers
new file mode 100644
index 000000000000..fa1f85299671
--- /dev/null
+++ b/project-zomboid-server.sysusers
@@ -0,0 +1,2 @@
+#Type Name ID GECOS Home directory Shell
+u zomboid - "Project Zomboid dedicated server" /opt/project-zomboid-server
diff --git a/project-zomboid-server.tmpfiles b/project-zomboid-server.tmpfiles
new file mode 100644
index 000000000000..7e831d4a0c86
--- /dev/null
+++ b/project-zomboid-server.tmpfiles
@@ -0,0 +1,4 @@
+#Type Path Mode User Group Age Argument
+d /opt/project-zomboid-server 0755 zomboid zomboid
+# Zomboid Server needs to be able to write mods to the steamapps folder
+d /opt/project-zomboid-server/steamapps 0755 zomboid zomboid