The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →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
Prefer not to run the server on your own PC? Godlike.Host offers hosted Rust servers with free DDoS protection and up to three free backups a day.
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.
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
- 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:
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware match| 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
- [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.
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.
Rank #3
- [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:
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
- 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
- Change into the directory containing
compose.yaml. - Run
docker compose up -dto create and start the container. - Follow the startup output with
docker logs -f rust-server(or the image’s documented log command). - Wait for Rust to finish downloading files and generating the world. Facepunch notes that initial startup can take several minutes.
- Check that the log reports the configured identity, map, world size, player limit, and RCON listener without fatal errors.
- 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.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problemsFirewall 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
- 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
- Stop or make a backup of the persistent volume.
- Install the Oxide/uMod release matching the current Rust build.
- Start the container and confirm the framework loads without errors.
- Copy one plugin at a time into
oxide/plugins, watching logs for dependency or API errors. - 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.
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:
- Announce a maintenance window and make a verified backup of the persistent volume.
- Stop the container cleanly with
docker compose downor the image’s documented stop command. - Pull the updated image or update the SteamCMD-managed server files according to the image documentation.
- Reapply or update Oxide/uMod after the Rust files change.
- Start the container and inspect logs for port, storage, and plugin errors.
- 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.
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
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.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →

