From a6e30557b99e43ed73d6a31f6ee36e74ee92c023 Mon Sep 17 00:00:00 2001 From: Thijs van Loef Date: Fri, 19 Jan 2024 18:22:08 +0100 Subject: [PATCH] add community server options --- Dockerfile | 6 +++++- README.md | 14 +++++++++----- docker-compose.yml | 7 ++++--- scripts/start.sh | 32 ++++++++++++++++++++++++++------ 4 files changed, 44 insertions(+), 15 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7ebe636..d1fe406 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,7 +7,11 @@ RUN apt-get update && apt-get install -y \ ENV PORT=8211 \ PLAYERS=16 \ - MULTITHREADING=FALSE + MULTITHREADING=false \ + COMMUNITY=false \ + PUBLIC_IP= \ + PUBLIC_PORT= \ + SERVER_PASSWORD= COPY ./scripts/* /home/steam/server/ RUN chmod +x /home/steam/server/init.sh /home/steam/server/start.sh diff --git a/README.md b/README.md index 28fd8cf..8f85fc5 100644 --- a/README.md +++ b/README.md @@ -60,11 +60,15 @@ It is highly recommended you set the following environment values before startin * PORT * MULTITHREADING -| Variable | Info | Default Values | Allowed Values | -|------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------|----------------| -| PLAYERS* | Max amount of players that are able to join the server | 16 | 1-31 | -| PORT* | UDP port that the server will expose | 8211 | 1024-65535 | -| MULTITHREADING** | Improves performance in multi-threaded CPU environments. It is effective up to a maximum of about 4 threads, and allocating more than this number of threads does not make much sense. | false | true/false | +| Variable | Info | Default Values | Allowed Values | +|------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------|----------------| +| PLAYERS* | Max amount of players that are able to join the server | 16 | 1-31 | +| PORT* | UDP port that the server will expose | 8211 | 1024-65535 | +| MULTITHREADING** | Improves performance in multi-threaded CPU environments. It is effective up to a maximum of about 4 threads, and allocating more than this number of threads does not make much sense. | false | true/false | +| COMMUNITY | Whether or not the server shows up in the community server browser (USE WITH SERVER_PASSWORD) | false | true/false | +| PUBLIC_IP | You can manually specify the global IP address of the network on which the server running.If not specified, it will be detected automatically. If it does not work well, try manual configuration. | | x.x.x.x | +| PUBLIC_PORT | You can manually specify the port number of the network on which the server running.If not specified, it will be detected automatically. If it does not work well, try manual configuration. | | x.x.x.x | +| SERVER_PASSWORD | Secure your community server with a password | | string | *highly recommended to set diff --git a/docker-compose.yml b/docker-compose.yml index 7bf5891..836f619 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,6 @@ services: palworld: - image: thijsvanloef/palworld-server-docker + image: thijsvanloef/palworld-server-docker:latest restart: unless-stopped container_name: palworld-server ports: @@ -9,6 +9,7 @@ services: environment: - PORT=8211 - PLAYERS=16 - - MULTITHREADING=FALSE + - MULTITHREADING=false + - COMMUNITY=false # Enable this if you want your server to show up in the community servers tab, USE WITH SERVER_PASSWORD! volumes: - - /path/to/your/palworld/folder:/palworld/ \ No newline at end of file + - ./palworld:/palworld/ \ No newline at end of file diff --git a/scripts/start.sh b/scripts/start.sh index b5b0283..1e1ead1 100644 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -1,13 +1,33 @@ #!/bin/sh + STARTCOMMAND="./PalServer.sh -port=${PORT} -players=${PLAYERS}" -printf "\e[0;32m*****STARTING SERVER*****\e[0m" -cd /palworld || exit +if [ "${COMMUNITY}" = true ]; then + STARTCOMMAND="${STARTCOMMAND} EpicApp=PalServer" +fi + +if [ -n "${PUBLIC_IP}" ]; then + STARTCOMMAND="${STARTCOMMAND} -publicip=${PUBLIC_IP}" +fi + +if [ -n "${PUBLIC_PORT}" ]; then + STARTCOMMAND="${STARTCOMMAND} -publiport=${PUBLIC_PORT}" +fi + +if [ -n "${SERVER_PASSWORD}" ]; then + STARTCOMMAND="${STARTCOMMAND} -serverpassword=${SERVER_PASSWORD}" +fi if [ "${MULTITHREADING}" = true ]; then - su steam -c "${STARTCOMMAND} -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS" -else - su steam -c "${STARTCOMMAND}" -fi \ No newline at end of file + STARTCOMMAND="${STARTCOMMAND} -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS" +fi + +cd /palworld || exit + +echo "${STARTCOMMAND}" + +printf "\e[0;32m*****STARTING SERVER*****\e[0m" + +su steam -c "${STARTCOMMAND}"