diff --git a/Archipelago-Server.Dockerfile b/Archipelago-Server.Dockerfile new file mode 100644 index 0000000..c0d4b5f --- /dev/null +++ b/Archipelago-Server.Dockerfile @@ -0,0 +1,43 @@ +FROM debian:bookworm-slim + +ENV USERNAME=archipelago +ENV HOMEDIR=/home/${USERNAME} +ENV SERVERDIR=${HOMEDIR}/server +ENV SAVEDIR=${HOMEDIR}/saves +ENV TMPDIR=${HOMEDIR}/tmp +ENV SERVERVERSION="0.6.7" + +# Download Server +ADD https://github.com/ArchipelagoMW/Archipelago/releases/download/${SERVERVERSION}/Archipelago_${SERVERVERSION}_linux-x86_64.tar.gz ${TMPDIR}/Archipelago.tar.gz + +# Install dependencies, unpack server and clear tmp files +RUN set -x \ + && apt-get update \ + && apt-get install -y --no-install-recommends --no-install-suggests \ + p7zip-full \ + && cd ${TMPDIR} \ + && 7z x Archipelago.tar.gz \ + && 7z x *.tar \ + && mkdir ${SERVERDIR} \ + && mkdir ${SAVEDIR} \ + && mv Archipelago/ArchipelagoServer ${SERVERDIR} \ + && mv Archipelago/lib ${SERVERDIR} \ + && chmod +x ${SERVERDIR}/ArchipelagoServer \ + && rm -rf ./* \ + && apt-get remove --purge -y \ + p7zip-full \ + && apt-get clean autoclean \ + && apt-get autoremove -y \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +WORKDIR $SERVERDIR + +COPY start_server.sh . + +RUN set -x \ + && chmod +x ./start_server.sh + +CMD [ "./start_server.sh" ] + +# required env vars +# SERVERPASSWORD diff --git a/start_server.sh b/start_server.sh new file mode 100644 index 0000000..2fa067d --- /dev/null +++ b/start_server.sh @@ -0,0 +1,25 @@ +#!/bin/bash +shopt -s nullglob + +if [[ -z "$SERVERPASSWORD" ]]; then + echo "Env Var SERVERPASSWORD is not set" + exit 0 +fi + +files=( ${SAVEDIR}/*.zip ) +savefile=${files[0]} +if [[ -z "$savefile" ]]; then + echo "No .zip savefile found in save directory ${SAVEDIR}" + exit 0 +fi + +echo "Using savefile ${savefile}" + +./ArchipelagoServer ${savefile} --port 38281 --password ${SERVERPASSWORD} + +if [[ $? -eq 0 ]]; then + echo "Started Archipelago Server" +else + echo "Error: Failed to start server" + exit 0 +fi