SameOS ~/tools/satisfactory-linux-server.md

새티스팩토리 전용 서버 직접 만들기 - 리눅스 Docker로 열고 모드까지

작성일 2026-07-20 · SameOS Tools

집 리눅스 서버에 새티스팩토리 전용 서버(호스팅 업체를 빌리지 않고 직접 운영하는 멀티플레이 서버)를 열어 몇 달째 굴리고 있습니다. 새티스팩토리는 접속을 끊어도 공장이 계속 돌아야 의미가 있는 게임이라 전용 서버가 특히 잘 어울립니다. 친구가 안 들어와 있어도 내 공장은 계속 생산하고 있으니까요. 처음 열었을 때 쓴 설정과 지금 쓰는 설정이 꽤 달라졌는데, 그 차이가 곧 운영하며 배운 것들이라 그대로 정리했습니다.

준비물과 사양 - 메모리가 관건입니다

새티스팩토리 서버는 팰월드보다 메모리를 더 많이 씁니다. 공장이 커질수록 계산할 기계가 늘어나기 때문입니다. 제 서버는 최소 4GB를 예약하고 최대 12GB까지만 쓰도록 묶어 두었는데, 4인 규모로 후반부까지 진행해도 이 안에서 돌았습니다. 참고로 이 게임이 공식적으로 지원하는 동시 접속 인원은 4명입니다. 전용 서버는 설정만 바꿔 8명까지 올릴 수 있고 모드는 필요 없지만, 서버가 4명 기준으로 최적화되어 있어 그 이상은 성능이 보장되지 않습니다. 5명 이상으로 운영할 생각이라면 램 16GB는 두는 편이 안전합니다. 디스크는 게임 파일만 2.8GB에 세이브와 백업이 더 붙으므로 10GB 정도 여유를 잡으면 됩니다. CPU는 4코어면 충분합니다. 소프트웨어는 Docker(프로그램을 격리된 상자에 담아 실행하는 도구) 하나면 되고, 스팀 계정이나 게임 구매 여부와 무관하게 서버 파일은 자동으로 내려받습니다.

Docker 설치

서버에 Docker가 아직 없다면 먼저 설치합니다. SSH(원격 서버에 접속해 명령을 입력하는 통로)로 서버에 들어가 아래를 순서대로 입력하세요. 이미 팰월드 서버 등을 돌리고 있어 Docker가 깔려 있다면 이 단계는 건너뛰고 작업 폴더만 만들면 됩니다.

# 1) Docker 공식 설치 스크립트 (우분투·데비안 등)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 2) 설치 확인 - 두 줄 다 버전이 나오면 성공
docker --version
docker compose version

# 3) (선택) sudo 없이 docker 명령을 쓰려면 - 재로그인 후 적용
sudo usermod -aG docker $USER

# 4) 작업 폴더 만들기 - 이 안에 설정과 세이브가 모두 쌓입니다
mkdir -p ~/satisfactory && cd ~/satisfactory

compose 구성 파일 - 포트 세 개의 역할이 다릅니다

아래 내용을 작업 폴더에 compose.yaml로 저장하면 준비가 끝납니다. 초보자가 가장 많이 막히는 지점이 포트인데, 새티스팩토리는 번호가 같은 7777을 UDP와 TCP 두 가지 방식으로 함께 씁니다. UDP 7777은 실제 게임 플레이 통신이고, TCP 7777은 게임 클라이언트가 서버를 등록하고 관리하는 통로입니다. 둘 중 하나만 열면 서버 목록에는 뜨는데 접속이 안 되거나, 아예 찾지 못합니다. 8888은 게임 1.1부터 추가된 통신용 포트로 함께 열어 둡니다. 공유기를 쓴다면 이 세 개를 그대로 포트포워딩(외부에서 들어온 접속을 집 안의 특정 컴퓨터로 넘겨주는 설정)해야 친구가 들어올 수 있습니다.

# compose.yaml
services:
  satisfactory-server:
    image: wolveix/satisfactory-server:latest
    container_name: satisfactory-server
    restart: unless-stopped        # 크래시나 재부팅 시 자동 복구, 수동 stop은 유지
    stop_grace_period: 90s         # 저장할 시간을 주고 끄기 - 아래에서 자세히 설명
    environment:
      - MAXPLAYERS=8               # 공식 지원은 4명, 8까지는 설정만으로 가능(모드 불필요)
      - PUID=1000                  # 파일 권한용 - 대부분 1000 그대로 두면 됩니다
      - PGID=1000
      - STEAMBETA=false            # true로 하면 실험 버전(불안정)
    volumes:
      - ./config:/config           # 세이브·백업·설정이 전부 이 폴더에 쌓입니다
    ports:
      - "7777:7777/udp"            # 게임 플레이 통신
      - "7777:7777/tcp"            # 서버 등록·관리 통로 (UDP와 함께 반드시 열 것)
      - "8888:8888/tcp"            # 게임 1.1부터 쓰는 통신 포트
    mem_reservation: 4g            # 최소 확보 메모리
    mem_limit: 12g                 # 상한 - 서버 전체가 메모리 부족에 빠지는 것을 막습니다

첫 실행과 게임에서 접속하기

이제 서버를 켭니다. 첫 실행은 게임 파일 2.8GB를 내려받느라 10~20분쯤 걸리니, 로그를 보며 기다리세요. 준비가 끝나면 게임을 켜고 서버 관리자 메뉴에서 내 서버 주소를 추가합니다. 집에서 테스트할 때는 서버의 내부 주소를, 친구가 들어올 때는 공인 IP(인터넷에서 우리 집을 가리키는 주소)를 씁니다. 처음 접속하면 관리자 비밀번호를 정하라고 나오는데, 이 비밀번호는 게임 화면에서 설정하는 것이라 설정 파일에 미리 적을 필요가 없습니다.

# 서버 켜기 (-d = 백그라운드 실행)
docker compose up -d

# 준비 상태 확인 - healthy 가 뜨면 접속 가능
docker ps

# 첫 실행 로그 보기 (Ctrl+C 로 빠져나와도 서버는 계속 돕니다)
docker compose logs -f

# 게임에서 접속할 주소
#   같은 집 안에서 : 192.168.0.x:7777   (서버의 내부 주소)
#   밖에서 친구가 : 공인IP:7777          (공유기에 포트포워딩 필요)

가장 크게 데인 함정 - 잘못 끄면 진행이 날아갑니다

운영하며 제일 크게 데인 부분입니다. 새티스팩토리 서버는 종료 신호를 받으면 그때까지의 진행을 세이브 파일로 저장하는데, 공장이 커질수록 이 저장에 시간이 걸립니다. 그런데 Docker는 기본적으로 10초만 기다렸다가 강제로 프로세스를 죽입니다. 저장이 끝나기 전에 잘리면 마지막 자동 저장 시점으로 되돌아가고, 그 사이에 지은 것은 사라집니다. 그래서 위 설정에 stop_grace_period: 90s를 넣어 90초까지 기다려 주도록 했습니다. 다행히 이 이미지는 백업도 알아서 남깁니다. 서버를 정상적으로 끄면 shutdown-날짜.sav, 재시작하면 restart-날짜.sav가 백업 폴더에 생기고, 게임이 도는 동안에도 자동 저장이 계속 쌓입니다. 이 폴더를 다른 디스크로 주기적으로 복사해 두면 마음이 편합니다.

# 안전하게 끄기 - 저장이 끝날 때까지 최대 90초 기다립니다 (kill 로 죽이지 말 것)
docker compose stop

# 백업이 잘 쌓이고 있는지 확인 - 최신 5개
ls -lt ~/satisfactory/config/backups/ | head -6
#   sameos_autosave_1.sav        게임 안 자동 저장
#   restart-20260718-005827.sav  재시작할 때 남긴 백업
#   shutdown-20260718-042049.sav 정상 종료할 때 남긴 백업

# 세이브 폴더를 통째로 다른 디스크에 복사 (하루 한 번 정도 권장)
cp -a ~/satisfactory/config/saved /mnt/backup/satisfactory-$(date +%Y%m%d)

모드 넣기 - 서버는 명령 한 줄로 설치합니다

혼자 하는 게임이면 런처에서 모드를 켜면 그만이지만, 전용 서버는 서버 쪽에도 같은 모드를 넣어야 합니다. 안 그러면 접속할 때 모드가 다르다며 튕깁니다. 새티스팩토리에는 ficsit이라는 공식 모드 관리 명령어가 있어서, 서버에서도 이걸로 설치하면 됩니다. 제 서버에는 생산 효율을 계산해 주는 모드를 넣어 두었는데, 모드 하나를 설치하면 그것이 필요로 하는 다른 모드(모드 로더 SML 등)까지 알아서 함께 깔립니다. 모드를 넣거나 뺀 뒤에는 서버를 다시 시작해야 적용되고, 접속하는 사람 모두가 같은 모드를 갖고 있어야 합니다.

# 1) ficsit 명령어 내려받기 (서버 작업 폴더에서)
mkdir -p ~/satisfactory/bin && cd ~/satisfactory/bin
curl -L -o ficsit https://github.com/satisfactorymodding/ficsit-cli/releases/latest/download/ficsit_linux_amd64
chmod +x ficsit

# 2) 게임이 설치된 위치를 등록 (config 폴더 안의 gamefiles)
./ficsit installation add ~/satisfactory/config/gamefiles

# 3) 모드 설치 - 필요한 다른 모드는 자동으로 함께 설치됩니다
./ficsit mod install EfficiencyCheckerMod

# 4) 설치된 목록 확인 후 서버 재시작
ls ~/satisfactory/config/gamefiles/FactoryGame/Mods
docker compose restart

몇 달 돌려 보고 남은 것

처음 열었을 때 설정과 지금 설정을 비교해 보면 바뀐 곳이 세 군데입니다. 인원 상한을 4에서 8로 올렸고, 메모리 상한을 걸었고, 종료 대기 시간을 90초로 늘렸습니다. 인원은 여유를 둔 것이라 실제로 8명이 동시에 붙어 본 적은 없고, 앞서 적었듯 공식 지원은 4명이니 이 숫자는 참고만 하시는 편이 좋습니다. 반면 종료 대기 시간은 진행을 잃고 나서야 배운 것이라, 이 글에서 하나만 가져가신다면 그 줄을 권합니다.

서버가 자리를 잡으면 다음 고민은 공장 설계로 넘어갑니다. 어떤 부품을 시간당 몇 개 만들려면 기계가 몇 대 필요한지 계산하는 일인데, 손으로 하면 금방 지치는 작업이라 브라우저에서 바로 계산하는 도구를 따로 만들어 두었습니다. 아래 링크에서 쓰실 수 있습니다.

이 글의 compose 설정을 GitHub에서 보기

새티스팩토리 공장 계산기 쓰러 가기 팰월드 서버 만들기 1탄도 보기