From 5aee4ef303aa96f73d9985171ac5fefbb003adb3 Mon Sep 17 00:00:00 2001 From: kimzuni Date: Sat, 27 Apr 2024 16:45:52 +0900 Subject: [PATCH] custom messages, fix auto reboot, countdown, etc. --- Dockerfile | 9 +- docs/en/README.md | 161 +++++++++++++------------ docs/kr/README.md | 162 ++++++++++++++------------ scripts/broadcast.sh | 6 +- scripts/helper_functions.sh | 57 ++++++--- scripts/{auto_reboot.sh => reboot.sh} | 4 +- scripts/start.sh | 7 ++ scripts/update.sh | 4 +- 8 files changed, 232 insertions(+), 178 deletions(-) rename scripts/{auto_reboot.sh => reboot.sh} (75%) diff --git a/Dockerfile b/Dockerfile index 87b872f..b83acd4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -32,7 +32,7 @@ RUN apt-get update && \ curl \ net-tools \ ca-certificates \ - lib32gcc1-amd64-cross \ + lib32gcc-s1-amd64-cross=12.2.0-14cross1 \ procps=2:4.0.2-3 \ gettext-base=0.21-12 \ xdg-user-dirs=0.18-1 \ @@ -70,10 +70,14 @@ ENV TZ="UTC" \ AUTO_UPDATE_ENABLED=false \ AUTO_UPDATE_CRON_EXPRESSION="0 * * * *" \ AUTO_UPDATE_WARN_MINUTES=15 \ + AUTO_UPDATE_WARN_MESSAGE="Server will update in remaining_time minutes." \ AUTO_REBOOT_ENABLED=false \ AUTO_REBOOT_CRON_EXPRESSION="0 0 * * *" \ AUTO_REBOOT_WARN_MINUTES=15 \ + AUTO_REBOOT_WARN_MESSAGE="Server will reboot in remaining_time minutes." \ AUTO_REBOOT_EVEN_IF_PLAYERS_ONLINE=false \ + BROADCAST_COUNTDOWN_MTIMES="1 5 10 15 30 60" \ + BROADCAST_COUNTDOWN_SUSPEND_MESSAGE="Suspends countdown because there are no players." \ TARGET_COMMIT_ID= \ DISCORD_WEBHOOK_URL="" \ DISCORD_SUPPRESS_NOTIFICATIONS=false \ @@ -125,7 +129,6 @@ ENV TZ="UTC" \ DISCORD_ERR_BACKUP_DELETE_MESSAGE_URL= \ DISCORD_BROADCAST_MESSAGE_ENABLE=true \ DISCORD_BROADCAST_MESSAGE_URL= \ - BROADCAST_COUNTDOWN_MTIMES="1 5 10 15 30 60" \ DISABLE_GENERATE_SETTINGS=false \ ENABLE_PLAYER_LOGGING=true \ PLAYER_LOGGING_POLL_PERIOD=5 \ @@ -135,7 +138,7 @@ ENV TZ="UTC" \ ARG GIT_VERSION_TAG=unspecified COPY --chmod=755 ./scripts /home/steam/server -RUN for file in backup.sh update.sh restore.sh broadcast.sh; do \ +RUN for file in backup.sh update.sh restore.sh reboot.sh broadcast.sh; do \ mv /home/steam/server/"$file" /usr/local/bin/"${file%.sh}"; \ done diff --git a/docs/en/README.md b/docs/en/README.md index aa49444..5a44040 100644 --- a/docs/en/README.md +++ b/docs/en/README.md @@ -235,86 +235,97 @@ or by changing the permissions for all other: `chmod o=rwx data/` You can use the following values to change the settings of the server on boot. It is highly recommended you set the following environment values before starting the server: -| Variable | Info | Default Value | Allowed Values | -|--------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------| -| TZ | Timezone used for Cron and Game server. (Not applicable to Log) | UTC | See [TZ Identifiers](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#Time_Zone_abbreviations) | -| PUID\* | The uid of the user the server should run as. | 1000 | !0 | -| PGID\* | The gid of the user the server should run as. | 1000 | !0 | -| PORT\* | Game port that the server will expose. | 7777 | 1024-65535 | -| QUERY_PORT | Query port used to communicate with Steam servers. | 27016 | 1024-65535 | -| UPDATE_ON_BOOT\*\* | Update the server when the docker container starts. | true | true/false | -| BACKUP_ENABLED | Enables automatic backups. | true | true/false | -| BACKUP_CRON_EXPRESSION | Setting affects frequency of automatic backups. | 0 0 \* \* \* | Needs a Cron-Expression - See [Configuring Automatic Backups with Cron](#configuring-automatic-backups-with-cron) | -| DELETE_OLD_BACKUPS | Delete backups after a certain number of days. | false | true/false | -| OLD_BACKUP_DAYS | How many days to keep backups. | 30 | any positive integer | -| AUTO_UPDATE_ENABLED | Enables automatic updates. | false | true/false | -| AUTO_UPDATE_CRON_EXPRESSION | Setting affects frequency of automatic updates. | 0 \* \* \* \* | Needs a Cron-Expression - See [Configuring Automatic Updates with Cron](#configuring-automatic-updates-with-cron) | -| AUTO_UPDATE_WARN_MINUTES | How long to wait to saved and update the server, after the player were informed. | 15 | !0 | -| AUTO_REBOOT_ENABLED | Enables automatic reboots. | false | true/false | -| AUTO_REBOOT_CRON_EXPRESSION | Setting affects frequency of automatic reboots. | 0 0 \* \* \* | Needs a Cron-Expression - See [Configuring Automatic Reboots with Cron](#configuring-automatic-reboots-with-cron) | -| AUTO_REBOOT_WARN_MINUTES | How long to wait to saved and reboot the server, after the player were informed. | 15 | !0 | -| AUTO_REBOOT_EVEN_IF_PLAYERS_ONLINE | Reboot the Server even if there are players online. | false | true/false | -| TARGET_COMMIT_ID | Install and run the game server at the specified version. | _(empty)_ | See [Locking Specific Game Version](#locking-specific-game-version)(#target-commit-id) | -| DISCORD_WEBHOOK_URL | Discord webhook url found after creating a webhook on a discord server. | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_SUPPRESS_NOTIFICATIONS | Enables/Disables `@silent` messages for the server messages. | false | true/false | -| DISCORD_CONNECT_TIMEOUT | Discord command initial connection timeout. | 30 | !0 | -| DISCORD_MAX_TIMEOUT | Discord total hook timeout. | 30 | !0 | -| DISCORD_PRE_INSTALL_MESSAGE | Discord message sent when server begins installing. | Server is installing... | "string" | -| DISCORD_PRE_INSTALL_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | -| DISCORD_PRE_INSTALL_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_POST_INSTALL_MESSAGE | Discord message sent when server completes installing. | Server install complete! | "string" | -| DISCORD_POST_INSTALL_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | -| DISCORD_POST_INSTALL_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_PRE_UPDATE_BOOT_MESSAGE | Discord message sent when server begins updating. | Server is updating... | "string" | -| DISCORD_PRE_UPDATE_BOOT_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | -| DISCORD_PRE_UPDATE_BOOT_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_POST_UPDATE_BOOT_MESSAGE | Discord message sent when server completes updating. | Server update complete! | "string" | -| DISCORD_POST_UPDATE_BOOT_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | -| DISCORD_POST_UPDATE_BOOT_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_PRE_START_MESSAGE | Discord message sent when server begins to start. | Server has been started! | "string" | -| DISCORD_PRE_START_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | -| DISCORD_PRE_START_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_SERVER_INFO_MESSAGE_ENABLE | Send the server settings with DISCORD_PRE_START_MESSAGE. | true | true/false | -| DISCORD_SERVER_INFO_MESSAGE_WITH_IP | Send the server IP and Port with server info. | false | true/false | -| DISCORD_PRE_SHUTDOWN_MESSAGE | Discord message sent when server begins to shutdown. | Server is shutting down... | "string" | -| DISCORD_PRE_SHUTDOWN_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | -| DISCORD_PRE_SHUTDOWN_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_POST_SHUTDOWN_MESSAGE | Discord message sent when server begins to shutdown. | Server is stopped! | "string" | -| DISCORD_POST_SHUTDOWN_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | -| DISCORD_POST_SHUTDOWN_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_PLAYER_JOIN_MESSAGE | Discord message sent when player joins the server. | `player_name` has joined! | "string" | -| DISCORD_PLAYER_JOIN_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | -| DISCORD_PLAYER_JOIN_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_PLAYER_LEAVE_MESSAGE | Discord message sent when player leaves the server. | `player_name` has left. | "string" | -| DISCORD_PLAYER_LEAVE_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | -| DISCORD_PLAYER_LEAVE_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_PRE_BACKUP_MESSAGE | Discord message when starting to create a backup. | Creating backup... | "string" | -| DISCORD_PRE_BACKUP_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | -| DISCORD_PRE_BACKUP_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_POST_BACKUP_MESSAGE | Discord message when a backup has been made. | Backup created at `file_path` | "string" | -| DISCORD_POST_BACKUP_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | -| DISCORD_POST_BACKUP_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_PRE_BACKUP_DELETE_MESSAGE | Discord message when starting to remove older backups. | Removing backups older than `old_backup_days` days | "string" | -| DISCORD_PRE_BACKUP_DELETE_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | -| DISCORD_PRE_BACKUP_DELETE_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_POST_BACKUP_DELETE_MESSAGE | Discord message when successfully removed older backups. | Removed backups older than `old_backup_days` days | "string" | -| DISCORD_POST_BACKUP_DELETE_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | -| DISCORD_POST_BACKUP_DELETE_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_ERR_BACKUP_DELETE_MESSAGE | Discord message when there has been an error removing older backups. | Unable to delete old backups, OLD_BACKUP_DAYS is not an integer. OLD_BACKUP_DAYS=`old_backup_days` | "string" | -| DISCORD_ERR_BACKUP_DELETE_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | -| DISCORD_ERR_BACKUP_DELETE_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_BROADCAST_MESSAGE_ENABLE\*\* | If the Discord message is enabled for broadcast content. | true | true/false | -| DISCORD_BROADCAST_MESSAGE_URL\* | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | -| BROADCAST_COUNTDOWN_MTIMES | Broadcast when the remaining time during countdown is included. | 1 5 10 15 30 60 | !0 and Word spacing | -| DISABLE_GENERATE_SETTINGS | Whether to automatically generate the Game.ini | false | true/false | -| ENABLE_PLAYER_LOGGING | Enables Logging and announcing when players join and leave. | true | true/false | -| PLAYER_LOGGING_POLL_PERIOD | Polling period (in seconds) to check for players who have joined or left | 5 | !0 | -| ARM_COMPATIBILITY_MODE | Switches the compatibility layer from Box86 to QEMU when executing steamcmd for server updates. This setting is only applicable for ARM64 hosts. | false | true/false | +| Variable | Info | Default Value | Allowed Values | Added in Version | +|--------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------|------------------| +| TZ | Timezone used for Cron and Game server. (Not applicable to Log) | UTC | See [TZ Identifiers](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#Time_Zone_abbreviations) | 0.1.0 | +| PUID\* | The uid of the user the server should run as. | 1000 | !0 | 0.1.0 | +| PGID\* | The gid of the user the server should run as. | 1000 | !0 | 0.1.0 | +| PORT\* | Game port that the server will expose. | 7777 | 1024-65535 | 0.1.0 | +| QUERY_PORT | Query port used to communicate with Steam servers. | 27016 | 1024-65535 | 0.1.0 | +| UPDATE_ON_BOOT\*\* | Update the server when the docker container starts. | true | true/false | 0.1.0 | +| BACKUP_ENABLED | Enables automatic backups. | true | true/false | 0.1.1 | +| BACKUP_CRON_EXPRESSION | Setting affects frequency of automatic backups. | 0 0 \* \* \* | Needs a Cron-Expression - See [Configuring Automatic Backups with Cron](#configuring-automatic-backups-with-cron) | 0.1.1 | +| DELETE_OLD_BACKUPS | Delete backups after a certain number of days. | false | true/false | 0.1.1 | +| OLD_BACKUP_DAYS | How many days to keep backups. | 30 | any positive integer | 0.1.1 | +| AUTO_UPDATE_ENABLED | Enables automatic updates. | false | true/false | 0.1.4 | +| AUTO_UPDATE_CRON_EXPRESSION | Setting affects frequency of automatic updates. | 0 \* \* \* \* | Needs a Cron-Expression - See [Configuring Automatic Updates with Cron](#configuring-automatic-updates-with-cron) | 0.1.4 | +| AUTO_UPDATE_WARN_MINUTES | How long to wait to saved and update the server, after the player were informed. (This will be ignored, if no Players are connected) | 15 | !0 | 0.1.4 | +| AUTO_UPDATE_WARN_MESSAGE | Messages to broadcast on countdown for automatic updates. | Server will update in `remaining_time` minutes. | "string" | dev | +| AUTO_REBOOT_ENABLED | Enables automatic reboots. | false | true/false | dev | +| AUTO_REBOOT_CRON_EXPRESSION | Setting affects frequency of automatic reboots. | 0 0 \* \* \* | Needs a Cron-Expression - See [Configuring Automatic Reboots with Cron](#configuring-automatic-reboots-with-cron) | dev | +| AUTO_REBOOT_WARN_MINUTES | How long to wait to saved and reboot the server, after the player were informed. (This will be ignored, if no Players are connected) | 15 | !0 | dev | +| AUTO_REBOOT_WARN_MESSAGE | Messages to broadcast on countdown for automatic reboots. | Server will reboot in `remaining_time` minutes. | "string" | dev | +| AUTO_REBOOT_EVEN_IF_PLAYERS_ONLINE | Reboot the Server even if there are players online. | false | true/false | dev | +| BROADCAST_COUNTDOWN_MTIMES | Broadcast when the remaining time during countdown is included. | 1 5 10 15 30 60 | !0 and " "(Space) | 0.1.6 | +| BROADCAST_COUNTDOWN_SUSPEND_MESSAGE | Discord message when countdown suspended due to no players. | Suspends countdown because there are no players. | "string" | dev | +| TARGET_COMMIT_ID | Install and run the game server at the specified version. | _(empty)_ | See [Locking Specific Game Version](#locking-specific-game-version)(#target-commit-id) | 0.1.3 | +| DISCORD_WEBHOOK_URL | Discord webhook url found after creating a webhook on a discord server. | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.0 | +| DISCORD_SUPPRESS_NOTIFICATIONS | Enables/Disables `@silent` messages for the server messages. | false | true/false | 0.1.0 | +| DISCORD_CONNECT_TIMEOUT | Discord command initial connection timeout. | 30 | !0 | 0.1.0 | +| DISCORD_MAX_TIMEOUT | Discord total hook timeout. | 30 | !0 | 0.1.0 | +| DISCORD_PRE_INSTALL_MESSAGE | Discord message sent when server begins installing. | Server is installing... | "string" | 0.1.0 | +| DISCORD_PRE_INSTALL_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | 0.1.0 | +| DISCORD_PRE_INSTALL_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.0 | +| DISCORD_POST_INSTALL_MESSAGE | Discord message sent when server completes installing. | Server install complete! | "string" | 0.1.2 | +| DISCORD_POST_INSTALL_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | 0.1.2 | +| DISCORD_POST_INSTALL_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.2 | +| DISCORD_PRE_UPDATE_BOOT_MESSAGE | Discord message sent when server begins updating. | Server is updating... | "string" | 0.1.0 | +| DISCORD_PRE_UPDATE_BOOT_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | 0.1.0 | +| DISCORD_PRE_UPDATE_BOOT_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.0 | +| DISCORD_POST_UPDATE_BOOT_MESSAGE | Discord message sent when server completes updating. | Server update complete! | "string" | 0.1.2 | +| DISCORD_POST_UPDATE_BOOT_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | 0.1.2 | +| DISCORD_POST_UPDATE_BOOT_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.2 | +| DISCORD_PRE_START_MESSAGE | Discord message sent when server begins to start. | Server has been started! | "string" | 0.1.0 | +| DISCORD_PRE_START_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | 0.1.0 | +| DISCORD_PRE_START_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.0 | +| DISCORD_SERVER_INFO_MESSAGE_ENABLED | Send the server settings with DISCORD_PRE_START_MESSAGE. | true | true/false | 0.1.1 | +| DISCORD_SERVER_INFO_MESSAGE_WITH_IP | Send the server IP and Port with server info. | false | true/false | 0.1.0 | +| DISCORD_PRE_SHUTDOWN_MESSAGE | Discord message sent when server begins to shutdown. | Server is shutting down... | "string" | 0.1.0 | +| DISCORD_PRE_SHUTDOWN_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | 0.1.0 | +| DISCORD_PRE_SHUTDOWN_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.0 | +| DISCORD_POST_SHUTDOWN_MESSAGE | Discord message sent when server begins to shutdown. | Server is stopped! | "string" | 0.1.0 | +| DISCORD_POST_SHUTDOWN_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | 0.1.0 | +| DISCORD_POST_SHUTDOWN_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.0 | +| DISCORD_PLAYER_JOIN_MESSAGE | Discord message sent when player joins the server. | `player_name` has joined! | "string" | 0.1.9 | +| DISCORD_PLAYER_JOIN_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | 0.1.9 | +| DISCORD_PLAYER_JOIN_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.9 | +| DISCORD_PLAYER_LEAVE_MESSAGE | Discord message sent when player leaves the server. | `player_name` has left. | "string" | 0.1.9 | +| DISCORD_PLAYER_LEAVE_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | 0.1.9 | +| DISCORD_PLAYER_LEAVE_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.9 | +| DISCORD_PRE_BACKUP_MESSAGE | Discord message when starting to create a backup. | Creating backup... | "string" | 0.1.1 | +| DISCORD_PRE_BACKUP_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | 0.1.1 | +| DISCORD_PRE_BACKUP_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.1 | +| DISCORD_POST_BACKUP_MESSAGE | Discord message when a backup has been made. | Backup created at `file_path` | "string" | 0.1.1 | +| DISCORD_POST_BACKUP_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | 0.1.1 | +| DISCORD_POST_BACKUP_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.1 | +| DISCORD_PRE_BACKUP_DELETE_MESSAGE | Discord message when starting to remove older backups. | Removing backups older than `old_backup_days` days | "string" | 0.1.1 | +| DISCORD_PRE_BACKUP_DELETE_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | 0.1.1 | +| DISCORD_PRE_BACKUP_DELETE_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.1 | +| DISCORD_POST_BACKUP_DELETE_MESSAGE | Discord message when successfully removed older backups. | Removed backups older than `old_backup_days` days | "string" | 0.1.1 | +| DISCORD_POST_BACKUP_DELETE_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | 0.1.1 | +| DISCORD_POST_BACKUP_DELETE_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.1 | +| DISCORD_ERR_BACKUP_DELETE_MESSAGE | Discord message when there has been an error removing older backups. | Unable to delete old backups, OLD_BACKUP_DAYS is not an integer. OLD_BACKUP_DAYS=`old_backup_days` | "string" | 0.1.1 | +| DISCORD_ERR_BACKUP_DELETE_MESSAGE_ENABLED | If the Discord message is enabled for this message. | true | true/false | 0.1.1 | +| DISCORD_ERR_BACKUP_DELETE_MESSAGE_URL | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.1 | +| DISCORD_BROADCAST_MESSAGE_ENABLE\*\* | If the Discord message is enabled for broadcast content. | true | true/false | 0.1.6 | +| DISCORD_BROADCAST_MESSAGE_URL\* | Discord Webhook URL for this message. (if left empty will use DISCORD_WEBHOOK_URL) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.6 | +| DISABLE_GENERATE_SETTINGS | Whether to automatically generate the Game.ini | false | true/false | 0.1.1 | +| ENABLE_PLAYER_LOGGING | Enables Logging and announcing when players join and leave. | true | true/false | 0.1.9 | +| PLAYER_LOGGING_POLL_PERIOD | Polling period (in seconds) to check for players who have joined or left | 5 | !0 | 0.1.9 | +| ARM_COMPATIBILITY_MODE | Switches the compatibility layer from Box86 to QEMU when executing steamcmd for server updates. This setting is only applicable for ARM64 hosts. | false | true/false | 0.1.0 | \* highly recommended to set \*\* Make sure you know what you are doing when running this option enabled. +
List of deleted or changed environment variables + +| Variable | Available Versions | Changed to | +|------------------------------------|--------------------|-------------------------------------| +| DISCORD_SERVER_INFO_MESSAGE_ENABLE | 0.1.0 | DISCORD_SERVER_INFO_MESSAGE_ENABLED | + +
+ ### Game Ports | Port | Info | diff --git a/docs/kr/README.md b/docs/kr/README.md index 083abd2..da5a9c4 100644 --- a/docs/kr/README.md +++ b/docs/kr/README.md @@ -235,86 +235,98 @@ docker rmi $(docker images | grep -E ^"(ghcr.io\/)?kimzuni/longvinter-docker-ser 아래 값들을 사용하여 서버의 설정을 변경할 수 있습니다. 서버를 실행하기 전에 값을 설정해야 적용됩니다. -| 변수명 | 정보 | 기본값 | 설정 가능한 값 | -|--------------------------------------------|----------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------| -| TZ | Cron 및 게임 서버에 사용되는 시간대 설정 (로그 파일에는 적용되지 않음) | UTC | [TZ Identifiers](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#Time_Zone_abbreviations) 참고 | -| PUID\* | 지정한 값을 가진 UID로 서버 실행 | 1000 | !0 | -| PGID\* | 지정한 값을 가진 GID로 서버 실행 | 1000 | !0 | -| PORT\* | 서버 게임 포트 번호 | 7777 | 1024-65535 | -| QUERY_PORT | 스팀 서버와 통신하기 위한 쿼리 포트 번호 | 27016 | 1024-65535 | -| UPDATE_ON_BOOT\*\* | 서버 시작 시 자동으로 서버 업데이트 진행 | true | true/false | -| BACKUP_ENABLED | 자동 백업 할성화 | true | true/false | -| BACKUP_CRON_EXPRESSION | 자동 백업 빈도 설정 | 0 0 \* \* \* | 크론식 표현 - [Cron으로 자동 백업 설정하는 방법](#cron으로-자동-백업-설정하는-방법) 참고 바람 | -| DELETE_OLD_BACKUPS | 자동 백업 시 오래된 백업 파일 자동 삭제 | false | true/false | -| OLD_BACKUP_DAYS | 지정한 일수가 지난 백업 파일만 삭제 | 30 | !0 | -| AUTO_UPDATE_ENABLED | 자동 업데이트 활성화 | false | true/false | -| AUTO_UPDATE_CRON_EXPRESSION | 자동 업데이트 빈도 설정 | 0 \* \* \* \* | 크론식 표현 - [Cron으로 자동 업데이트 설정하는 방법](#cron으로-자동-업데이트-설정하는-방법) 참고 바람 | -| AUTO_UPDATE_WARN_MINUTES | 플레이어에게 알림 전송 후 지정된 시간이 지나고 서버가 저장되면 업데이트 진행 | 15 | !0 | -| AUTO_REBOOT_ENABLED | 자동 재부팅 활성화 | false | true/false | -| AUTO_REBOOT_CRON_EXPRESSION | 자동 재부팅 빈도 설정 | 0 0 \* \* \* | 크론식 표현 - [Cron으로 자동 재부팅 설정하는 방법](#cron으로-자동-재부팅-설정하는-방법) 참고 바람 | -| AUTO_REBOOT_WARN_MINUTES | 플레이어에게 알림 전송 후 지정된 시간이 지나고 서버가 저장되면 재부팅 진행 | 15 | !0 | -| AUTO_REBOOT_EVEN_IF_PLAYERS_ONLINE | 플레이 중인 유저가 있을 경우에도 재부팅 진행 | false | true/false | -| TARGET_COMMIT_ID | 게임 서버를 지정한 Commit ID를 가진 버전으로 설치 및 실행 | _(empty)_ | [특정 게임 버전으로 고정](#특정-게임-버전으로-고정) 참고 | -| DISCORD_WEBHOOK_URL | 디스코드 서버에서 생성한 웹훅 URL | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_SUPPRESS_NOTIFICATIONS | 디스코드 메시지 전송 시 멤버들에게 알림을 보내지 않음 | false | true/false | -| DISCORD_CONNECT_TIMEOUT | 지정한 시간동안 디스코드 웹훅에 연결할 수 없을 경우 연결 취소 | 30 | !0 | -| DISCORD_MAX_TIMEOUT | 지정한 시간동안 디스코드 메시지가 전송되지 않으면 강제 종료 | 30 | !0 | -| DISCORD_PRE_INSTALL_MESSAGE | 서버 설치 전 전송되는 디스코드 메시지 | Server is installing... | "string" | -| DISCORD_PRE_INSTALL_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | -| DISCORD_PRE_INSTALL_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_POST_INSTALL_MESSAGE | 서버 설치 후 전송되는 디스코드 메시지 | Server install complete! | "string" | -| DISCORD_POST_INSTALL_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | -| DISCORD_POST_INSTALL_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_PRE_UPDATE_BOOT_MESSAGE | 서버 업데이트 전 전송되는 디스코드 메시지 | Server is updating... | "string" | -| DISCORD_PRE_UPDATE_BOOT_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | -| DISCORD_PRE_UPDATE_BOOT_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_POST_UPDATE_BOOT_MESSAGE | 서버 업데이트 후 전송되는 디스코드 메시지 | Server update complete! | "string" | -| DISCORD_POST_UPDATE_BOOT_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | -| DISCORD_POST_UPDATE_BOOT_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_PRE_START_MESSAGE | 서버 시작 시 전송되는 디스코드 메시지 | Server has been started! | "string" | -| DISCORD_PRE_START_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | -| DISCORD_PRE_START_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_SERVER_INFO_MESSAGE_ENABLED | 서버 시작 메시지 전송 시 서버 설정 내용을 같이 전송 | true | true/false | -| DISCORD_SERVER_INFO_MESSAGE_WITH_IP | 서버 설정 내용 전송 시 서버 IP 및 포트 번호를 같이 전송 (IP로 접속할 때 필요) | false | true/false | -| DISCORD_PRE_SHUTDOWN_MESSAGE | 서버 종료 전 전송되는 디스코드 메시지 | Server is shutting down... | "string" | -| DISCORD_PRE_SHUTDOWN_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | -| DISCORD_PRE_SHUTDOWN_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_POST_SHUTDOWN_MESSAGE | 서버 종료 후 전송되는 디스코드 메시지 | Server is stopped! | "string" | -| DISCORD_POST_SHUTDOWN_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | -| DISCORD_POST_SHUTDOWN_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_PLAYER_JOIN_MESSAGE | 플레이어가 서버에 접속할 때 전송되는 디스코드 메시지 | `player_name` has joined! | "string" | -| DISCORD_PLAYER_JOIN_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | -| DISCORD_PLAYER_JOIN_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_PLAYER_LEAVE_MESSAGE | 플레이어가 서버에서 나갈 때 전송되는 디스코드 메시지 | `player_name` has left. | "string" | -| DISCORD_PLAYER_LEAVE_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | -| DISCORD_PLAYER_LEAVE_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_PRE_BACKUP_MESSAGE | 백업 시작 전 전송되는 메시지 | Creating backup... | "string" | -| DISCORD_PRE_BACKUP_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | -| DISCORD_PRE_BACKUP_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_POST_BACKUP_MESSAGE | 백업 완료 후 전송되는 메시지 | Backup created at `file_path` | "string" | -| DISCORD_POST_BACKUP_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | -| DISCORD_POST_BACKUP_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_PRE_BACKUP_DELETE_MESSAGE | 오래된 백업 파일 삭제 전 전송되는 메시지 | Removing backups older than `old_backup_days` days | "string" | -| DISCORD_PRE_BACKUP_DELETE_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | -| DISCORD_PRE_BACKUP_DELETE_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_POST_BACKUP_DELETE_MESSAGE | 오래된 백업 파일 삭제 완료 후 전송되는 메시지 | Removed backups older than `old_backup_days` days | "string" | -| DISCORD_POST_BACKUP_DELETE_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | -| DISCORD_POST_BACKUP_DELETE_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_ERR_BACKUP_DELETE_MESSAGE | 오래된 백업 파일 삭제 실패 시 전송되는 메시지 | Unable to delete old backups, OLD_BACKUP_DAYS is not an integer. OLD_BACKUP_DAYS=`old_backup_days` | "string" | -| DISCORD_ERR_BACKUP_DELETE_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | -| DISCORD_ERR_BACKUP_DELETE_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | -| DISCORD_BROADCAST_MESSAGE_ENABLE\*\* | 이 값이 `true`인 경우 브로드캐스트 메시지를 디스코드로 전송 | true | true/false | -| DISCORD_BROADCAST_MESSAGE_URL\* | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | -| BROADCAST_COUNTDOWN_MTIMES | 카운트다운 진행 중 남은 시간이 이 값에 포함되어 있을 경우 브로드캐스트로 알림 | 1 5 10 15 30 60 | !0 and " "(Space) | -| DISABLE_GENERATE_SETTINGS | 서버 설정 파일 `Game.ini`에 적용되는 모든 환경변수 설정 무시 및 기본 값으로 설정 | false | true/false | -| ENABLE_PLAYER_LOGGING | 플레이어가 서버에 접속하거나 나갈 때 알림을 활성화 여부 | true | true/false | -| PLAYER_LOGGING_POLL_PERIOD | 지정한 초마다 플레이어 접속 및 퇴장 여부 체크 | 5 | !0 | -| ARM_COMPATIBILITY_MODE | 서버 업데이트를 위해 steamcmd를 실행할 때 Box86에서 QEMU로 호환성 계층을 전환합니다. 이 설정은 ARM64 호스트에만 적용 가능합니다. | false | true/false | +| 변수명 | 정보 | 기본값 | 설정 가능한 값 | 추가된 버전 | +|--------------------------------------------|----------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------|-----------| +| TZ | Cron 및 게임 서버에 사용되는 시간대 설정 (로그 파일에는 적용되지 않음) | UTC | [TZ Identifiers](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#Time_Zone_abbreviations) 참고 | 0.1.0 | +| PUID\* | 지정한 값을 가진 UID로 서버 실행 | 1000 | !0 | 0.1.0 | +| PGID\* | 지정한 값을 가진 GID로 서버 실행 | 1000 | !0 | 0.1.0 | +| PORT\* | 서버 게임 포트 번호 | 7777 | 1024-65535 | 0.1.0 | +| QUERY_PORT | 스팀 서버와 통신하기 위한 쿼리 포트 번호 | 27016 | 1024-65535 | 0.1.0 | +| UPDATE_ON_BOOT\*\* | 서버 시작 시 자동으로 서버 업데이트 진행 | true | true/false | 0.1.0 | +| BACKUP_ENABLED | 자동 백업 할성화 | true | true/false | 0.1.1 | +| BACKUP_CRON_EXPRESSION | 자동 백업 빈도 설정 | 0 0 \* \* \* | 크론식 표현 - [Cron으로 자동 백업 설정하는 방법](#cron으로-자동-백업-설정하는-방법) 참고 바람 | 0.1.1 | +| DELETE_OLD_BACKUPS | 자동 백업 시 오래된 백업 파일 자동 삭제 | false | true/false | 0.1.1 | +| OLD_BACKUP_DAYS | 백업 파일 보관 일수 | 30 | !0 | 0.1.1 | +| AUTO_UPDATE_ENABLED | 자동 업데이트 활성화 | false | true/false | 0.1.4 | +| AUTO_UPDATE_CRON_EXPRESSION | 자동 업데이트 빈도 설정 | 0 \* \* \* \* | 크론식 표현 - [Cron으로 자동 업데이트 설정하는 방법](#cron으로-자동-업데이트-설정하는-방법) 참고 바람 | 0.1.4 | +| AUTO_UPDATE_WARN_MINUTES | 플레이어가 있을 경우 서버를 저장 및 업데이트할 때까지 기다리는 시간(분) | 15 | !0 | 0.1.4 | +| AUTO_UPDATE_WARN_MESSAGE | 자동 업데이트 카운트다운 시 남은 시간을 브로드캐스트 할 떄 전송되는 메시지 | Server will update in `remaining_time` minutes. | "string" | dev | +| AUTO_REBOOT_ENABLED | 자동 재부팅 활성화 | false | true/false | dev | +| AUTO_REBOOT_CRON_EXPRESSION | 자동 재부팅 빈도 설정 | 0 0 \* \* \* | 크론식 표현 - [Cron으로 자동 재부팅 설정하는 방법](#cron으로-자동-재부팅-설정하는-방법) 참고 바람 | dev | +| AUTO_REBOOT_WARN_MINUTES | 플레이어가 있을 경우 서버를 저장 및 재부팅할 때까지 기다리는 시간(분) | 15 | !0 | dev | +| AUTO_REBOOT_WARN_MESSAGE | 자동 재부팅 카운트다운 시 남은 시간을 브로드캐스트 할 떄 전송되는 메시지 | Server will update in `remaining_time` minutes. | "string" | dev | +| AUTO_REBOOT_EVEN_IF_PLAYERS_ONLINE | 플레이어가 있을 경우에도 자동 재부팅 진행 | false | true/false | dev | +| BROADCAST_COUNTDOWN_MTIMES | 카운트다운 중 남은 시간이 이 값에 포함되어 있을 경우에만 브로드캐스트 | 1 5 10 15 30 60 | !0 and " "(Space) | 0.1.6 | +| BROADCAST_COUNTDOWN_SUSPEND_MESSAGE | 플레이어가 없어 카운트다운이 중단된 경우 브로드캐스트 메시지 | Suspends countdown because there are no players. | "string" | dev | +| BROADCAST_COUNTDOWN_SUSPEND_MESSAGE_ENABLE | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | dev | +| TARGET_COMMIT_ID | 게임 서버를 지정한 Commit ID를 가진 버전으로 설치 및 실행 | _(empty)_ | [특정 게임 버전으로 고정](#특정-게임-버전으로-고정) 참고 | 0.1.3 | +| DISCORD_WEBHOOK_URL | 디스코드 서버에서 생성한 웹훅 URL | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.0 | +| DISCORD_SUPPRESS_NOTIFICATIONS | 디스코드 메시지 전송 시 멤버들에게 알림을 보내지 않음 | false | true/false | 0.1.0 | +| DISCORD_CONNECT_TIMEOUT | 지정한 시간동안 디스코드 웹훅에 연결할 수 없을 경우 연결 취소 | 30 | !0 | 0.1.0 | +| DISCORD_MAX_TIMEOUT | 지정한 시간동안 디스코드 메시지가 전송되지 않으면 강제 종료 | 30 | !0 | 0.1.0 | +| DISCORD_PRE_INSTALL_MESSAGE | 서버 설치 전 전송되는 디스코드 메시지 | Server is installing... | "string" | 0.1.0 | +| DISCORD_PRE_INSTALL_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | 0.1.0 | +| DISCORD_PRE_INSTALL_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.0 | +| DISCORD_POST_INSTALL_MESSAGE | 서버 설치 후 전송되는 디스코드 메시지 | Server install complete! | "string" | 0.1.2 | +| DISCORD_POST_INSTALL_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | 0.1.2 | +| DISCORD_POST_INSTALL_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.2 | +| DISCORD_PRE_UPDATE_BOOT_MESSAGE | 서버 업데이트 전 전송되는 디스코드 메시지 | Server is updating... | "string" | 0.1.0 | +| DISCORD_PRE_UPDATE_BOOT_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | 0.1.0 | +| DISCORD_PRE_UPDATE_BOOT_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.0 | +| DISCORD_POST_UPDATE_BOOT_MESSAGE | 서버 업데이트 후 전송되는 디스코드 메시지 | Server update complete! | "string" | 0.1.2 | +| DISCORD_POST_UPDATE_BOOT_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | 0.1.2 | +| DISCORD_POST_UPDATE_BOOT_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.2 | +| DISCORD_PRE_START_MESSAGE | 서버 시작 시 전송되는 디스코드 메시지 | Server has been started! | "string" | 0.1.0 | +| DISCORD_PRE_START_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | 0.1.0 | +| DISCORD_PRE_START_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.0 | +| DISCORD_SERVER_INFO_MESSAGE_ENABLED | 서버 시작 메시지 전송 시 서버 설정 내용을 같이 전송 | true | true/false | 0.1.1 | +| DISCORD_SERVER_INFO_MESSAGE_WITH_IP | 서버 설정 내용 전송 시 서버 IP 및 포트 번호를 같이 전송 (IP로 접속할 때 필요) | false | true/false | 0.1.0 | +| DISCORD_PRE_SHUTDOWN_MESSAGE | 서버 종료 전 전송되는 디스코드 메시지 | Server is shutting down... | "string" | 0.1.0 | +| DISCORD_PRE_SHUTDOWN_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | 0.1.0 | +| DISCORD_PRE_SHUTDOWN_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.0 | +| DISCORD_POST_SHUTDOWN_MESSAGE | 서버 종료 후 전송되는 디스코드 메시지 | Server is stopped! | "string" | 0.1.0 | +| DISCORD_POST_SHUTDOWN_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | 0.1.0 | +| DISCORD_POST_SHUTDOWN_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.0 | +| DISCORD_PLAYER_JOIN_MESSAGE | 플레이어가 서버에 접속할 때 전송되는 디스코드 메시지 | `player_name` has joined! | "string" | 0.1.9 | +| DISCORD_PLAYER_JOIN_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | 0.1.9 | +| DISCORD_PLAYER_JOIN_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.9 | +| DISCORD_PLAYER_LEAVE_MESSAGE | 플레이어가 서버에서 나갈 때 전송되는 디스코드 메시지 | `player_name` has left. | "string" | 0.1.9 | +| DISCORD_PLAYER_LEAVE_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | 0.1.9 | +| DISCORD_PLAYER_LEAVE_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.9 | +| DISCORD_PRE_BACKUP_MESSAGE | 백업 시작 전 전송되는 메시지 | Creating backup... | "string" | 0.1.1 | +| DISCORD_PRE_BACKUP_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | 0.1.1 | +| DISCORD_PRE_BACKUP_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.1 | +| DISCORD_POST_BACKUP_MESSAGE | 백업 완료 후 전송되는 메시지 | Backup created at `file_path` | "string" | 0.1.1 | +| DISCORD_POST_BACKUP_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | 0.1.1 | +| DISCORD_POST_BACKUP_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.1 | +| DISCORD_PRE_BACKUP_DELETE_MESSAGE | 오래된 백업 파일 삭제 전 전송되는 메시지 | Removing backups older than `old_backup_days` days | "string" | 0.1.1 | +| DISCORD_PRE_BACKUP_DELETE_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | 0.1.1 | +| DISCORD_PRE_BACKUP_DELETE_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.1 | +| DISCORD_POST_BACKUP_DELETE_MESSAGE | 오래된 백업 파일 삭제 완료 후 전송되는 메시지 | Removed backups older than `old_backup_days` days | "string" | 0.1.1 | +| DISCORD_POST_BACKUP_DELETE_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | 0.1.1 | +| DISCORD_POST_BACKUP_DELETE_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.1 | +| DISCORD_ERR_BACKUP_DELETE_MESSAGE | 오래된 백업 파일 삭제 실패 시 전송되는 메시지 | Unable to delete old backups, OLD_BACKUP_DAYS is not an integer. OLD_BACKUP_DAYS=`old_backup_days` | "string" | 0.1.1 | +| DISCORD_ERR_BACKUP_DELETE_MESSAGE_ENABLED | 이 값이 `true`인 경우에만 해당 메시지 전송 | true | true/false | 0.1.1 | +| DISCORD_ERR_BACKUP_DELETE_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.1 | +| DISCORD_BROADCAST_MESSAGE_ENABLE\*\* | 이 값이 `true`인 경우 브로드캐스트 메시지를 디스코드로 전송 | true | true/false | 0.1.6 | +| DISCORD_BROADCAST_MESSAGE_URL\* | 해당 메시지를 보낼 디스코드 웹훅 URL (이 값을 비워둘 경우 DISCORD_WEBHOOK_URL 사용) | _(empty)_ | `https://discord.com/api/webhooks/` | 0.1.6 | +| DISABLE_GENERATE_SETTINGS | 서버 설정 파일 `Game.ini`에 적용되는 모든 환경 변수 설정 무시 및 기본 값으로 설정 | false | true/false | 0.1.1 | +| ENABLE_PLAYER_LOGGING | 플레이어가 서버에 접속하거나 나갈 때 알림을 활성화 여부 | true | true/false | 0.1.9 | +| PLAYER_LOGGING_POLL_PERIOD | 지정한 초마다 플레이어 접속 및 퇴장 여부 체크 | 5 | !0 | 0.1.9 | +| ARM_COMPATIBILITY_MODE | 서버 업데이트를 위해 steamcmd를 실행할 때 Box86에서 QEMU로 호환성 계층을 전환합니다. 이 설정은 ARM64 호스트에만 적용 가능합니다. | false | true/false | 0.1.0 | \* 설정 권장사항 \*\* 기본 값 사용 권장 +
삭제 또는 변경된 환경 변수 목록 + +| Variable | Available Versions | Changed to | +|------------------------------------|--------------------|-------------------------------------| +| DISCORD_SERVER_INFO_MESSAGE_ENABLE | 0.1.0 | DISCORD_SERVER_INFO_MESSAGE_ENABLED | + +
+ ### 게임 포트 | 포트 | 용도 | diff --git a/scripts/broadcast.sh b/scripts/broadcast.sh index 558c8da..160a80d 100644 --- a/scripts/broadcast.sh +++ b/scripts/broadcast.sh @@ -2,11 +2,9 @@ # shellcheck source=scripts/helper_functions.sh source "/home/steam/server/helper_functions.sh" -# Given a message this will broadcast in discord -# Returns 0 on success -# Returns 1 if not able to broadcast +# Given a message and level this will broadcast in discord message="$1" level="$2" -DiscordMessage "Broadcast" "$message" "$level" "$DISCORD_BROADCAST_MESSAGE_ENABLE" "$DISCORD_BROADCAST_MESSAGE_URL" \ No newline at end of file +DiscordMessage "Broadcast" "$message" "$level" "$DISCORD_BROADCAST_MESSAGE_ENABLE" "$DISCORD_BROADCAST_MESSAGE_URL" diff --git a/scripts/helper_functions.sh b/scripts/helper_functions.sh index 3c1869a..aa190b5 100644 --- a/scripts/helper_functions.sh +++ b/scripts/helper_functions.sh @@ -135,12 +135,9 @@ DiscordMessage() { fi } -# Given a message this will broadcast in discord -# Returns 0 on success -# Returns 1 if not able to broadcast +# Given a message and level this will broadcast in discord broadcast_command() { broadcast "$@" - return $? } # Saves then shutdowns the server @@ -158,26 +155,30 @@ shutdown_server() { # Returns 2 if mtime is not an integer countdown_message() { local mtime="$1" - local message_prefix="$2" + local message="$2" local return_val=0 - local minute="minutes" if [[ "${mtime}" =~ ^[0-9]+$ ]]; then for ((i = "${mtime}" ; i > 0 ; i--)); do + # Only do countdown if there are players + # Checking for players every minute + player_check || break + if [ "$mtime" -eq "$i" ] || [[ " $BROADCAST_COUNTDOWN_MTIMES " == *" $i "* ]]; then if [ "$i" -eq 1 ]; then - minute="minute" + message="${message//minutes/minute}" fi - broadcast_command "${message_prefix} in ${i} ${minute}" "warn" + broadcast_command "${message//remaining_time/$i}" "warn" fi - # Only do countdown if there are players - # Checking for players every minute - if ! player_check; then - break - fi sleep 59s done + + if [ "$i" -eq 0 ]; then + sleep 1s + elif [ "$1" -ne "$mtime" ]; then + broadcast_command "${BROADCAST_COUNTDOWN_SUSPEND_MESSAGE}" "warn" + fi # If there are players but mtime is empty elif [ -z "${mtime}" ]; then return_val=1 @@ -223,8 +224,23 @@ get_latest_version() { # Use it when you have to wait for it to be saved automatically because it does not support RCON. wait_save() { - LogAction "Waiting for the server to be saved..." - broadcast_command "Waiting for the server to be saved..." "in-progress" + local title="$1" + local message="$2" + local level="$3" + local enabled="$4" + local webhook_url="$5" + local timestamp livetime + + if ! player_check; then + livetime="$(date "+%s")" + timestamp="$(grep "RemovePlayer" "$SERVER_LOG_PATH" | tail -1 | awk -F "\\\[|\\\]" '{printf("%s/%s/%s %s:%s:%s\n", $2, $3, $4, $5, $6, $7)}' | date_to_timestamp)" + if [ -z "$timestamp" ] || save_check "$((livetime - timestamp))"; then + return + fi + fi + + LogWarn "$message" + DiscordMessage "$title" "$message" "$level" "$enabled" "$webhook_url" while ! save_check; do sleep 1s @@ -245,15 +261,22 @@ save_check() { | awk -F "\\\[|\\\]" '{print $2}' \ | sed "s/Jan/1/g; s/Feb/2/g; s/Mar/3/g; s/Apr/4/g; s/May/5/g; s/Jun/6/g; s/Jul/7/g; s/Aug/8/g; s/Sep/9/g; s/Oct/10/g; s/Nov/11/g; s/Dec/12/g" \ | awk -F ":| |," '{if (($NF == "PM" && $5 != 12) || ($NF == "AM" && $5 == 12)) $5 = ($5+12)%24; printf("%s/%s/%s %s:%s:%s\n", $4, $1, $2, $5, $6, $7)}' \ - | sort --version-sort | tail -1 | (read -r time; test -n "$time" && date -d "$time" "+%s") + | sort --version-sort | tail -1 | date_to_timestamp ) - if [ $((livetime - savetime)) -ge $((spare)) ]; then + if [ $((livetime - savetime)) -ge $((spare - 5)) ]; then return 1 fi return 0 } +date_to_timestamp() { + read -r time + if [ -n "$time" ]; then + date -d "$time" "+%s" 2> /dev/null + fi +} + Server_Info() { local HTTP URL="$CFG_COMMUNITY_WEBSITE" if ! [[ "$URL" =~ ^https?:// ]] && [ -n "$URL" ]; then diff --git a/scripts/auto_reboot.sh b/scripts/reboot.sh similarity index 75% rename from scripts/auto_reboot.sh rename to scripts/reboot.sh index 37e5e6c..afa5611 100644 --- a/scripts/auto_reboot.sh +++ b/scripts/reboot.sh @@ -12,11 +12,11 @@ if [ "${AUTO_REBOOT_EVEN_IF_PLAYERS_ONLINE,,}" != true ]; then fi fi -countdown_message "${AUTO_REBOOT_WARN_MINUTES}" "Server will reboot" +countdown_message "${AUTO_REBOOT_WARN_MINUTES}" "${AUTO_REBOOT_WARN_MESSAGE}" countdown_exit_code=$? case "${countdown_exit_code}" in 0 ) - wait_save + wait_save "Stop" "Waiting for the server to be saved before reboot..." "warn" "$DISCORD_PRE_SHUTDOWN_MESSAGE_ENABLED" "$DISCORD_PRE_SHUTDOWN_MESSAGE_URL" shutdown_server ;; 1 ) diff --git a/scripts/start.sh b/scripts/start.sh index c6b3f2d..68202b3 100644 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -121,6 +121,13 @@ if [ "${AUTO_UPDATE_ENABLED,,}" = true ] && [ "${UPDATE_ON_BOOT}" = true ]; then supercronic -quiet -test "/home/steam/server/crontab" || exit fi +if [ "${AUTO_REBOOT_ENABLED,,}" = true ]; then + LogInfo "AUTO_REBOOT_ENABLED=${AUTO_REBOOT_ENABLED,,}" + LogInfo "Adding cronjob for auto rebooting" + echo "$AUTO_REBOOT_CRON_EXPRESSION bash /usr/local/bin/reboot" >> "/home/steam/server/crontab" + supercronic -quiet -test "/home/steam/server/crontab" || exit +fi + if [ -s "/home/steam/server/crontab" ]; then supercronic -passthrough-logs "/home/steam/server/crontab" & LogInfo "Cronjobs started" diff --git a/scripts/update.sh b/scripts/update.sh index 72e70dc..89dbfd5 100644 --- a/scripts/update.sh +++ b/scripts/update.sh @@ -22,11 +22,11 @@ if [ "${UPDATE_ON_BOOT,,}" != true ]; then exit 1 fi -countdown_message "${AUTO_UPDATE_WARN_MINUTES}" "Server will update" +countdown_message "${AUTO_UPDATE_WARN_MINUTES}" "${AUTO_UPDATE_WARN_MESSAGE}" countdown_exit_code=$? case "${countdown_exit_code}" in 0 ) - wait_save + wait_save "Update" "Waiting for the server to be saved before update..." "warn" "$DISCORD_PRE_UPDATE_BOOT_MESSAGE_ENABLED" "$DISCORD_PRE_UPDATE_BOOT_MESSAGE_URL" LogAction "Updating the server from $CURRENT_COMMIT to ${TARGET_COMMIT_ID:-$LATEST_COMMIT}." backup shutdown_server