Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

The reliable pattern is to run a maintained Rust server image with Docker Compose, publish the gameplay and query ports as UDP, keep RCON on TCP, and mount the server-data directory to persistent storage. Start with a vanilla server, verify networking and saves, then add Oxide/uMod only after the base installation works.

What you need before creating the container

A Docker container does not remove Rust’s hardware or network requirements. LinuxGSM lists 9 GB of RAM minimum, a dual-core 3.4 GHz CPU, and 10 Mbps upload bandwidth for a Rust server (LinuxGSM, 2023). Those are minimum figures, not a guarantee of smooth performance at a particular player count. World size, plugins, map activity, scheduled wipes, and simultaneous players all affect resource use, so leave headroom rather than allocating exactly the minimum.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Host operating system

Use a supported 64-bit Linux distribution. LinuxGSM’s listed examples include Ubuntu 24.04 LTS, Debian 11, and RHEL 8. Keep the host patched, give Docker enough memory, and reserve disk space for the Rust installation, generated world, logs, and backups. A full volume can stop the server just as surely as insufficient RAM.

Docker and image selection

Install Docker Engine and the Compose plugin from Docker’s current instructions, then choose an actively maintained Rust image. A community image may bundle SteamCMD and provide optional Oxide/uMod support. The eberdt image, for example, documents optional Oxide support and RCON execution, but community images are version-sensitive. Check an image’s current README, release activity, documented data path, entrypoint, and environment variables before using it for a public server.

#1 Best Overall
G.SKILL RipjawsV Series DDR4 RAM (XMP) 16GB (2x8GB) Up to 3200MT/s* CL16-18-18-38 1.35V Intel AMD Desktop Computer Memory U-DIMM - Black (F4-3200C16D-16GVKB)
  • Requires overclocking/BIOS adjustments. Maximum speed and performance depends on system components, including motherboard and CPU.
  • G.SKILL RipjawsV Series DDR4 U-DIMM Memory Kit, Model: F4-3200C16D-16GVKB
  • Non-ECC, DDR4 U-DIMM, 288-pin, for Desktop PC & Gaming
  • Includes JEDEC default profile, and Intel XMP memory overclock profile
  • Do not mix memory kits. Memory kits are sold in matched kits that are designed to run together as a set. Mixing memory kits will result in stability issues or system failure.

Do not assume that two images use the same variable names or directory layout. The Compose example below is a safe shape to adapt, not a universal image contract.

Rust’s ports and Docker’s protocol rules

Rust uses separate UDP ports for gameplay and server queries. RCON uses TCP. A representative arrangement is:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Purpose Typical port Transport Why it matters
Gameplay 28015 UDP Players send and receive game traffic here.
Steam query 28017 UDP Server browsers use this separate query endpoint.
RCON 28016 TCP Remote administration and console access.

The values above come from Facepunch and LinuxGSM documentation. You can choose different ports, but the host firewall, Docker mapping, and Rust startup parameters must agree. In Compose, always append the protocol suffix: /udp or /tcp. Mapping 28015:28015 without a suffix publishes TCP and will not provide the UDP gameplay endpoint.

Docker warns that published ports are externally reachable by default. Open only the ports you need in the host firewall and cloud security group. Do not expose RCON broadly when an SSH tunnel or private VPN can keep it off the public internet.

Create persistent storage first

Rust writes saves, maps, configuration, logs, and mod files to its server-data directory. Mount that directory to a named Docker volume or a host directory. Docker describes volumes as the preferred mechanism for data generated and used by containers; either approach survives container replacement when the mount is correct.

Rank #2
Timetec 16GB KIT(2x8GB) DDR3L / DDR3 1600MHz (DDR3L-1600) PC3L-12800 / PC3-12800 Non-ECC Unbuffered 1.35V/1.5V CL11 2Rx8 Dual Rank 240 Pin UDIMM Desktop PC Computer Memory RAM(SDRAM) Module Upgrade
  • [Color] PCB color may vary (black or green) depending on production batch. Quality and performance remain consistent across all Timetec products.
  • DDR3L / DDR3 1600MHz PC3L-12800 / PC3-12800 240-Pin Unbuffered Non-ECC 1.35V / 1.5V CL11 Dual Rank 2Rx8 based 512x8
  • Module Size: 16GB KIT(2x8GB Modules) Package: 2x8GB ; JEDEC standard 1.35V, this is a dual voltage piece and can operate at 1.35V or 1.5V
  • For DDR3 Desktop Compatible with Intel and AMD CPU, Not for Laptop
  • Guaranteed Lifetime warranty from Purchase Date and Free technical support based on United States

Named volume

A named volume is managed by Docker and avoids many host-permission mistakes:

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
docker volume create rust-data

Use the exact destination expected by the selected image. The example below uses /home/steam/server_data; another image may use a different path. If the image writes outside the mounted path, those files will still disappear when the container is replaced.

Bind mount

A bind mount keeps files visible in a host directory, which can be useful for inspection and external backup:

mkdir -p /srv/rust/server_data
chown -R 1000:1000 /srv/rust/server_data

The ownership command is only an example; use the UID and GID documented by the image. Back up the mounted data before a wipe, image change, or major Rust update. A named volume can be archived with a temporary container, for example:

docker run --rm 
  -v rust-data:/data 
  -v "$PWD":/backup 
  alpine tar czf /backup/rust-data-backup.tar.gz -C /data .

Stop the Rust container before a consistent backup of active world files, and verify that the archive can be read before deleting the original.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
Timetec 16GB KIT(2x8GB) DDR3L/DDR3 1600MHz(DDR3L-1600) PC3L-12800 Non-ECC Unbuffered 1.35V/1.5V CL11 2Rx8 Dual Rank 204 Pin SODIMM Laptop Notebook RAM
  • [Specs] DDR3L / DDR3 1600MHz PC3L-12800 / PC3-12800 204-Pin Unbuffered Non ECC 1.35V CL11 Dual Rank 2Rx8 based 512x8
  • [Size] Module Size: 16GB KIT(2x8GB Modules) Package: 2x8GB
  • [Voltage] JEDEC standard 1.35V, this is a dual voltage piece and can operate at 1.35V or 1.5V
  • [Compatibility] Compatible with DDR3 Laptop / Notebook PC, Mini PC, All in one Device
  • [Color] PCB Color is green

Build a Compose deployment

Create a directory for the deployment and save a file named compose.yaml. Replace the image name, data path, and environment variables with the values documented by your selected image:

services:
  rust:
    image: <maintained-rust-server-image>
    container_name: rust-server
    restart: unless-stopped
    ports:
      - "28015:28015/udp" # gameplay
      - "28017:28017/udp" # Steam query
      - "28016:28016/tcp" # RCON
    volumes:
      - rust-data:/home/steam/server_data
    environment:
      RUST_SERVER_NAME: "My Rust Server"
      RUST_SERVER_IDENTITY: "server1"
      RUST_SERVER_SEED: "1234"
      RUST_SERVER_WORLD_SIZE: "4000"
      RUST_SERVER_MAXPLAYERS: "10"
      RUST_RCON_PASSWORD: "change-this-secret"

volumes:
  rust-data:

The variable names in this sample are illustrative. If the image expects command-line arguments rather than environment variables, pass the RustDedicated parameters through the image’s documented command or entrypoint. Keep the host and container ports aligned unless you deliberately change the Rust parameters as well.

Protect the RCON secret

Never commit a real RCON password to a public repository or paste it into a support forum. Use a long, unique secret, restrict TCP/28016 with firewall rules, and store secrets in an environment file with appropriate permissions or in your deployment platform’s secret store. If you change the RCON port, change the Compose mapping, firewall rule, and Rust setting together.

Configure RustDedicated correctly

Rust accepts startup parameters after RustDedicated. A typical headless command includes:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
RustDedicated -batchmode 
  +server.identity server1 
  +server.level Procedural Map 
  +server.seed 1234 
  +server.worldsize 4000 
  +server.maxplayers 10 
  +server.hostname "My Rust Server" 
  +rcon.port 28016 
  +rcon.password "use-a-strong-secret" 
  +rcon.web 1

-batchmode runs without a graphical interface. The identity selects the server’s data directory; the level, seed, and world size define the generated map; max players and hostname control the public presentation; and the RCON settings enable remote administration. Use the exact capitalization and syntax required by the image’s entrypoint.

Rank #4
Sale
CORSAIR Vengeance LPX DDR4 RAM 32GB (2x16GB) Up to 3200MHz CL16-20-20-38 1.35V Intel XMP AMD EXPO Computer Memory – Black (CMK32GX4M2E3200C16)
  • Disclaimer: Maximum Speed requires overclocking/PC BIOS adjustments. Maximum speed and performance depend on system components, including motherboard and CPU
  • Hand-sorted memory chips ensure high performance with generous overclocking headroom
  • VENGEANCE LPX is optimized for wide compatibility with the latest Intel and AMD DDR4 motherboards
  • A low-profile height of just 34mm ensures that VENGEANCE LPX even fits in most small-form-factor builds
  • A solid aluminum heatspreader efficiently dissipates heat from each module so that they consistently run at high clock speeds

Facepunch states that server.cfg is read from the identity’s cfg directory and takes priority for settings placed there. Keep essential identity, port, and RCON values on the command line when the image requires them, and put a larger, maintainable set of server settings in server1/cfg/server.cfg inside the persistent data path. Do not define conflicting values in both places unless you have confirmed which one wins for that setting.

Start the server and verify the first boot

  1. Change into the directory containing compose.yaml.
  2. Run docker compose up -d to create and start the container.
  3. Follow the startup output with docker logs -f rust-server (or the image’s documented log command).
  4. Wait for Rust to finish downloading files and generating the world. Facepunch notes that initial startup can take several minutes.
  5. Check that the log reports the configured identity, map, world size, player limit, and RCON listener without fatal errors.
  6. From another machine, test the public address and gameplay port. Then check that the server appears in the browser or connect directly using the host’s address and game port.

Rust’s own wiki cautions that startup produces a large amount of output and may show errors that can be ignored. Treat a message as actionable when the process exits, repeatedly restarts, fails to bind a port, cannot write its data directory, or never reaches a ready state.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Firewall and router configuration

Allow inbound UDP on the gameplay and query ports and TCP only where RCON is intentionally reachable. If the host sits behind a residential router or another NAT device, forward the same UDP ports to the Docker host. Cloud servers additionally need matching security-group rules. A server that accepts local connections but is absent from the public browser usually has a missing query mapping, firewall rule, or NAT forward.

Keep the query port distinct from the gameplay port. Publishing both as UDP is required even when players can connect directly, because browsers rely on the query endpoint to discover server information.

Add Oxide/uMod only after vanilla works

Install and test the unmodified Rust server first. Oxide/uMod tracks Rust’s changing server files, so a framework release that worked yesterday can fail after a game update. Use the image’s documented Oxide option or installation procedure, then place plugins in the persistent oxide/plugins directory.

Best Value
Silicon Power DDR4 16GB Kit (2x8GB) 3200MHz (PC4-25600) CL22 UDIMM 288-Pin Desktop Computer Memory SP016GBLFU320B22
  • Complies with JEDEC standards
  • Low voltage of 1.2V for less power consumption
  • Strict test and verification procedures are performed for products
  • Timing 22-22-22-52
  • Backed by a lifetime warranty to promise complete services and technical support
  1. Stop or make a backup of the persistent volume.
  2. Install the Oxide/uMod release matching the current Rust build.
  3. Start the container and confirm the framework loads without errors.
  4. Copy one plugin at a time into oxide/plugins, watching logs for dependency or API errors.
  5. After each Rust update, update or reapply Oxide/uMod before enabling players and review plugin compatibility.

LinuxGSM provides a mods-update workflow where applicable. Do not copy an old framework binary blindly into a new Rust installation; compatibility follows the Rust version.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

RCON, Rust+, and remote administration

RCON

RCON gives administrators console access without an in-game connection. Facepunch documents rcon.web 1, and LinuxGSM lists Facepunch WebRCON and other clients. Protect the TCP listener with a firewall or private network, use a strong password, and prefer an SSH tunnel or VPN over exposing RCON to every internet address.

Rust+

Rust+ is optional. Its companion service needs its configured TCP port reachable. Facepunch documents a default derived from the game or RCON port and recommends checking the active value with app.info. Enable Rust+ first, inspect the value reported by the running server, then open only that additional TCP port. Do not guess the port or expose it when Rust+ is disabled.

Updates, wipes, and restart policy

Use restart: unless-stopped or another deliberate Docker restart policy. Docker restart policies determine how a container behaves after a crash and after the Docker daemon restarts; understand that behavior before using automatic recovery on a production server.

Plan updates around player activity:

  1. Announce a maintenance window and make a verified backup of the persistent volume.
  2. Stop the container cleanly with docker compose down or the image’s documented stop command.
  3. Pull the updated image or update the SteamCMD-managed server files according to the image documentation.
  4. Reapply or update Oxide/uMod after the Rust files change.
  5. Start the container and inspect logs for port, storage, and plugin errors.
  6. Connect as an administrator, verify the world and configuration, and only then reopen the server to players.

SteamCMD updates can replace vanilla files. A wipe is a separate decision: preserve the volume when you want the existing world, or archive it and intentionally remove the relevant identity data when starting a new map.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Diagnose common failures

Symptom Likely cause What to check
Server is not listed Missing query endpoint or firewall rule Confirm 28017 (or your chosen query port) is published as UDP, distinct from the game port, and allowed through every firewall and NAT layer.
Players cannot connect but RCON works Gameplay port published as TCP or not published Verify the game mapping includes /udp and that the host firewall allows it.
World resets after recreation Incorrect or missing volume mount Inspect the mount with docker inspect rust-server and confirm the image writes saves beneath the mounted server-data path.
Plugins fail after an update Oxide/uMod or plugin version mismatch Install the framework release matching Rust, update plugins, and read the container log for missing dependencies.
Container repeatedly restarts Startup failure, insufficient RAM or disk, or a bad configuration Run docker logs rust-server, check host memory and disk, and temporarily remove the automatic restart policy while diagnosing.

If a container restarts too quickly to inspect, run it interactively without the restart policy or set the policy temporarily to no. Correct one fault at a time, then restore the intended policy.

Choosing an operating model

Docker is a packaging and isolation layer, not a performance guarantee. Compare the management model against the work you are willing to do:

Option Strengths Trade-offs to verify
Hand-built Docker image Full control over RustDedicated arguments, filesystem layout, upgrades, and observability. You own image maintenance, SteamCMD behavior, backups, security updates, and mod compatibility.
LinuxGSM inside Docker Uses LinuxGSM’s server-management scripts, documented requirements, and mods-update workflow. Adds another management layer; verify how its scripts map ports, volumes, updates, and logs inside the container.
Hosted control panel May provide a web UI, automated backups, static addressing, resource limits, and provider-managed updates or DDoS protection. Networking, mod workflows, storage limits, pricing, and actual DDoS coverage are provider-specific and must be checked before purchase.

For any option, evaluate image or software maintenance cadence, SteamCMD update behavior, persistence and backup tooling, UDP/query/RCON support, plugin installation, log access, resource limits, static-address availability, and security controls. Do not assume a control panel or image supplies DDoS protection unless its documentation explicitly says so.

Quick Recap

Bestseller No. 1
G.SKILL RipjawsV Series DDR4 RAM (XMP) 16GB (2x8GB) Up to 3200MT/s* CL16-18-18-38 1.35V Intel AMD Desktop Computer Memory U-DIMM - Black (F4-3200C16D-16GVKB)
G.SKILL RipjawsV Series DDR4 RAM (XMP) 16GB (2x8GB) Up to 3200MT/s* CL16-18-18-38 1.35V Intel AMD Desktop Computer Memory U-DIMM - Black (F4-3200C16D-16GVKB)
G.SKILL RipjawsV Series DDR4 U-DIMM Memory Kit, Model: F4-3200C16D-16GVKB; Non-ECC, DDR4 U-DIMM, 288-pin, for Desktop PC & Gaming
$134.99
Bestseller No. 3
Timetec 16GB KIT(2x8GB) DDR3L/DDR3 1600MHz(DDR3L-1600) PC3L-12800 Non-ECC Unbuffered 1.35V/1.5V CL11 2Rx8 Dual Rank 204 Pin SODIMM Laptop Notebook RAM
Timetec 16GB KIT(2x8GB) DDR3L/DDR3 1600MHz(DDR3L-1600) PC3L-12800 Non-ECC Unbuffered 1.35V/1.5V CL11 2Rx8 Dual Rank 204 Pin SODIMM Laptop Notebook RAM
[Size] Module Size: 16GB KIT(2x8GB Modules) Package: 2x8GB; [Compatibility] Compatible with DDR3 Laptop / Notebook PC, Mini PC, All in one Device
$38.99
SaleBestseller No. 4
Bestseller No. 5
Silicon Power DDR4 16GB Kit (2x8GB) 3200MHz (PC4-25600) CL22 UDIMM 288-Pin Desktop Computer Memory SP016GBLFU320B22
Silicon Power DDR4 16GB Kit (2x8GB) 3200MHz (PC4-25600) CL22 UDIMM 288-Pin Desktop Computer Memory SP016GBLFU320B22
Complies with JEDEC standards; Low voltage of 1.2V for less power consumption; Strict test and verification procedures are performed for products
$114.97

A practical readiness checklist

  • The host exceeds LinuxGSM’s 9 GB RAM minimum and has a dual-core 3.4 GHz CPU or better, with disk and upload capacity for your planned use.
  • The selected image is maintained, its data path is known, and its environment variables or command syntax have been read.
  • The gameplay and query ports are separate UDP mappings; RCON is TCP and restricted.
  • The server-data directory is mounted to a named volume or bind mount and included in a tested backup.
  • Identity, map, seed, world size, max players, hostname, and RCON settings are deliberate and not conflicting.
  • Vanilla startup, browser visibility, direct connection, and log readiness have been verified before mods are installed.
  • Oxide/uMod and every plugin match the current Rust version.
  • Update, wipe, rollback, and restart procedures are documented for anyone else who administers the server.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.