Skip to content

Latest commit

ย 

History

27 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Satisfactory Dedicated Server

A containerized Satisfactory dedicated server with Cloudflare Tunnel for secure, semi-public access.

Features

  • ๐Ÿณ Docker Compose orchestration for easy management
  • ๐Ÿ”’ Cloudflare Tunnel integration for secure access without port forwarding
  • ๐Ÿ’พ Automatic backups with configurable retention
  • ๐Ÿ“Š Health monitoring with Discord notifications
  • ๐ŸŽฎ Mod support with installation scripts
  • โš™๏ธ Environment-based configuration (no hardcoded secrets)

Quick Start

# 1. Run setup
./setup.sh

# 2. Configure .env (edit required secrets)
nano .env

# 3. Start server
make start

# 4. Check status
make status

Prerequisites

  • Docker and Docker Compose installed
  • At least 8GB RAM available
  • ~10GB free disk space
  • Cloudflare account with Zero Trust (for tunnel setup)

Project Structure

satisfactory-server/
โ”œโ”€โ”€ README.md                 # This file
โ”œโ”€โ”€ CHANGELOG.md              # Version history
โ”œโ”€โ”€ Makefile                  # Task automation
โ”œโ”€โ”€ setup.sh                  # Initial setup script
โ”œโ”€โ”€ docker-compose.yml        # Container orchestration
โ”œโ”€โ”€ .env.example              # Configuration template
โ”‚
โ”œโ”€โ”€ config/                   # Configuration files
โ”‚   โ””โ”€โ”€ cloudflared/          # Cloudflare tunnel config
โ”‚
โ”œโ”€โ”€ docs/                     # Documentation
โ”‚   โ”œโ”€โ”€ CLOUDFLARE_ZERO_TRUST_SETUP.md
โ”‚   โ”œโ”€โ”€ FRIEND_GUIDE.md
โ”‚   โ”œโ”€โ”€ MODS_GUIDE.md
โ”‚   โ””โ”€โ”€ ...
โ”‚
โ”œโ”€โ”€ scripts/                  # Management scripts
โ”‚   โ”œโ”€โ”€ main.sh               # Unified CLI
โ”‚   โ”œโ”€โ”€ lib/                  # Shared libraries
โ”‚   โ”œโ”€โ”€ server/               # Server operations
โ”‚   โ”œโ”€โ”€ mods/                 # Mod management
โ”‚   โ”œโ”€โ”€ network/              # Network operations
โ”‚   โ””โ”€โ”€ setup/                # Setup utilities
โ”‚
โ””โ”€โ”€ data/                     # Runtime data (gitignored)
    โ”œโ”€โ”€ backups/              # Automatic backups
    โ”œโ”€โ”€ gamefiles/            # Game installation
    โ”œโ”€โ”€ logs/                 # Application logs
    โ””โ”€โ”€ saved/                # Game saves

Configuration

Required Secrets

Edit .env and configure these required values:

Variable Description Where to Get
CLOUDFLARE_TUNNEL_TOKEN Tunnel authentication Cloudflare Dashboard > Networks > Tunnels
SFTP_PASSWORD SFTP access password Generate: openssl rand -base64 32

Optional Configuration

Variable Default Description
MAXPLAYERS 4 Maximum players
MEMORY_LIMIT 8G Docker memory limit
DISCORD_WEBHOOK_URL - Discord notifications
AUTOSAVEINTERVAL 300 Seconds between saves

See .env.example for all available options.

Usage

Using Make (Recommended)

make help           # Show all commands

# Server lifecycle
make start          # Start all services
make stop           # Stop all services
make restart        # Restart all services
make logs           # View logs

# Operations
make status         # Check server status
make backup         # Create backup
make update         # Update server

# Mods
make mods-install   # Auto-install mods
make mods-manual FILES="~/Downloads/*.pak"

# Network
make network-verify # Verify tunnel

# Setup
make validate-env   # Validate configuration
make setup-cron     # Install automation

Using Scripts Directly

./scripts/main.sh help              # Show commands
./scripts/main.sh server backup     # Create backup
./scripts/main.sh mods install      # Install mods
./scripts/main.sh network verify    # Verify tunnel

Using Docker Compose

docker compose up -d                # Start
docker compose stop                 # Stop
docker compose logs -f              # Logs
docker compose restart              # Restart

Connecting to Server

For Server Owner

  1. Complete setup above
  2. Configure Cloudflare Zero Trust (see docs/CLOUDFLARE_ZERO_TRUST_SETUP.md)
  3. Set up WARP enrollment for friends (see docs/WARP_ENROLLMENT_SETUP.md)

For Friends

See docs/FRIEND_GUIDE.md for complete instructions:

  1. Install Cloudflare WARP client
  2. Enroll device using team domain
  3. Connect with WARP enabled to: 172.19.0.2:7777

Backup & Restore

Automatic Backups

After running make setup-cron:

  • Daily backups: 4:00 AM
  • Weekly backups: Sundays
  • Retention: 7 daily + 4 weekly backups

Manual Backup

make backup
# or
./scripts/main.sh server backup

Restore from Backup

# Stop server
make stop

# Extract backup
cd data/backups
tar -xzf satisfactory-YYYYMMDD-HHMMSS.tar.gz -C ..

# Start server
make start

Mod Support

# Automatic installation (tries GitHub releases)
make mods-install

# Manual installation
make mods-manual FILES="~/Downloads/*.pak"

# Generate download list
make mods-list

See docs/MODS_GUIDE.md for detailed instructions.

Monitoring

Discord Notifications

Configure DISCORD_WEBHOOK_URL in .env to receive:

  • ๐Ÿ“ฆ Backup completed
  • ๐Ÿ”ด Server down alerts
  • โš ๏ธ Server degraded warnings
  • โœ… Server recovered
  • ๐Ÿ”„ Update completed

Health Checks

make health         # Run health check
make status         # Quick status

Security

  • โœ… No hardcoded secrets in configuration files
  • โœ… Required secrets fail fast if not configured
  • โœ… .env excluded from version control
  • โœ… SFTP disabled by default (opt-in with profile)
  • โœ… Cloudflare Tunnel for secure access

Enabling SFTP (Optional)

SFTP is disabled by default. To enable:

# 1. Set strong password in .env
SFTP_PASSWORD=$(openssl rand -base64 32)

# 2. Start with SFTP profile
docker compose --profile sftp up -d

Troubleshooting

Server Won't Start

# Check logs
make logs-server

# Verify configuration
make validate-env

# Check resources
free -h && df -h

Friends Can't Connect

  1. Verify tunnel: make network-verify
  2. Check WARP client is connected
  3. Confirm friend enrolled in Zero Trust
  4. Use correct IP: 172.19.0.2:7777

See docs/FRIEND_GUIDE.md for more troubleshooting.

Performance Issues

# Increase memory in .env
MEMORY_LIMIT=12G
MEMORY_RESERVATION=6G

# Restart
make restart

Documentation

Document Description
CLOUDFLARE_ZERO_TRUST_SETUP.md Cloudflare configuration guide
FRIEND_GUIDE.md Connection guide for friends
MODS_GUIDE.md Mod installation guide
WARP_ENROLLMENT_SETUP.md WARP enrollment setup
scripts/README.md Scripts documentation

Resources

License

This setup uses the wolveix/satisfactory-server Docker image (MIT License).

About

Satisfactory dedicated server with Docker, Cloudflare Tunnel, and mod installer GUI

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages