diff --git a/.env.example b/.env.example new file mode 100644 index 000000000..a19f71e7c --- /dev/null +++ b/.env.example @@ -0,0 +1,72 @@ +TZ="UTC" +PLAYERS="16" +PORT="8211" +PUID="1000" +PGID="1000" +MULTITHREADING="false" +COMMUNITY="false" +PUBLIC_IP="" +PUBLIC_PORT="" +SERVER_NAME="" +SERVER_DESCRIPTION="" +SERVER_PASSWORD="" +ADMIN_PASSWORD="" +UPDATE_ON_BOOT="true" +RCON_ENABLED="true" +RCON_PORT="25575" +QUERY_PORT="27015" + + +DIFFICULTY="None" +DAYTIME_SPEEDRATE="1.000000" +NIGHTTIME_SPEEDRATE="1.000000" +EXP_RATE="1.000000" +PAL_CAPTURE_RATE="1.000000" +PAL_SPAWN_NUM_RATE="1.000000" +PAL_DAMAGE_RATE_ATTACK="1.000000" +PAL_DAMAGE_RATE_DEFENSE="1.000000" +PLAYER_DAMAGE_RATE_ATTACK="1.000000" +PLAYER_DAMAGE_RATE_DEFENSE="1.000000" +PLAYER_STOMACH_DECREASE_RATE="1.000000" +PLAYER_STAMINA_DECREASE_RATE="1.000000" +PLAYER_AUTO_HP_REGEN_RATE="1.000000" +PLAYER_AUTO_HP_REGEN_RATE_IN_SLEEP="1.000000" +PAL_STOMACH_DECREASE_RATE="1.000000" +PAL_STAMINA_DECREASE_RATE="1.000000" +PAL_AUTO_HP_REGEN_RATE="1.000000" +PAL_AUTO_HP_REGEN_RATE_IN_SLEEP="1.000000" +BUILD_OBJECT_DAMAGE_RATE="1.000000" +BUILD_OBJECT_DETERIORATION_DAMAGE_RATE="1.000000" +COLLECTION_DROP_RATE="1.000000" +COLLECTION_OBJECT_HP_RATE="1.000000" +COLLECTION_OBJECT_RESPAWN_SPEED_RATE="1.000000" +ENEMY_DROP_ITEM_RATE="1.000000" +DEATH_PENALTY="All" +ENABLE_PLAYER_TO_PLAYER_DAMAGE="False" +ENABLE_FRIENDLY_FIRE="False" +ENABLE_INVADER_ENEMY="True" +ACTIVE_UNKO="False" +ENABLE_AIM_ASSIST_PAD="True" +ENABLE_AIM_ASSIST_KEYBOARD="False" +DROP_ITEM_MAX_NUM="3000" +DROP_ITEM_MAX_NUM_UNKO="100" +BASE_CAMP_MAX_NUM="128" +BASE_CAMP_WORKER_MAXNUM="15" +DROP_ITEM_ALIVE_MAX_HOURS="1.000000" +AUTO_RESET_GUILD_NO_ONLINE_PLAYERS="False" +AUTO_RESET_GUILD_TIME_NO_ONLINE_PLAYERS="72.00000" +GUILD_PLAYER_MAX_NUM="20" +PAL_EGG_DEFAULT_HATCHING_TIME="72.00000" +WORK_SPEED_RATE="1.000000" +IS_MULTIPLAY="False" +IS_PVP="False" +CAN_PICKUP_OTHER_GUILD_DEATH_PENALTY_DROP="False" +ENABLE_NON_LOGIN_PENALTY="True" +ENABLE_FAST_TRAVEL="True" +IS_START_LOCATION_SELECT_BY_MAP="True" +EXIST_PLAYER_AFTER_LOGOUT="False" +ENABLE_DEFENSE_OTHER_GUILD_PLAYER="False" +COOP_PLAYER_MAX_NUM="4" +REGION="" +USEAUTH="True" +BAN_LIST_URL="https://api.palworldgame.com/api/banlist.txt" \ No newline at end of file diff --git a/.gitignore b/.gitignore index d65ba4778..6ee54f3c8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ palworld .idea !charts/* -values*.yaml \ No newline at end of file +values*.yaml +.env \ No newline at end of file diff --git a/README.md b/README.md index daa615ad6..ecd1a911d 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ [English](/README.md) | [한국어](/docs/kr/README.md) | [简体中文](/docs/zh-CN/README.md) > [!TIP] -> Unsure how to get started? Check out the [this guide I wrote!](https://tice.tips/containerization/palworld-server-docker/) +> Unsure how to get started? Check out [this guide I wrote!](https://tice.tips/containerization/palworld-server-docker/) This is a Docker container to help you get started with hosting your own [Palworld](https://store.steampowered.com/app/1623730/Palworld/) dedicated server. @@ -23,7 +23,7 @@ This is a Docker container to help you get started with hosting your own This Docker container has been tested and will work on both Linux (Ubuntu/Debian) and Windows 10. > [!IMPORTANT] -> At the moment, Xbox Gamepass/Xbox Console players will not be able to join a dedicated server. +> At the moment, Xbox GamePass/Xbox Console players will not be able to join a dedicated server. > > They will need to join players using the invite code and are limited to sessions of 4 players max. @@ -33,7 +33,7 @@ This Docker container has been tested and will work on both Linux (Ubuntu/Debian |----------|---------|------------------------------------------| | CPU | 4 cores | 4+ cores | | RAM | 16GB | Recommend over 32GB for stable operation | -| Storage | 4GB | 12GB | +| Storage | 8GB | 20GB | ## How to use @@ -41,7 +41,7 @@ Keep in mind that you'll need to change the [environment variables](#environment ### Docker Compose -This repository includes an example [docker-compose.yml](/docker-compose.yml) file you can use to setup your server. +This repository includes an example [docker-compose.yml](/docker-compose.yml) file you can use to set up your server. ```yml services: @@ -71,6 +71,26 @@ services: - ./palworld:/palworld/ ``` +As an alternative, you can copy the [.env.example](.env.example) file to a new file called **.env** file. +Modify it to your needs, check out the [environment variables](#environment-variables) section to check the correct +values. Modify your [docker-compose.yml](docker-compose.yml) to this: + +```yml +services: + palworld: + image: thijsvanloef/palworld-server-docker:latest + restart: unless-stopped + container_name: palworld-server + stop_grace_period: 30s # Set to however long you are willing to wait for the container to gracefully stop + ports: + - 8211:8211/udp + - 27015:27015/udp + env_file: + - .env + volumes: + - ./palworld:/palworld/ +``` + ### Docker Run Change every <> to your own configuration @@ -95,13 +115,25 @@ docker run -d \ -e SERVER_NAME="World of Pals" \ -e SERVER_DESCRIPTION="Awesome World of Pal" \ --restart unless-stopped \ + --stop-timeout 30 \ thijsvanloef/palworld-server-docker:latest - ``` -> [!TIP] -> If you want to stop the container with a custom stop grace period then run: -> `docker stop --name palworld-server --time 30` +As an alternative, you can copy the [.env.example](.env.example) file to a new file called **.env** file. +Modify it to your needs, check out the [environment variables](#environment-variables) section to check the +correct values. Change your docker run command to this: + +```bash +docker run -d \ + --name palworld-server \ + -p 8211:8211/udp \ + -p 27015:27015/udp \ + -v ./:/palworld/ \ + --env-file .env \ + --restart unless-stopped \ + --stop-timeout 30 \ + thijsvanloef/palworld-server-docker:latest +``` ### Kubernetes @@ -154,7 +186,7 @@ It is highly recommended you set the following environment values before startin *** Required for docker stop to save and gracefully close the server > [!IMPORTANT] -> Boolean values used in environment variables are case sensitive because they are used in the shell script. +> Boolean values used in environment variables are case-sensitive because they are used in the shell script. > > They must be set using exactly `true` or `false` for the option to take effect. @@ -172,7 +204,13 @@ RCON is enabled by default for the palworld-server-docker image. Opening the RCON CLI is quite easy: ```bash -docker exec -it palworld-server rcon-cli +docker exec -it palworld-server rcon-cli " " +``` + +For example, you can broadcast a message to everyone in the server with the following command: + +```bash +docker exec -it palworld-server rcon-cli "Broadcast Hello everyone" ``` This will open a CLI that uses RCON to write commands to the Palworld Server. @@ -229,7 +267,8 @@ Example Usage: If BACKUP_CRON_EXPRESSION to `0 2 * * *`, the backup script will > [!IMPORTANT] > -> These Environment Variables/Settings are subject to change since the game is still in beta +> These Environment Variables/Settings are subject to change since the game is still in beta. +> Check out the [official webpage for the supported parameters.](https://tech.palworldgame.com/optimize-game-balance) | Variable | Description | Default Value | Allowed Value | |-------------------------------------------|----------------------------------------------------------------|----------------------------------------------------------------------------------------------|----------------------------------------|