[Satisfactory] 새티스팩토리 Dedicated Server 설정방법
새티스팩토리 업데이트 5와 함께 Dedicated Server가 공개되었습니다.
이번에는 Dedicated Server 설정하는 방법에 대하여 알아보겠습니다.
하지만, 이 서버를 사용하기 위해서는 새티스팩토리 스팀 버전이 필요합니다.
Dedicated Server 설정방법은 스팀 버전 기준으로 작성 되었습니다.
원본출처: https://satisfactory.fandom.com/wiki/Dedicated_servers
1. 권장사항
Processor | 최신 x86/64(AMD/Intel) 프로세서. 32비트 또는 ARM 지원이 없습니다. 서버는 다중 코어보다 더 높은 단일 코어 성능을 선호합니다. |
Memory | 최소 6GB, 큰 저장파일 또는 4인 이상 플레이어를 위해 8GB RAM을 권장합니다. |
Storage | 10GB for the game server itself |
OS | 현재 지원되는 모든 버전의 Windows 또는 주요 Linux 배포판. Windows 7과 같은 지원되지 않는 OS는 명시적으로 지원되지 않습니다. |
Internet Connection | 광대역 인터넷 연결. 집에서 호스팅하려면 포트 전달을 구성하는 기능이 필요합니다. |
2. 방화벽 정책
Default Port (UDP Only) |
Override argument | Note |
15777 | QueryPort | 이 포트는 처음 전용 서버를 접속할 때 게임에서 입력해야 하는 포트입니다. |
15000 | BeaconPort | 서버의 여러 인스턴스가 실행되고 기본값이 이미 사용 중인 경우 자동으로 증가합니다. |
7777 | GamePort | 서버의 여러 인스턴스가 실행되고 기본값이 이미 사용 중인 경우 자동으로 증가합니다. |
3. 스팀에서 설치 방법
- Steam 클라이언트에서 설치 방법
- 라이브러리 -> 상단 필터 -> Tools 선택 후 리스트에서 Satisfactory DedicatedServer 설치
- SteamCMD를 사용하여 설치 방법
- 설치 명령어
- Linux (root 권한으로 가진 상태로 실행)
steamcmd +force_install_dir ~/SatisfactoryDedicatedServer +login anonymous +app_update 1690800 -beta public validate +quit
- Windows
steamcmd.exe +force_install_dir C:\GameServers\SatisfactoryServer +login anonymous +app_update 1690800 -beta public validate +quit
- Steam이 설치된 폴더에서 SteamCMD 설치 후 사용시 (Steam 설치 위치는 기본설치 기준)
"C:\Program Files (x86)\Steam\steamcmd.exe" +force_install_dir "C:\GameServers\SatisfactoryServer" +login anonymous +app_update 1690800 validate +quit
- 업데이트 Dedicated Server Tool 명령어
steamcmd +login anonymous +app_update 1690800 +exit
4. 서버 실행 방법
- 윈도우
.\FactoryServer.exe -log -unattended
- 리눅스
./FactoryServer.sh
- 시작 옵션
명령어 | 설명 | 예제 |
-multihome <ip address> | 사용 가능한 모든 인터페이스가 아닌특정 IP 주소에 서버 프로세스 바인딩 | -multihome=192.168.1.4 |
-ServerQueryPort=<portnum> | 서버에서 사용하는 쿼리 포트이다. 기본 포트는 UDP/15777 입니다. |
-ServerQueryPort=15777 |
-BeaconPort=<portnum> | 서버가 사용하는 신호 포트이다. 기본 포트는 UDP/15000 입니다. |
-BeaconPort=15000 |
-Port=<portnum> | 서버가 사용하는 게임 포트이다. 클라이언트와 서버 간의 통신하는 데 사용되는 기본 포트이며 UDP/7777 입니다. |
-Port=7777 |
-log | 서버가 창(Windows) 또는 활성 터미널(Linux)에 로그를 표시 이 옵션은 Linux에서 시작할 때 기본적으로 사용함 | -log |
-unattended | 서버가 실행할 수 없을 경우 서버 실행을 방해 하는 대화창을 표시하지 않도록 합니다. 이 옵션은 Linux에서 시작할 때 기본적으로 사용함 |
-unattended |
-DisablePacketRouting | Startup argument for disabling the packet router (Automatically disabled with multihome) |
-DisablePacketRouting |
5. 서버 설정파일 위치
- 윈도우
FactoryGame/Saved/Config/WindowsServer/
- 리눅스
FactoryGame/Saved/Config/LinuxServer/
6. 명령어
명령어 | 설명 |
quit, stop, exit: | 서버 종료 |
server.SaveGame saveName | 현재 세션의 저자파일 생성 |
FG.AutosaveInterval xxx | 서버의 자동저장 빈도 설정 |
FG.NetworkQuality xxx | 서버의 네트워크 퀄리티 설정 |
FG.DisableSeasonalEvents x | 시즌 이벤트 비화성화 설정 |
7. 기존 세이브 파일 불러오는 방법
- 윈도우
- 싱글 플레이 세이브파일 위치:
%LOCALAPPDATA%\FactoryGame\Saved\SaveGames
- 서버용 세이브파일 위치 (Local):
%LOCALAPPDATA%\FactoryGame\Saved\SaveGames\server
- 서버용 세이브파일 위치 (서비스모드) :
C:\Windows\ServiceProfiles\NetworkService\AppData\Local\FactoryGame\Saved\SaveGames\server
- 서버용 세이브파일 위치 (NSSM):
C:\Windows\System32\config\systemprofile\AppData\Local\FactoryGame\Saved\SaveGames\server
- 리눅스
- 싱글 플레이 세이브파일 위치:
~.config/Epic/FactoryGame/Saved/SaveGames
- 서버용 세이브파일 위치:
~.config/Epic/FactoryGame/Saved/SaveGames/server
- 세선 이름을 Server Manager의 Server Settings Tab에 기입합니다.
리눅스에서 Dedicated Server의 서비스를 위한 세팅방법입니다.
1. 스팀 기본 폴더 위치: /home/steam
다음은 /home/steam/SatisfactoryDedicatedServer/start_server.sh 파일 내용입니다.
#!/bin/bash
export InstallationDir=/home/steam/SatisfactoryDedicatedServer
export templdpath=$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$InstallationDir/linux64:$LD_LIBRARY_PATH
# Install or update the server before launching it
/usr/games/steamcmd +login anonymous +force_install_dir $InstallationDir +app_update 1690800 validate +quit
# Launch the server
$InstallationDir/FactoryServer.sh
export LD_LIBRARY_PATH=$templdpath
위의 파일은 한번만 생성하면 됩니다.
2. 권한 부여
chmod +x /home/steam/SatisfactoryDedicatedServer/start_server.sh
3. 실행 파일 만들기
파일 위치: /etc/systemd/system/satisfactory.service
[Unit]
Description=Satisfactory Server
Wants=network.target
After=syslog.target network-online.target
[Service]
Type=simple
Restart=always
RestartSec=10
User=steam
WorkingDirectory=/home/steam/SatisfactoryDedicatedServer
ExecStartPre=/bin/bash -c 'mv /home/steam/SatisfactoryDedicatedServer/server.log /home/steam/SatisfactoryDedicatedServer/$$(date +%%Y-%%m-%%d_%%H:%%M:%%S)_server.log'
StandardOutput=file:/home/steam/SatisfactoryDedicatedServer/server.log
ExecStart=/home/steam/SatisfactoryDedicatedServer/start_server.sh
[Install]
WantedBy=multi-user.target
위의 내용으로 작성하시면 됩니다.
4. 서비스 등록 및 실행 방법
- 서비스 등록
sudo systemctl enable satisfactory.service --now
- 서비스 실행
sudo systemctl restart satisfactory.service.
- 서버가 시작 되었을 때 자동을 시작하게 하는 방법
# This will open an interactive editor
sudo crontab -e
# Add this line to the file then save it.
0 4 * * * systemctl restart satisfactory.service
[Linux] OpenRC on Gentoo
아래의 항목이 사전에 준비가 되어 있는 것을 권장합니다.
- ln -s /etc/init.d/steamcmd /etc/init.d/steamcmd.satisfactory
- /etc/conf.d/steamcmd -> /etc/conf.d/steamcmd.satisfactory.
1. /etc/conf.d/steamcmd.satisfactory 내용입니다.
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# Dtach options, which will used, when the `attach` extra command is called.
# By default, CTRL+D is used, and no signal is send,
# when you want to detach from the attached console.
DTACH_OPTS="-e '^D' -r none"
# Specifies, which server binary is used.
# This could be 'hlds_run' or 'srcds_run', depending on your game.
STEAMCMD_BINARY="FactoryServer.sh"
# Path to the files of your started server.
STEAMCMD_PATH="/opt/steamcmd/sf"
# Options for your server binary.
STEAMCMD_OPTS=""
[Linux] Alternative SystemD configuration
1. satisfactory.service의 내용입니다.
[Unit]
Description=Satisfactory dedicated server
Wants=network-online.target
After=syslog.target network.target nss-lookup.target network-online.target
[Service]
Environment="LD_LIBRARY_PATH=./linux64"
ExecStartPre=/usr/games/steamcmd/steamcmd.sh +login anonymous +force_install_dir "/home/your_user/satisfactory" +app_update 1690800 validate +quit
ExecStart=/home/your_user/satisfactory/FactoryServer.sh
User=your_user
Group=your_user
StandardOutput=journal
Restart=on-failure
KillSignal=SIGINT
WorkingDirectory=/home/your_user/satisfactory
[Install]
WantedBy=multi-user.target
[Windows] NSSM (Non-Sucking Service Manager)
1. install
nssm.exe install SatisfactoryServerService
2. 설치 후에 Path와 Arguments 설정이 완료 된 이후 아래의 실행 명령어로 서버를 시작합니다.
nssm.exe start SatisfactoryServerService
- 다른 유용한 명령어들
nssm.exe status SatisfactoryServerService # Checks the status of the Service
nssm.exe stop SatisfactoryServerService # Stops the service, and prevents it from auto-restarting
5. SDL 권한 관리
Loading Steam API...Failed to init SDL priority manager: SDL not found
Failed to set thread priority: per-thread setup failed
Failed to set thread priority: per-thread setup failed
- 종속성 파일을 다운로드하여 문제를 해결할 수 있습니다.
sudo apt install libsdl2-2.0-0:i386
6. SteamAPI library Error
steamclient.so: cannot open shared object file: No such file or directory
/home/your_user/.steam/sdk64/steamclient.so
/home/your_user/.steam/sdk64/steamclient.so: cannot open shared object file: No such file or directory
[S_API] SteamAPI_Init(): Sys_LoadModule failed to load: /home/your_user/.steam/sdk64/steamclient.so
- 심볼 링크를 걸어줍니다.
ln -s /usr/games/steamcmd/linux64/steamclient.so /home/your_user/.steam/sdk64/
- 로그 출력 변경
steamclient.so: cannot open shared object file: No such file or directory
[S_API] SteamAPI_Init(): Loaded '/home/your_user/.steam/sdk64/steamclient.so' OK. (First tried local 'steamclient.so')
7. 포트 활성화 확인 방법
- 윈도우
Get-NetUDPEndPoint | Select-Object LocalAddress, LocalPort, @{Name="Process";Expression={(Get-Process -Id $_.OwningProcess).ProcessName}} | Sort-Object -Property LocalPort,Process | Where-Object{$_.Process -like "UE4Server-Win64-Shipping"}
LocalAddress LocalPort Process
------------ --------- -------
:: 7777 UE4Server-Win64-Shipping
:: 15000 UE4Server-Win64-Shipping
:: 15777 UE4Server-Win64-Shipping
0.0.0.0 15777 UE4Server-Win64-Shipping
- 리눅스
$ ss -plnu | grep UE
UNCONN 0 0 *:15000 *:* users:(("UE4Server-Linux",pid=2353772,fd=21))
UNCONN 0 0 *:15777 *:* users:(("UE4Server-Linux",pid=2353772,fd=18))
UNCONN 0 0 *:7777 *:* users:(("UE4Server-Linux",pid=2353772,fd=20))