Running a Rust survival server on your own VPS gives you full control over performance, uptime, and costs, which managed hosting providers cannot match at comparable prices. M.A.F Cloud's one-line installer handles Docker setup in about 30 seconds, so you get a production-grade Rust server that runs 24/7 without manual sysadmin work.
This guide covers everything from choosing a VPS region close to your players, to optimizing config files, configuring firewall rules, deploying with the M.A.F Cloud agent, and tuning performance for survival multiplayer. You will end up with a stable server that keeps your community online while paying roughly half the cost of traditional game hosting.
Why Self-Host Rust Instead of Using Managed Hosting
**Cost efficiency is the biggest driver.** Most Rust hosts charge RM 30-60/month for a single server with limited slots. A VPS from Hetzner or DigitalOcean costs around $4-6/mo (roughly RM 18-26) and can run three or four separate servers simultaneously, each isolated in its own container. The math favors BYO-VPS heavily once you scale beyond a single instance.
**Region choice directly impacts latency.** Regional hosting providers lock you into their datacenter locations, usually Europe or North America. With a self-hosted VPS, you can deploy a Singapore-based machine if your player base lives in Kuala Lumpur, Jakarta, or Bangkok, giving sub-100ms ping instead of the 150-200ms round trip from overseas facilities. In a fast-paced shooter like Rust, those milliseconds matter.
**Full uptime means your world never sleeps.** Free or budget game hosting often puts servers to sleep after inactivity. That works fine for a test build, but it kills any real community effort. On your own VPS, the process runs continuously. If Rust crashes due to a bad mod or memory spike, M.A.F Cloud detects the failure and restarts automatically, with no manual intervention needed.
Step 1: Choosing the Right VPS
**Performance requirements.** A small Rust server for 5-10 friends needs at least 4 GB RAM and 2 vCPU. For 20+ players, upgrade to 8 GB RAM and 4 vCPU. Rust uses high amounts of RAM because it caches chunks eagerly and the C# runtime has elevated baseline memory usage. Disk speed also matters, as NVMe SSDs load worlds significantly faster than SATA drives.
**Region selection.** Pick a location geographically close to your primary player group. Good options for Southeast Asia:
**Singapore (SG):** Best for Malaysia, Singapore, Indonesia, Philippines. Low latency to the whole archipelago.
**Mumbai (IN):** Decent fallback if your players are spread across South Asia.
**Tokyo (JP):** Higher latency but sometimes more reliable routes to SEA.
DigitalOcean, Vultr, and Linode all have Singapore regions. Hetzner does not; they focus on Germany and UK. Check their latency to your area using `ping` or a tool like Pingdom before committing.
**Minimum specs checklist:**
RAM: 4 GB minimum (8 GB recommended for serious communities)
CPU: 2 vCPU minimum (4 vCPU for 20+ players)
Storage: 32 GB NVMe SSD minimum
OS: Ubuntu 22.04 or Debian 12 (clean install, root access)
Uplink: Dedicated connection; avoid shared bandwidth plans if possible
Step 2: Enroll Your VPS with M.A.F Cloud
The M.A.F Cloud agent turns any Linux machine into a self-service game server platform. Installation takes less than 30 seconds.
1. Go to mafcloud.my.id and create your free account.
2. Navigate to Nodes → Add Node. Give it a name like 'sg-rust-1' that matches its region.
3. Copy the generated one-line command. It looks like this:
curl -fsSL https://cexi.my.id/agent-install.sh | sudo MAFCLOUD_TOKEN=mn_your_token MAFCLOUD_API=https://cexi.my.id bash
4. SSH into your VPS as root:
ssh root@YOUR_VPS_IP
5. Paste the install command and press enter. The script installs Docker (if absent), downloads the agent binary, and registers the machine with your account.
6. Return to the dashboard after 30 seconds. Your node flips to Connected when registration succeeds.
That is all the setup required. The agent handles automatic updates, health monitoring, log streaming, and container management for every server you deploy.
Step 3: Create Your Rust Survival Server
With the node connected, deployment happens entirely in the browser.
1. Click Servers → Create Server in the dashboard.
2. Select Rust as the game type from the available templates.
3. Set the server name (e.g., MySurvivalMap). This appears in the in-game server browser if you enable listings.
4. Allocate resources. Match these to your VPS limits: 4 GB RAM for small groups, 6-8 GB for larger ones. Leave ~1 GB free for the OS and agent.
5. Choose the map. Rust ships with Procedural Map Large by default, providing a balanced mix of terrain complexity and load times. You can switch later via console commands.
6. Set max players. Start conservative; 20 players works well on 4 GB. Increase incrementally as you tune the system.
7. Assign an allocation port. The panel picks a random high-numbered TCP/UDP port and opens it through the firewall automatically. Do not change this unless you have specific routing requirements.
Click Create and wait roughly 60-90 seconds. The agent pulls the Rust Docker image, mounts your configuration volume, and starts the process. Watch the live console stream for startup logs.
Step 4: Configuration Files and Optimization
**server.cfg placement.** Open the File Manager tab and navigate to `/home/rust/server/`. Edit (or create) `server.cfg` with these survival-specific settings:
yaml
hostname "MyServer Name - SG"
maxplayers 25
worldsize 2048
buildheight 72
seed 123456432
game_mode 0
tickrate 30
pve false
offline mode 0
```Key parameters explained:
`hostname`: Appears in server browser. Include your region code (SG, MY, ID) so players know the latency expectation.
`maxplayers`: Set to your allocated capacity. Overpopulating causes tick lag.
`worldsize`: 2048 is standard for most servers. 1024 loads instantly but feels cramped. 4096 is massive but demands heavy RAM.
`tickrate`: 30 is the Rust default. Do not exceed 30; higher values do nothing for gameplay and can cause instability.
`startup --loadscene Default`: Preloads textures and geometry, shortening first-entry boot time.
**console commands for persistence.** Add commonly used rcon/console commands to an autoexec file. Examples:
text
sv.maxclients 25
net.maxreceivesize 8192
net.maxrecvchunk 8192
writeconfig
```These increase network buffers for crowded lobbies and prevent packet drop during peak times.
**plugins directory.** Place `.unitypackage` or `.rar` plugin files into the Plugins folder. Popular survival essentials:
**FaceIT Anti-Cheat**: Blocks common exploit tools.
**AutoMod**: Filters chat spam and inappropriate language.
**MapLoader**: Backs up your map daily for disaster recovery.
**Custom Commands**: Lets builders use /spawn, /home, /warp for creative mode areas.
Restart the server after adding plugins for them to load.
Step 5: Port Forwarding and Firewall Rules
Self-hosted servers require open ports so players can connect. M.A.F Cloud handles most of this automatically, but double-check your cloud provider’s security group settings.
**Required protocols:**
TCP port range: 28015-28016 (Steam API + web services)
UDP port 28015 (game traffic)
If you see connection refused errors, verify the following:
1. **Cloud provider firewall.** DigitalOcean droplets use firewalld by default. Run:
sudo ufw allow 28015/tcp
sudo ufw allow 28015/udp
sudo ufw reload
2. **VPS-level iptables.** Some images ship with restrictive default rules. Inspect current ruleset:
sudo iptables -L -n -v
Allow outgoing and incoming traffic on game ports explicitly if needed.
3. **Port probe feature.** Use the live port probe in M.A.F Cloud to confirm external accessibility. Type your VPS IP and assigned port; a green indicator means players can reach you.
**Connecting externally.** Players join via Direct Connect in the Rust launcher. Provide your public IP and allocated port (e.g., `YOUR_VPS_IP:28015`). No Steamworks proxy required since you own the VPS.
Step 6: Performance Tuning for Stability
**Watch memory consumption.** Rust uses a lot of heap space. Monitor with the agent dashboard. If you consistently sit above 90% utilization, allocate more RAM or reduce maxplayers.
**Tick rate drops signal trouble.** Use the in-game developer console (`~`) to view TPS. Stable servers stay near 30. Drops below 20 indicate overload; scale down the player count or upgrade hardware immediately.
**GC pauses affect responsiveness.** Rust’s C# garbage collector stutters occasionally. Avoid excessive custom scripts or poorly optimized mods that churn allocations. If you add .NET plugins, test them thoroughly before promoting to live.
**Backup strategy.** Schedule automated snapshots daily from the M.A.F Cloud Backups tab. Each snapshot captures the entire world folder, configs, and plugins. Keep three rotating versions; restores take about two minutes from a recent backup.
**crash detection.** Auto-restart is enabled by default. If the process exits unexpectedly (memory violation, segfault), the agent restarts it within 30 seconds. Log analysis shows the crash reason immediately.
Common Issues and Fixes
**Connection timeout.** Most often caused by misconfigured firewall rules. Re-check port openness with Netcat or Telnet utilities. Also verify your VPS provider has not blocked high-traffic UDP ports.
**"Server full" message despite low player count.** Rare race condition in older Rust builds. Update the Docker image regularly - the agent pulls new versions automatically unless you pin a specific version tag.
**"Unable to find map" on spawn.** Caused by corrupted seed initialization. Delete `generated.map`, `map.dat`, and `map.blob` from the data folder, then restart. The engine regenerates fresh.
**Low FPS in-engine vs server tick lag.** These are distinct problems. Client-side FPS issues relate to player hardware, not server performance. Server tick lag is visible on the admin dashboard as elevated response times. Upgrade CPU cores first if that metric climbs.
Conclusion: Full Control for Less Money
You now have a production-grade Rust survival server running on your own infrastructure with zero cold starts, consistent latency, and crash-proof uptime. The total monthly cost sits around RM 20-30 depending on your VPS provider, roughly half the price of managed alternatives, while you keep complete ownership of your world data, configurations, and player lists.
Sign up at mafcloud.my.id, register your VPS with the one-line command, and deploy your first Rust instance. When your community grows beyond the Free tier, upgrade to Pro (RM 29.90/mo) or Studio (RM 59.90/mo) for unlimited servers, custom domains, and priority support.