Skip to content

Docker

The same server runs in Docker on Linux, a NAS or anything else with Docker, with the same dashboard. Put the docker-compose.yml below in a folder, set the path to your games in it, then:

Terminal window
mkdir config && sudo chown 1000:1000 config
docker compose up -d

and open the dashboard at http://<the machine's address>:8360. Set a password for it on its Settings page (or with NETDISC_WEB_PASSWORD): without one, anyone on your network can open it and change its settings. docker compose logs -f shows the server’s log too.

It uses the image ghcr.io/marcusisdahl/netdisc360, published with each release for x86-64 and ARM64. To build it yourself instead, clone the repository and run docker compose up -d --build.

The file’s comment “See “Docker” in README.md” refers to the settings on this page.

docker-compose.yml
# NetDisc360 (a NetISO server for Aurora) in Docker. Put your games in a
# folder, set the path below, then: docker compose up -d
# and open the dashboard at http://<this machine>:8360.
# See "Docker" in README.md for every setting.
services:
netdisc:
image: ghcr.io/marcusisdahl/netdisc360:latest
build: .
container_name: netdisc
restart: unless-stopped
# Host networking: the Xbox connects straight to this machine on port 4323,
# and the server sees the Xbox's real address. (Docker Desktop on Windows
# or macOS: use the ports below instead and set NETDISC_XBOX.)
network_mode: host
# ports:
# - "4323:4323" # NetISO
# - "8360:8360" # the dashboard
volumes:
# Your games: ISOs, extracted games and GOD packages, subfolders too.
# Read-only: the server never writes to them.
- ./games:/games:ro
# The dashboard's settings. Must be writable by user 1000:1000
# (sudo chown 1000:1000 ./config).
- ./config:/config
environment:
TZ: Etc/UTC # your time zone, for the log's times
# A password for the dashboard. Without one, anyone on your network can
# open it and change the settings. (Or set one on the dashboard.)
NETDISC_WEB_PASSWORD: ""
# The rest can be set on the dashboard instead. These are only the first
# start's settings: once saved in ./config, the dashboard's win.
# Only these consoles' game folders are kept up to date (IP addresses,
# separated by commas). Empty: every console that connects.
NETDISC_XBOX: ""
# Aurora's FTP login (Aurora: Settings > FTP).
NETDISC_FTP_USER: xboxftp
NETDISC_FTP_PASSWORD: xboxftp
# NETDISC_NO_CATEGORY: "true" # leave Aurora's Xbox 360 category alone
# NETDISC_NO_PUSH: "true" # only serve games, don't touch the Xbox
# Files must be readable by this user (default 1000:1000).
# user: "1000:1000"
Setting Default
volume /games Your games (read-only is fine). Mount more folders under it, like /games/isos, or anywhere else and add them on the dashboard.
volume /config The dashboard’s settings (netdisc.ini). It must be writable by user 1000:1000.
NETDISC_WEB_PASSWORD The dashboard’s password. Or NETDISC_WEB_PASSWORD_FILE with the path of a Docker secret. Set this way, it can’t be changed on the dashboard.
NETDISC_WEB_PORT 8360 The dashboard’s port. 0: no dashboard.
NETDISC_XBOX every console that connects Only these consoles’ game folders are kept up to date: IP addresses, separated by commas. Needed on Docker Desktop (Windows, macOS), where the server doesn’t see the consoles’ own addresses.
NETDISC_FTP_USER xboxftp Aurora’s FTP login.
NETDISC_FTP_PASSWORD xboxftp Or NETDISC_FTP_PASSWORD_FILE with the path of a Docker secret.
NETDISC_NO_CATEGORY true: leave Aurora’s Xbox 360 category alone.
NETDISC_NO_SCAN true: don’t ask Aurora to scan after changes.
NETDISC_NO_PUSH true: only serve games; leave the console alone.
NETDISC_XBOX_FOLDER, NETDISC_AURORA /Hdd1/NetISO, /Hdd1/Apps/Aurora As --xbox-folder and --aurora (see the server’s options).
NETDISC_PORT, NETDISC_FTP_PORT 4323, 21
NETDISC_VERBOSE true: log every request.
TZ UTC Your time zone, for the log’s times.
  • The variables from NETDISC_XBOX down are only the first start’s settings. Once the server has saved its settings in /config, what’s saved there wins, and you change them on the dashboard. (NETDISC_WEB_PASSWORD, the ports and NETDISC_VERBOSE always apply.)

  • The compose file uses host networking, so the console reaches the server on port 4323 of the host and the server sees the console’s real address. With port mapping instead (ports: with 4323:4323 and 8360:8360, as on Docker Desktop), set NETDISC_XBOX.

  • The server runs as user 1000:1000. If it can’t read your games, set user: in the compose file to an ID that can (and give config to that ID).

  • Without Docker Compose:

    Terminal window
    docker run -d --name netdisc --network host --restart unless-stopped -v /path/to/games:/games:ro -v /path/to/config:/config -e NETDISC_WEB_PASSWORD=<a password> ghcr.io/marcusisdahl/netdisc360

To update the image, see Updating.