롱빈터. 전용 서버를 호스팅할 수 있는 도커 컨테이너입니다.
이 소스 코드는 thijsvanloef/palworld-server-docker 저장소를 기반으로 Uuvana-Studios/longvinter-docker-server 저장소를 참고하여 작성되었습니다.
해당 컨테이너는 아래 운영체제에서 정상적으로 작동합니다.
- Windows 11
- Ubuntu 22.04
해당 컨테이너는 x64
및 ARM64
기반의 아키텍처에서 정상적으로 작동합니다.
Warning
게임 서버가 RCON 및 REST API 기능을 지원하지 않아 해당 관련 기능은 모두 교체 및 제거되었습니다.
따라서 컨테이너는 서버를 저장할 수 있는 기능이 없기 때문에 서버를 저장하지 않은 채로 일부 기능 사용 시 약 5분간 플레이한 기록이 롤백될 수 있습니다. (약 5분마다 자동 저장됩니다.)
- OS: 64비트 이상
- RAM: 2GB 이상
출처: https://wiki.longvinter.com/server/docker
먼저 환경 변수를 변경해야 합니다.
서버를 실행한 후 docker logs longvinter-server
명령어로 서버 로그를 확인할 수 있습니다.
실시간으로 확인하려면 마지막에 -f
를 추가해 주세요.
아래는 서버 설정에 필요한 docker-compose.yml 예제 파일입니다.
서버를 실행하려면 해당 파일을 먼저 작성한 후 파일이 위치한 디렉토리에서 docker compose up -d
명령어를 실행해야 합니다.
services:
longvinter:
image: kimzuni/longvinter-docker-server:latest
restart: unless-stopped
container_name: longvinter-server
stop_grace_period: 30s # Set to however long you are willing to wait for the container to gracefully stop
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
ports:
- "7777:7777/udp"
environment:
TZ: "UTC"
PUID: 1000
PGID: 1000
PORT: 7777 # Optional but recommended
CFG_SERVER_NAME: "Unnamed Island"
CFG_MAX_PLAYERS: 32
CFG_SERVER_MOTD: "Welcome to Longvinter Island!"
CFG_PASSWORD: ""
CFG_COMMUNITY_WEBSITE: "www.longvinter.com"
CFG_COOP_PLAY: false
CFG_COOP_SPAWN: 0
CFG_TAG: "none"
CFG_ADMIN_STEAM_ID: ""
CFG_PVP: true
CFG_TENT_DECAY: true
CFG_MAX_TENTS: 2
volumes:
- ./data:/data
또는 .env.example 파일을 .env 파일로 복사하여 사용할 수도 있습니다. 환경 변수 부분을 참고하여 파일 내용을 필요에 맞게 수정해 주세요. 그 다음 docker-compose.yml 내용을 아래와 같이 수정해야 합니다.
services:
longvinter:
image: kimzuni/longvinter-docker-server:latest
restart: unless-stopped
container_name: longvinter-server
stop_grace_period: 30s # Set to however long you are willing to wait for the container to gracefully stop
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
ports:
- "7777:7777/udp"
env_file:
- .env
volumes:
- ./data:/data
docker compose
대신 docker run
명령어를 사용할 수도 있습니다.
아래 명령어를 실행하는 즉시 컨테이너가 생성됩니다.
docker run -d \
--name longvinter-server \
-p 7777:7777/udp \
-v ./data:/data/ \
-e TZ="UTC" \
-e PUID=1000 \
-e PGID=1000 \
-e PORT=7777 \
-e CFG_SERVER_NAME="Unnamed Island" \
-e CFG_MAX_PLAYERS=32 \
-e CFG_SERVER_MOTD="Welcome to Longvinter Island!" \
-e CFG_PASSWORD="" \
-e CFG_COMMUNITY_WEBSITE="www.longvinter.com" \
-e CFG_COOP_PLAY=false \
-e CFG_COOP_SPAWN=0 \
-e CFG_TAG="none" \
-e CFG_ADMIN_STEAM_ID="" \
-e CFG_PVP=true \
-e CFG_TENT_DECAY=true \
-e CFG_MAX_TENTS=2 \
--restart unless-stopped \
--stop-timeout 30 \
kimzuni/longvinter-docker-server:latest
위 방법 대신 .env.example 파일을 .env 파일로 복사한 후 내용을 수정하여 사용할 수도 있습니다. 환경 변수를 참고하여 해당 파일을 필요에 맞게 설정해 주세요. 이 경우 위 명령어 대신 아래 명령어를 실행해야 합니다.
docker run -d \
--name longvinter-server \
-p 7777:7777/udp \
-v ./data:/data/ \
--env-file .env \
--restart unless-stopped \
--stop-timeout 30 \
kimzuni/longvinter-docker-server:latest
컨테이너 버전을 업데이트하려면 먼저 서버를 중지합니다.
docker compose down
그리고 설치된 이미지를 제거합니다.
docker rmi $(docker images | grep -E ^"(ghcr.io\/)?kimzuni/longvinter-docker-server" | awk '{print $3}')
마지막으로 latest
태그를 이용하여 Docker Compose 또는 Docker Run을 실행합니다.
고급 사용자에게만 해당됩니다.
컨테이너를 실행할 때 해당 이미지의 루트인 기본 사용자를 재정의할 수 있습니다.
이때 환경 변수 PUID
및 PGID
의 값은 무시됩니다.
id -u
명령어로 현재 사용자의 UID를 확인할 수 있습니다.
id -g
명령어로 현재 사용자의 GID를 확인할 수 있습니다.
사용자 및 그룹을 설정하려면 NUMBERICAL_UID:NUMBERICAL_GID
로 설정해야 합니다.
아래는 UID가 1000, GID가 1001이라고 가정합니다.
- Docker Run의 경우 마지막 줄 위에
--user 1000:1001 \
을 추가해야 합니다. - Docker Compose의 경우 restart 아래에
user: 1000:1001
을 추가해야 합니다.
만약 현재 사용자와 다른 UID/GID 값을 사용하려면 바인딩되는 디렉토리의 소유권을 변경해야 합니다.
chown UID:GID data/
명령어를 실행하여 소유권을 변경하거나
chmod o=rwx data/
를 실행하여 모든 사용자가 접근할 수 있도록 합니다.
아래 값들을 사용하여 컨테이너의 설정을 변경할 수 있습니다. 컨테이너를 실행하기 전에 값을 설정해야 적용됩니다.
- PUID
- PGID
- PORT
변수명 | 설명 | 기본값 | 설정 가능한 값 | 추가된 버전 |
---|---|---|---|---|
TZ | 컨테이너 타임존 설정 | UTC | TZ Identifiers 참고 | 0.1.0 |
PUID* | 서버를 실행할 UID 지정 | 1000 | !0 | 0.1.0 |
PGID* | 서버를 실행할 GID 지정 | 1000 | !0 | 0.1.0 |
PORT* | 게임 서버 연결 포트 (UDP) | 7777 | 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으로 자동 백업 설정하는 방법 참고 바람 | 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으로 자동 업데이트 설정하는 방법 참고 바람 | 0.1.4 |
AUTO_UPDATE_WARN_MINUTES | 플레이어에게 알림 전송 후 서버 저장 및 업데이트할 때까지 기다리는 시간 (플레이어가 없는 경우 무시) | 15 | !0 | 0.1.4 |
AUTO_UPDATE_WARN_MESSAGE | 서버 업데이트를 위한 카운트다운 시 전송할 브로드캐스트 메시지 | Server will update in remaining_time minutes. |
"string" | 0.1.10 |
AUTO_UPDATE_WARN_REMAINING_TIMES | 서버 업데이트를 위한 카운트다운을 플레이어에게 브로드캐스트하는 시간 | 1 5 10 | !0 and " "(Space) | 0.1.6 |
AUTO_REBOOT_ENABLED | 자동 재부팅 사용 | false | true/false | 0.1.10 |
AUTO_REBOOT_CRON_EXPRESSION | 자동 재부팅 빈도 설정 | 0 0 * * * | 크론식 표현 - Cron으로 자동 재부팅 설정하는 방법 참고 바람 | 0.1.10 |
AUTO_REBOOT_WARN_MINUTES | 플레이어에게 알림 전송 후 서버 저장 및 재부팅할 때까지 기다리는 시간 (플레이어가 없는 경우 무시) | 15 | !0 | 0.1.4 |
AUTO_REBOOT_WARN_MESSAGE | 서버 재부팅을 위한 카운트다운 시 전송할 브로드캐스트 메시지 | Server will update in remaining_time minutes. |
"string" | 0.1.10 |
AUTO_REBOOT_WARN_REMAINING_TIMES | 서버 재부팅 위한 카운트다운을 플레이어에게 브로드캐스트하는 시간 | 1 5 10 | !0 and " "(Space) | 0.1.6 |
AUTO_REBOOT_EVEN_IF_PLAYERS_ONLINE | 플레이어가 있는 경우에도 재부팅 진행 | false | true/false | 0.1.10 |
BROADCAST_COUNTDOWN_SUSPEND_MESSAGE | 플레이어가 없어 카운트다운이 중단된 경우 보내는 디스코드 메시지 | Suspends countdown because there are no players. | "string" | 0.1.10 |
BROADCAST_COUNTDOWN_SUSPEND_MESSAGE_ENABLE | 해당 디스코드 메시지 활성화 | true | true/false | 0.1.10 |
TARGET_MANIFEST_ID | Steam Download Depot의 Manifest ID로 특정 게임 버전으로 고정 | 특정 게임 버전으로 고정 참고 | 1.0.0 | |
DISCORD_WEBHOOK_URL | 디스코드 서버에서 생성한 웹훅 URL | https://discord.com/api/webhooks/<webhook_id> |
0.1.0 | |
DISCORD_SUPPRESS_NOTIFICATIONS | 디스코드 메시지를 @silent 메시지로 전송 |
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/false | 0.1.0 |
DISCORD_PRE_INSTALL_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (기본값: DISCORD_WEBHOOK_URL) | https://discord.com/api/webhooks/<webhook_id> |
0.1.0 | |
DISCORD_POST_INSTALL_MESSAGE | 서버 설치가 완료된 후 보내는 디스코드 메시지 | Server install complete! | "string" | 0.1.2 |
DISCORD_POST_INSTALL_MESSAGE_ENABLED | 해당 디스코드 메시지 활성화 | true | true/false | 0.1.2 |
DISCORD_POST_INSTALL_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (기본값: DISCORD_WEBHOOK_URL) | https://discord.com/api/webhooks/<webhook_id> |
0.1.2 | |
DISCORD_PRE_UPDATE_BOOT_MESSAGE | 서버 업데이트를 시작하기 전 보내는 디스코드 메시지 | Server is updating... | "string" | 0.1.0 |
DISCORD_PRE_UPDATE_BOOT_MESSAGE_ENABLED | 해당 디스코드 메시지 활성화 | true | true/false | 0.1.0 |
DISCORD_PRE_UPDATE_BOOT_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (기본값: DISCORD_WEBHOOK_URL) | https://discord.com/api/webhooks/<webhook_id> |
0.1.0 | |
DISCORD_POST_UPDATE_BOOT_MESSAGE | 서버 업데이트가 완료된 후 보내는 디스코드 메시지 | Server update complete! | "string" | 0.1.2 |
DISCORD_POST_UPDATE_BOOT_MESSAGE_ENABLED | 해당 디스코드 메시지 활성화 | true | true/false | 0.1.2 |
DISCORD_POST_UPDATE_BOOT_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (기본값: DISCORD_WEBHOOK_URL) | https://discord.com/api/webhooks/<webhook_id> |
0.1.2 | |
DISCORD_PRE_START_MESSAGE | 서버를 시작할 때 보내는 디스코드 메시지 | Server has been started! | "string" | 0.1.0 |
DISCORD_PRE_START_MESSAGE_ENABLED | 해당 디스코드 메시지 활성화 | true | true/false | 0.1.0 |
DISCORD_PRE_START_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (기본값: DISCORD_WEBHOOK_URL) | https://discord.com/api/webhooks/<webhook_id> |
0.1.0 | |
DISCORD_PRE_SHUTDOWN_MESSAGE | 서버를 종료하기 전 보내는 디스코드 메시지 | Server is shutting down... | "string" | 0.1.0 |
DISCORD_PRE_SHUTDOWN_MESSAGE_ENABLED | 해당 디스코드 메시지 활성화 | true | true/false | 0.1.0 |
DISCORD_PRE_SHUTDOWN_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (기본값: DISCORD_WEBHOOK_URL) | https://discord.com/api/webhooks/<webhook_id> |
0.1.0 | |
DISCORD_POST_SHUTDOWN_MESSAGE | 서버가 종료된 후 보내는 디스코드 메시지 | Server is stopped! | "string" | 0.1.0 |
DISCORD_POST_SHUTDOWN_MESSAGE_ENABLED | 해당 디스코드 메시지 활성화 | true | true/false | 0.1.0 |
DISCORD_POST_SHUTDOWN_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (기본값: DISCORD_WEBHOOK_URL) | https://discord.com/api/webhooks/<webhook_id> |
0.1.0 | |
DISCORD_PLAYER_JOIN_MESSAGE | 플레이어가 서버에 접속할 때 보내는 디스코드 메시지 | player_name has joined! |
"string" | 0.1.9 |
DISCORD_PLAYER_JOIN_MESSAGE_ENABLED | 해당 디스코드 메시지 활성화 | true | true/false | 0.1.9 |
DISCORD_PLAYER_JOIN_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (기본값: DISCORD_WEBHOOK_URL) | https://discord.com/api/webhooks/<webhook_id> |
0.1.9 | |
DISCORD_PLAYER_LEAVE_MESSAGE | 플레이어가 서버에서 나갈 때 보내는 디스코드 메시지 | player_name has left. |
"string" | 0.1.9 |
DISCORD_PLAYER_LEAVE_MESSAGE_ENABLED | 해당 디스코드 메시지 활성화 | true | true/false | 0.1.9 |
DISCORD_PLAYER_LEAVE_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (기본값: DISCORD_WEBHOOK_URL) | https://discord.com/api/webhooks/<webhook_id> |
0.1.9 | |
DISCORD_PRE_BACKUP_MESSAGE | 백업을 시작하기 전 보내는 디스코드 메시지 | Creating backup... | "string" | 0.1.1 |
DISCORD_PRE_BACKUP_MESSAGE_ENABLED | 해당 디스코드 메시지 활성화 | true | true/false | 0.1.1 |
DISCORD_PRE_BACKUP_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (기본값: DISCORD_WEBHOOK_URL) | https://discord.com/api/webhooks/<webhook_id> |
0.1.1 | |
DISCORD_POST_BACKUP_MESSAGE | 백업을 완료된 후 보내는 디스코드 메시지 | Backup created at file_path |
"string" | 0.1.1 |
DISCORD_POST_BACKUP_MESSAGE_ENABLED | 해당 디스코드 메시지 활성화 | true | true/false | 0.1.1 |
DISCORD_POST_BACKUP_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (기본값: DISCORD_WEBHOOK_URL) | https://discord.com/api/webhooks/<webhook_id> |
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/false | 0.1.1 |
DISCORD_PRE_BACKUP_DELETE_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (기본값: DISCORD_WEBHOOK_URL) | https://discord.com/api/webhooks/<webhook_id> |
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/false | 0.1.1 |
DISCORD_POST_BACKUP_DELETE_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (기본값: DISCORD_WEBHOOK_URL) | https://discord.com/api/webhooks/<webhook_id> |
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/false | 0.1.1 |
DISCORD_ERR_BACKUP_DELETE_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (기본값: DISCORD_WEBHOOK_URL) | https://discord.com/api/webhooks/<webhook_id> |
0.1.1 | |
DISCORD_BROADCAST_MESSAGE_ENABLE | 디스코드 서버에 브로드캐스트 메시지 전송 | true | true/false | 0.1.6 |
DISCORD_BROADCAST_MESSAGE_URL | 해당 메시지를 보낼 디스코드 웹훅 URL (기본값: DISCORD_WEBHOOK_URL) | https://discord.com/api/webhooks/<webhook_id> |
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 |
USE_DEPOT_DOWNLOADER | steamcmd 대신 DepotDownloader를 사용하여 서버 다운로드. steamcmd와 호환되지 않는(Mac의 M 시리즈 등) 호스트에 도움됨 | false | true/false | 1.0.0 |
*설정 권장사항
** 기본 값 사용 권장
제거된 목록
변수명 | 사용 가능한 버전 | 대체된 변수명 |
---|---|---|
DISCORD_SERVER_INFO_MESSAGE_ENABLE | 0.1.0 | |
DISCORD_SERVER_INFO_MESSAGE_ENABLED | 0.1.1 ~ 0.1.10 | |
DISCORD_SERVER_INFO_MESSAGE_WITH_IP | 0.1.0 ~ 0.1.10 | |
DISCORD_PRE_START_MESSAGE_WITH_GAME_SETTINGS | 0.1.11 ~ 0.4.0 | |
DISCORD_PRE_START_MESSAGE_WITH_SERVER_IP | 0.1.11 ~ 0.4.0 | |
DISCORD_PRE_START_MESSAGE_WITH_DOMAIN | 0.1.11 ~ 0.4.0 | |
BROADCAST_COUNTDOWN_MTIMES | 0.1.6 ~ 0.1.9 | BROADCAST_COUNTDOWN_REMAINING_TIMES |
ARM_COMPATIBILITY_MODE | 0.1.0 ~ 0.2.0 | ARM64_DEVICE |
TARGET_COMMIT_ID | 0.1.3 ~ 0.4.0 | TARGET_MANIFEST_ID |
ARM64 호스트는 서버의 안정성 및 성능 향상을 위해 Box64 관련 변수를 사용하여 서버 설정을 조정할 수 있습니다.
Box64 구성에 대한 자세한 내용은 해당 공식 문서를 참조해 주세요.
Tip
ARM64_DEVICE
를 장치에 맞게 설정합니다.
generic
은 모든 장치에서 작동할 것으로 예상되지만, 장치에 맞는 값으로 변경하면 더 나은 안정성을 얻을 수 있습니다.
보다 구체적인 장치의 호환성을 위해
기본 이미지 저장소에 Issue를 생성해 주세요.
변수명 | 설명 | 기본값 | 설정 가능한 값 | 추가된 버전 |
---|---|---|---|---|
BOX64_DYNAREC_STRONGMEM | [Box64 config] Strong Memory 모델 시뮬레이션 활성화 여부 | 1 | 0, 1, 2, 3 | 0.3.0 |
BOX64_DYNAREC_BIGBLOCK | [Box64 config] Box64의 Dynarec 빌딩 BigBlock 활성화 여부 | 1 | 0, 1, 2, 3 | 0.3.0 |
BOX64_DYNAREC_SAFEFLAGS | [Box64 config] CALL/RET 연산자 코드의 플래그 처리 | 1 | 0, 1, 2 | 0.3.0 |
BOX64_DYNAREC_FASTROUND | [Box64 config] 정밀한 x86 반올림 생성 활성화 여부 | 1 | 0, 1 | 0.3.0 |
BOX64_DYNAREC_FASTNAN | [Box64 config] -NAN 생성 활성화 여부 | 1 | 0, 1 | 0.3.0 |
BOX64_DYNAREC_X87DOUBLE | [Box64 config] x87 에뮬레이션용 Double 사용 강제 여부 | 0 | 0, 1 | 0.3.0 |
ARM64_DEVICE | 호스트 디바이스를 기반으로 사용할 Box64 빌드 지정. ARM64 호스트만 적용됨 | generic | generic, m1, rpi5, adlink | 0.3.0 |
포트 | 설명 |
---|---|
7777 | 게입 포트 (UDP) |
서버 자동 업데이트/재부팅 전 카운트다운에 사용됩니다.
Tip
원하는 색상이 없다면 Hex 값으로 직접 지정하세요!
아래 명령어로 메시지를 브로드캐스트할 수 있습니다.
docker exec longvinter-server broadcast "Message" [COLOR|ALIAS|HEX]
색상은 메시지를 디스코드로 전송할 때 사용합니다. (대/소문자를 구분하지 않음)
Color | Alias | Hex |
---|---|---|
|
info | 1132D8 |
in-progress | E8D44F | |
warn | D85311 | |
failure | DF0000 | |
success | 00CC00 |
*기본값
Warning
현재 시점이 자동으로 저장되지 않습니다.
아래 명령어를 사용하여 마지막 저장 시점의 백업 파일을 생성합니다.
docker exec longvinter-server backup
백업 파일은 /data/backups/
디렉토리에 생성됩니다.
Warning
현재 시점이 자동으로 저장되지 않습니다.
만약 복원에 실패할 경우 마지막 저장 지점으로 롤백됩니다.
아래 명령어를 사용하여 백업된 서버를 복원합니다.
docker exec -it longvinter-server restore
Important
도커 재시작 옵션이 always
또는 unless-stopped
로 설정되어 있어야 합니다.
그렇지 않으면 서버가 종료된 후 수동으로 컨테이너를 시작해야 합니다.
사용법의 예제 docker compose
파일 및 docker run
명령어에는 이미 적용되어 있습니다.
Warning
서버를 종료할 때 서버는 자동으로 저장되지 않습니다.
/data/backups/
에서 복원할 백업 파일을 찾아 압축을 해제합니다.
작업 전 서버를 중지해야 합니다.
docker compose down
data/Longvinter/Saved/SaveGames
디렉토리를 삭제합니다.
위에서 압축을 해제한 Saved/SaveGames
디렉토리를 data/Longvinter/Saved/SaveGames
로 복사합니다.
그리고 서버를 시작합니다. (Docker Compose를 사용하는 경우)
docker compose up -d
TZ로 설정된 시간대에 따라 매일 밤 자정에 서버가 자동으로 백업합니다.
환경 변수 BACKUP_ENABLED 값으로 자동 백업을 활성화 및 비활성화할 수 있습니다. (기본값은 활성화)
BACKUP_CRON_EXPRESSION는 크론식으로, 작업을 실행할 시기의 간격을 정의합니다.
Tip
이 이미지는 Supercronic으로 Cron을 사용합니다. 자세한 설정 방법은 supercronic 또는 Crontab Generator를 참고해 주세요.
기본 일정을 변경하려면 BACKUP_CRON_EXPRESSION 값을 설정합니다.
예시: BACKUP_CRON_EXPRESSION 값이 0 2 * * *
인 경우 매일 오전 2시에 백업을 진행합니다.
TZ로 설정된 시간대에 따라 매시간 정각에 서버가 자동으로 업데이트합니다. (카운트다운이 끝나고 서버가 저장되면 업데이트를 진행합니다.)
자동 업데이트를 사용하려면 아래환경 변수들을 모두 true
로 설정해야 합니다.
- UPDATE_ON_BOOT
Important
도커 재시작 옵션이 always
또는 unless-stopped
로 설정되어 있어야 합니다.
그렇지 않으면 서버가 종료된 후 수동으로 컨테이너를 시작해야 합니다.
사용법의 예제 docker compose
파일 및 docker run
명령어에는 이미 적용되어 있습니다.
환경 변수 AUTO_UPDATE_ENABLED 값으로 자동 업데이트를 활성화 및 비활성화할 수 있습니다. (기본값은 비활성화)
AUTO_UPDATE_CRON_EXPRESSION는 크론식으로, 작업을 실행할 시기의 간격을 정의합니다.
Tip
이 이미지는 Supercronic으로 Cron을 사용합니다. 자세한 설정 방법은 supercronic 또는 Crontab Generator를 참고해 주세요.
기본 일정을 변경하려면 AUTO_UPDATE_CRON_EXPRESSION 값을 설정합니다.
예시: AUTO_UPDATE_CRON_EXPRESSION 값이 30 * * * *
인 경우 매시 30분에 업데이트를 진행합니다.
Tip
CFG_RESTART_TIME_24H를 사용하면 서버를 저장한 후 재부팅합니다. 단, UTC 기준으로 작성해야 합니다.
TZ로 설정된 시간대에 따라 매일 밤 자정에 서버가 자동으로 재부팅합니다. (카운트다운이 끝나고 서버가 저장되면 재부팅을 진행합니다.)
Important
도커 재시작 옵션이 always
또는 unless-stopped
로 설정되어 있어야 합니다.
그렇지 않으면 서버가 종료된 후 수동으로 컨테이너를 시작해야 합니다.
사용법의 예제 docker compose
파일 및 docker run
명령어에는 이미 적용되어 있습니다.
환경 변수 AUTO_REBOOT_ENABLED 값으로 자동 재부팅을 활성화 및 비활성화할 수 있습니다. (기본값은 비활성화)
AUTO_REBOOT_CRON_EXPRESSION는 크론식으로, 작업을 실행할 시기의 간격을 정의합니다.
Tip
이 이미지는 Supercronic으로 Cron을 사용합니다. 자세한 설정 방법은 supercronic 또는 Crontab Generator를 참고해 주세요.
기본 일정을 변경하려면 AUTO_REBOOT_CRON_EXPRESSION 값을 설정합니다.
예시: AUTO_REBOOT_CRON_EXPRESSION 값이 0 2 * * *
인 경우 매일 오전 2시에 재부팅을 진행합니다.
Important
게임이 아직 베타 버전이기 때문에 해당 환경 변수 및 설정은 변경될 수 있습니다. 공식 위키 참고
아래 규칙을 따라 서버 설정이 환경 변수명으로 변환됩니다.
- 모두 대문자로 변환
- 단어를 언더바로 구분
- 접두사로
CFG_
를 추가
예시:
- Password -> CFG_PASSWORD
- ServerName -> CFG_SERVER_NAME
- ServerMOTD -> CFG_SERVER_MOTD
변수 | 설명 | 기본값 | 설정 가능한 값 |
---|---|---|---|
CFG_SERVER_NAME | 비공식 서버 목록에 표시할 이름 설정 | Unnamed Island | String |
CFG_SERVER_MOTD | 섬 곳곳의 표지판에 표시되는 오늘의 메시지 설정 | Welcome to Longvinter Island! | String |
CFG_MAX_PLAYERS | 동시에 접속할 수 있는 최대 플레이어 수 설정 | 32 | Integer |
CFG_PASSWORD | 서버 비밀번호 설정 | String | |
CFG_COMMUNITY_WEBSITE | 서버 목록 및 게임 내에서 표시되는 URL | www.longvinter.com | String |
CFG_TAG | 서버 검색을 위한 태그 추가 | none | String |
CFG_COOP_PLAY | 협동 플레이 활성화 (CFG_PVP가 false로 설정되어 있어야 함) | false | Boolean |
CFG_COOP_SPAWN | 협동 플레이 스폰 지점 설정 | 0 | 0~2** |
CFG_CHECK_VPN | VPN 연결 차단 | true | Boolean |
CFG_CHEST_RESPAWN_TIME | 전리품 상자의 최대 리스폰 시간(초) 설정 | 600 | Integer |
CFG_DISABLE_WANDERING_TRADERS | 떠돌이 상인 스폰 비활성화 | false | Boolean |
CFG_SERVER_REGION | 서버 브라우저 내 지정한 국가 목록에 서버 표시 | AS , NA , SA , EU , OC , AF , AN or nothing |
|
CFG_ADMIN_STEAM_ID | 해당 EOSID 값을 가진 플레이어를 관리자로 설정 (인게임에서 확인 가능) | Hexadecimal, " "(Space) | |
CFG_PVP | PvP 활성화 | true | Boolean |
CFG_TENT_DECAY | 텐트 자동 철거 활성화 | true | Boolean |
CFG_MAX_TENTS | 플레이어가 서버에 설치할 수 있는 최대 텐트 수 설정 | 2 | Integer |
CFG_RESTART_TIME_24H | 재시작 시간 설정 (24시간 형식) | Integer | |
CFG_HARDCORE | 하드코어 모드 활성화 | false | Boolean |
CFG_MONEY_DROP_MULTIPLIER* | 사망 시 MK 드랍률 | 0.0 | Float |
CFG_WEAPON_DAMAGE_MULTIPLIER* | 무기 데미지 비율 | 1.0 | Float |
CFG_ENERGY_DRAIN_MULTIPLIER* | 에너지 소비율 | 1.0 | Float |
CFG_PRICE_FLUCTUATION_MULTIPLIER* | 아이템 가격 변동률 | 1.0 | Float |
*하드코어 모드 전용 ** 0(West), 1(South), 2(East). 확인되지 않음
서버가 시작되면 Game.ini
파일이 <mount_folder>/Longvinter/Saved/Config/LinuxServer/Game.ini
위치에 생성됩니다.
기본적으로 환경 변수는 Game.ini
파일의 내용을 덮어씁니다.
해당 파일을 직접 수정하려면 DISABLE_GENERATE_SETTINGS 값을 true
로 설정하세요.
Important
서버가 중지되어 있을 때만 Game.ini
파일을 수정할 수 있습니다.
서버가 실행 중일 때 변경된 내용은 서버가 중지되면 덮어씁니다.
서버 설정에 대한 자세한 목록은 공식 위키 사이트를 참고하세요.
- 디스코드 서버 설정에서 웹훅 URL을 생성합니다.
- 생성한 디스코드 웹훅 URL을
https://discord.com/api/webhooks/1234567890/abcde
로 가정합니다.
Docker Run 실행 시 사용하는 방법:
-e DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/1234567890/abcde" \
-e DISCORD_PRE_UPDATE_BOOT_MESSAGE="Server is updating..." \
Docker Compose로 사용하는 방법
- DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/1234567890/abcde"
- DISCORD_PRE_UPDATE_BOOT_MESSAGE="Server is updating..."
Important
게임 서버에서 RCON 및 REST API 기능을 지원하지 않기 때문에 인게임 브로드캐스트가 불가능하므로 메시지를 디스코드로 전송합니다.
환경 변수 DISCORD_BROADCAST_MESSAGE_ENABLE 값으로 이 기능을 활성화 및 비활성화할 수 있습니다. (기본값은 활성화)
Warning
하위 버전으로 다운그레이드는 가능하지만, 기존 세이브에 어떤 영향을 비칠지는 알 수 없습니다.
문제가 생기더라도 책임지지 않습니다!
환경 변수 TARGET_MANIFEST_ID 값이 설정된 경우 서버 버전이 해당 매니페스트에 고정됩니다. 매니페스트는 출시일/업데이트 버전에 해당합니다. 매너페스트는 SteamCMD 또는 SteamDB 사이트에서 찾을 수 있습니다.
버전 | Manifest ID |
---|---|
0.10 B | 7723330886973031108 |
0.11 R | 876347941046873366 |
0.12 B | 7232977979130477635 |
0.13 R | 3287206638975838103 |
이슈 및 기능 요청은 여기서 제출할 수 있습니다.