No description
Find a file
2025-07-24 23:58:34 +02:00
config-examples Swapped to a template for file where you agree to EULA. Server now runs. 2025-04-08 16:34:53 -05:00
config-templates Swapped to a template for file where you agree to EULA. Server now runs. 2025-04-08 16:34:53 -05:00
.gitignore Reworked to allow mounted config volume. 2025-04-08 17:59:45 -05:00
compose.yaml fix: Ensure Steam credentials are used for downloads 2025-07-24 23:58:34 +02:00
Dockerfile feat: Allow providing Steam credentials for download 2025-07-24 23:28:47 +02:00
entrypoint.sh Adding custom TZ support. 2025-04-08 18:24:40 -05:00
LICENSE Reorganizing and updating. 2025-04-08 11:57:14 -05:00
Makefile Adding custom TZ support. 2025-04-08 18:24:40 -05:00
README.md feat: Allow providing Steam credentials for download 2025-07-24 23:28:47 +02:00
start.sh fix: Ensure Steam credentials are used for downloads 2025-07-24 23:58:34 +02:00

SCP: Secret Laboratory Docker Server

A Docker container for easily running an SCP: Secret Laboratory dedicated server made by (Matthew Green)[https://git.matthewgreen.gg/mgreen/scp-secret-laboratory-server-docker] and slightly modified by me to add an option to select the manifest version.

Quick Start

Using Docker Compose (Recommended)
  1. Create a docker-compose.yml file:
services:
  scp-sl-server:
    image: greenmatthew/scp-secret-laboratory-server:latest
    container_name: scp-sl-server
    ports:
      - "7777:7777/udp"
    volumes:
      - ./config:/home/steam/.config
    environment:
      - UID=1000
      - GID=1000
      # To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List).
      # - TZ=Etc/UTC
      # To use a specific server version, uncomment the next line and set a manifest ID.
      # See the "Using an Older Server Version" section for details.
      # - MANIFEST_ID=none
      # If you need to use your own Steam credentials, uncomment and set the following variables.
      # - STEAM_USER=your_steam_username
      # - STEAM_PASSWORD=your_steam_password
      # - STEAM_GUARD_CODE=your_2fa_code
    restart: unless-stopped
  1. Start the server:
docker-compose up -d
  1. Check logs:
docker-compose logs -f
Using Docker CLI
  1. Pull the image:
docker pull greenmatthew/scp-secret-laboratory-server:latest
  1. Run the server:
docker run -d \
  --name scp-sl-server \
  -p 7777:7777/udp \
  -v ./config:/home/steam/.config \
  -e UID=1000 \
  -e GID=1000 \
  # To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List).
  # -e TZ=Etc/UTC \
  # To use a specific server version, uncomment the next line and set a manifest ID.
  # See the "Using an Older Server Version" section for details.
  # -e MANIFEST_ID=none \
  # If you need to use your own Steam credentials, uncomment and set the following variables.
  # -e STEAM_USER=your_steam_username \
  # -e STEAM_PASSWORD=your_steam_password \
  # -e STEAM_GUARD_CODE=your_2fa_code \
  --restart unless-stopped \
  greenmatthew/scp-secret-laboratory-server:latest
  1. Check logs:
docker logs -f scp-sl-server

Configuration

Mounting the .config directory allows you to configure any server setting and have it persist between container restarts.

Environment Variables

  • UID: User ID to run the server as (default: 1000)
  • GID: Group ID to run the server as (default: 1000)
  • TZ: Timezone identifier for the container (default: Etc/UTC). Examples: America/Chicago, Europe/London, Asia/Tokyo
  • DEPOT_ID: The Steam Depot ID for the server files (default: 996562). This generally should not be changed.
  • MANIFEST_ID: The Steam Manifest ID for a specific server version (default: none). See the "Using an Older Server Version" section for details.
  • STEAM_USER: Your Steam username (default: anonymous).
  • STEAM_PASSWORD: Your Steam password (default: "").
  • STEAM_GUARD_CODE: The 2FA code from your authenticator app (default: ""). Only needed if your account has Steam Guard enabled.

Using an Older Server Version

You can run an older version of the SCP:SL dedicated server by specifying a manifest ID. This is useful for compatibility with certain mods or for playing on a specific game version.

You can find a list of available manifest IDs on SteamDB. Note that you may need to be logged into Steam (e.g. via the SteamDB browser extension) to see the full list of historical manifests.

https://steamdb.info/depot/996562/manifests/

Once you have a manifest ID, set it using the MANIFEST_ID environment variable. When the container starts, it will download and run the server version corresponding to the specified manifest ID. To go back to the latest version, simply remove the MANIFEST_ID environment variable or set it back to none.

Port Configuration

The default server port is 7777/UDP. To use a different external port, adjust the port mapping:

In Docker Compose
ports:
  - "8777:7777/udp"  # Maps external port 8777 to internal port 7777
In Docker CLI
-p 8777:7777/udp  # Maps external port 8777 to internal port 7777

Development

A Makefile is included for development:

# For available commands
make help

License

Released under the MIT License. See LICENSE file for details.