infrarust

infrarust

Docker app from Niki2k1's Repository

Overview

Infrarust Minecraft proxy, preconfigured for MCSM. Listens on 25565 and routes players to the right server container by the domain they connect with, discovering servers from the Docker labels MCSM sets. No per-server config files. Setup: install the "mcsm" template first (it explains the shared "infrarust" network). Copy config.toml from https://github.com/Niki2k1/mcsm/tree/main/Unraid/infrarust into the config folder mapped below before starting. Point a DNS wildcard such as *.mc.example.com at your Unraid IP and forward port 25565. Turn on Autostart for this container in the Docker tab. Unraid stops containers with docker stop, so the restart policy alone does not bring it back after a reboot or Docker restart.
Infrarust Logo

Infrarust

Minecraft reverse proxy written in Rust. Route players to backend servers by domain, manage everything from a web dashboard.

Ko-fi

Crates.io MSRV License Discord

Infrarust web dashboard

[!WARNING] Infrarust V2 is currently in active development. Expect bugs with the intercepted modes (client_only / offline).

Features

Routing Domain and subdomain-based routing with wildcard support. One port, many servers.
Proxy modes passthrough, zerocopy, client_only, offline, server_only. From raw TCP relay to full Mojang auth interception.
Web dashboard Built-in admin panel with REST API, real-time event streaming (SSE), and log viewer. Add [web] to your config and it's running.
Docker Auto-discover Minecraft containers via labels - no config files needed for Docker-managed servers. Scratch-based image, multi-arch.
Plugins Event-driven plugin system with built-in auth, server wake, and queue plugins. Write your own in Rust.
Security Rate limiting, IP filtering, ban system (IP / UUID / username).
Observability OpenTelemetry (OTLP) export for metrics, traces, and logs to any collector.
Hot reload Drop a .toml file in servers/ and the proxy picks it up. No restart.

Quick Start

Install

# Pre-built binary (Linux x86_64)
curl -LO https://github.com/Shadowner/Infrarust/releases/latest/download/infrarust-linux-x86_64.tar.gz
tar xzf infrarust-linux-x86_64.tar.gz
sudo mv infrarust /usr/local/bin/

# Docker
docker pull ghcr.io/shadowner/infrarust:latest

# From source (Rust 1.94+)
git clone https://github.com/Shadowner/Infrarust.git && cd Infrarust
cargo build --release -p infrarust

Archives for macOS (darwin) and Windows, x86_64 and arm64, are on the releases page.

Configure

infrarust.toml:

bind = "0.0.0.0:25565"
servers_dir = "./servers"

[web]

servers/survival.toml:

domains = ["survival.example.com"]
addresses = ["127.0.0.1:25566"]

Run

infrarust

The web dashboard is at http://localhost:8080. Your API key is in plugins/admin_api/config.toml.

Full docs at infrarust.dev.

Docker

The Docker image is built from scratch - statically linked binary, CA certs, nothing else. Supports amd64 and arm64.

docker run -d \
  --name infrarust \
  -p 25565:25565 \
  -p 8080:8080 \
  -v ./config:/app/config \
  ghcr.io/shadowner/infrarust:latest \
  --config /app/config/infrarust.toml

Auto-discovery

Mount the Docker socket and Infrarust finds your Minecraft containers by label:

services:
  infrarust:
    image: ghcr.io/shadowner/infrarust:latest
    command: ["--config", "/app/config/infrarust.toml"]
    ports:
      - "25565:25565"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./config:/app/config

  survival:
    image: itzg/minecraft-server
    environment:
      EULA: "TRUE"
    labels:
      infrarust.enable: "true"
      infrarust.domains: "survival.example.com"

Add [docker] to your infrarust.toml and containers with infrarust.enable=true get registered automatically. When they start or stop, routing updates in real time.

Monitoring

Infrarust exports metrics, traces, and logs over OpenTelemetry (OTLP). Point it at any OTLP collector by adding a [telemetry] section to your infrarust.toml. See the telemetry docs for the options.

Documentation

Full documentation at infrarust.dev:

Contributing

Contributions welcome - see CONTRIBUTING.md for setup and guidelines.

Questions or ideas? Join the Discord or open an issue.

Similar Projects

More can be seen on the thank's open source web page

License

AGPL-3.0 with plugin exceptions - see LICENSE.

AGPL v3

Install Infrarust on Unraid in a few clicks.

Find Infrarust in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for Infrarust Review the template variables and paths Click Install

Requirements

The "mcsm" template, the user-defined Docker network "infrarust", and a config.toml in the config folder (sample in the MCSM repo under unraid/infrarust/).

Download Statistics

9,788
Total Downloads

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/shadowner/infrarust:latest
Last Updated2026-03-07
First Seen2026-10-01

Runtime arguments

Network
infrarust
Shell
sh
Privileged
false
Extra Params
--restart unless-stopped --user 0

Template configuration

Minecraft portPorttcp

Port players connect to. Forward it on your router.

Target
25565
Default
25565
Value
25565
Config folderPathrw

Must contain config.toml (see the MCSM repo, unraid/infrarust/config.toml). Infrarust creates plugins/ here on first start.

Target
/app/config
Default
/mnt/user/appdata/infrarust
Value
/mnt/user/appdata/infrarust
Servers folderPathrw

Infrarust refuses to start without this folder, even though MCSM servers are discovered through Docker labels. Mapping it makes Unraid create it. Usually stays empty.

Target
/app/config/servers
Default
/mnt/user/appdata/infrarust/servers
Value
/mnt/user/appdata/infrarust/servers
Docker socketPathro

Infrarust watches container events to discover MCSM servers. Mounting it read-only does not limit what the Docker API allows.

Target
/var/run/docker.sock
Default
/var/run/docker.sock
Value
/var/run/docker.sock