Resources

100 MUD Hosting resources for MUD players

Effective MUD hosting requires balancing the low resource requirements of legacy text-based engines with the security and uptime expectations of modern internet infrastructure. This guide covers the selection of VPS providers, the automation of server maintenance, and the hardening of the environment to protect decades of player data and world building.

100 MUD Hosting resources for MUD players illustration
Placeholder illustration shown while custom artwork is being produced.

Infrastructure and Environment Setup

  1. 1

    Hetzner Cloud ARM Instances

    beginnerhigh

    Utilize CAX11 instances for high-performance, low-cost hosting. ARM architecture is more than sufficient for C-based MUDs like ROM or CircleMUD and offers superior price-to-performance ratios.

  2. 2

    Oracle Cloud Always Free Tier

    beginnerhigh

    Leverage the 4 OCPU and 24GB RAM allowance for resource-heavy Java or Python-based MUD engines (like Evennia or CoffeeMUD) without incurring monthly costs.

  3. 3

    Glibc Compatibility for Legacy Binaries

    intermediatestandard

    Install 'libc6-i386' and 'lib32stdc++6' on 64-bit Debian/Ubuntu systems to run older 32-bit MUD binaries compiled in the late 90s.

  4. 4

    Docker Multi-stage Builds

    advancedhigh

    Containerize the MUD codebase using a build stage for GCC/Make and a minimal Alpine Linux run stage to reduce the attack surface and image size.

  5. 5

    Swap File Allocation

    beginnerstandard

    Configure at least 2GB of swap space on 1GB RAM VPS instances to prevent the OOM (Out of Memory) killer from terminating the MUD process during heavy compiles or world resets.

  6. 6

    Static Linking via GCC

    intermediatestandard

    Compile the MUD with the '-static' flag to bundle all libraries into the binary, ensuring portability across different Linux distributions without library version conflicts.

  7. 7

    Tmux for Process Persistence

    beginnermedium

    Use Tmux sessions to keep the MUD running while allowing admins to detach and reattach to the live console for real-time debugging.

  8. 8

    Vultr High Frequency Compute

    beginnermedium

    Select high-clock-speed instances for MUDs with complex pathfinding or heavy scripting engines to minimize tick-latency in high-population areas.

  9. 9

    ZRAM Configuration

    intermediatemedium

    Enable ZRAM on low-memory servers to compress memory pages, effectively doubling usable RAM for MUDs with massive world files and high object counts.

  10. 10

    Local GCC Optimization

    intermediatestandard

    Compile with '-march=native' on the host machine to leverage specific CPU instructions of the VPS hardware, improving execution speed for heavy loops.

Automation and Disaster Recovery

  1. 1

    Systemd Service Units

    beginnerhigh

    Create a .service file with 'Restart=always' and 'RestartSec=5' to ensure the MUD automatically reboots following a crash or server restart.

  2. 2

    Rclone Off-site Backups

    intermediatehigh

    Schedule a cron job using Rclone to sync the 'player/' and 'lib/area/' directories to encrypted S3-compatible storage like Backblaze B2.

  3. 3

    Logrotate for MUD Logs

    beginnermedium

    Configure /etc/logrotate.d/mud to compress and rotate the 'log/stderr' and 'log/syslog' files daily, preventing disk exhaustion from recursive bug loops.

  4. 4

    UptimeRobot Port Monitoring

    beginnerhigh

    Set up external monitoring on the specific telnet port (e.g., 4000) to receive instant alerts via mobile push or Discord webhook if the game stops responding.

  5. 5

    Git-based Deployment

    intermediatehigh

    Use a private GitHub/GitLab repository to push code updates, using a 'post-receive' hook on the server to automatically recompile the binary.

  6. 6

    Health Check Scripts

    intermediatemedium

    Write a Bash script that uses 'nc' (netcat) to probe the game port; if it fails to connect, it triggers a kill -9 and a fresh start of the binary.

  7. 7

    Automated SQL Dumps

    intermediatehigh

    For MUDs using MariaDB/MySQL for player data, use 'mysqldump' with the '--single-transaction' flag in a nightly cron job to ensure data consistency.

  8. 8

    Staging Port Configuration

    beginnermedium

    Host a duplicate 'test' instance on a secondary port (e.g., 4001) to allow builders to verify area changes before merging into the production directory.

  9. 9

    Disk I/O Monitoring with Iostat

    intermediatestandard

    Monitor 'iowait' values; high disk latency on a shared VPS can cause 'ghost lag' in MUDs that frequently write to player files during saves.

  10. 10

    Snapshot Scheduling

    beginnermedium

    Enable weekly provider-level snapshots (DigitalOcean/Linode) to provide a full-system recovery point in the event of a botched OS upgrade.

Security and Access Management

  1. 1

    Dedicated Non-privileged User

    beginnerhigh

    Never run the MUD process as root. Create a 'mud' user with restricted shell access to contain potential exploits within the game directory.

  2. 2

    SSH Key-Only Authentication

    beginnerhigh

    Disable password-based SSH login in /etc/ssh/sshd_config to prevent brute-force attacks against admin accounts.

  3. 3

    Fail2Ban for Telnet Port

    intermediatemedium

    Configure Fail2Ban to monitor the MUD's log files for rapid connection attempts, automatically banning the IP at the firewall level.

  4. 4

    UFW Firewall Lockdown

    beginnerhigh

    Use Uncomplicated Firewall (UFW) to deny all incoming traffic except for the SSH port and the specific MUD game port.

  5. 5

    Bcrypt Password Hashing

    advancedhigh

    Replace legacy MD5 or plaintext password functions in the C source code with a modern Bcrypt library to protect player credentials.

  6. 6

    Stunnel for MUDPS Support

    intermediatemedium

    Set up Stunnel to wrap the telnet port in TLS, allowing players using modern clients (like Mudlet) to connect via a secure, encrypted tunnel.

  7. 7

    WireGuard for Admin Tools

    intermediatemedium

    Restrict access to web-based admin panels or database tools to a private WireGuard VPN IP range, keeping them off the public internet.

  8. 8

    Chroot Jail Isolation

    advancedmedium

    Run the MUD process within a chroot environment to ensure that even a remote code execution exploit cannot access /etc/ or other system files.

  9. 9

    Auditd File Monitoring

    advancedstandard

    Configure the Linux Audit Daemon to log any modifications to the 'src/' directory or 'bin/' folder to detect unauthorized code injections.

  10. 10

    Unattended-Upgrades

    beginnerhigh

    Enable the 'unattended-upgrades' package to ensure that security patches for the Linux kernel and SSH are applied automatically without admin intervention.