aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 5e4d010756778ea6e059fd5b4e906422dac98c52 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# Nuclear Option Dedicated Server Docker

A Docker setup for running a [Nuclear Option](https://store.steampowered.com/app/2376900/Nuclear_Option/) dedicated server.

## Prerequisites

- Docker and Docker Compose
- A Steam account that owns Nuclear Option (or use anonymous login if the app supports it)

## Quick Start

1. Clone this repository.

2. Create a `.env` file with your Steam credentials:

   ```env
   STEAM_USERNAME=your_username
   STEAM_PASSWORD=your_password
   ```

   Or use anonymous login:

   ```env
   STEAM_USERNAME=anonymous
   ```

3. Start the server:

   ```sh
   docker compose up -d
   ```

The entrypoint will download/update the server files via SteamCMD, apply any overlay files, and launch the server.

## Configuration

### Server Config via Environment Variables

You can override fields in `DedicatedServerConfig.json` by setting environment variables prefixed with `CONFIG_` in your `.env` file. The field name is uppercased.

| Environment Variable      | Type    | Description                                    |
| ------------------------- | ------- | ---------------------------------------------- |
| `CONFIG_MISSIONDIRECTORY` | string  | Path to the missions directory                 |
| `CONFIG_MODDEDSERVER`     | boolean | Whether the server is modded (`true`/`false`)  |
| `CONFIG_HIDDEN`           | boolean | Hide the server from the browser               |
| `CONFIG_SERVERNAME`       | string  | Server name shown in the server browser        |
| `CONFIG_PASSWORD`         | string  | Server password (empty for no password)        |
| `CONFIG_MAXPLAYERS`       | number  | Maximum number of players                      |
| `CONFIG_DISABLEERRORKICK` | boolean | Disable kicking players on error               |
| `CONFIG_NOPLAYERSTOPTIME` | number  | Seconds before stopping when no players are on |
| `CONFIG_POSTMISSIONDELAY` | number  | Delay in seconds after a mission ends          |
| `CONFIG_ROTATIONTYPE`     | number  | Mission rotation type                          |

### Direct Config Editing

You can also edit `nuclearoption/DedicatedServerConfig.json` directly. This file is mounted into the container at `/app`.

### Overlay

Any files placed in an `overlay/` directory will be copied over the server installation at `/app` on each startup. This is useful for adding custom missions, mods, or overriding specific files.

## Volumes

| Host Path         | Container Path | Purpose                       |
| ----------------- | -------------- | ----------------------------- |
| `./nuclearoption` | `/app`         | Server installation directory |
| `./overlay`       | `/overlay`     | Optional file overlay         |

## Networking

The container uses `network_mode: host`, so the server binds directly to the host's network interfaces. No port mapping is needed.

## Logs

Server logs are written to `nuclearoption/logs/`.