If you have run containers on MikroTik before, you know the drill: enable device mode, configure a bridge, set up veth interfaces, write firewall rules, configure NAT, mount storage, and pull images by hand. It works, but it is a lot of steps for what should be simple.
RouterOS 7.14 introduced the Apps subsystem (/app), and the 7.24 beta cycle expanded the catalog with well-known services like Gitea and Home Assistant. The Apps system is MikroTik’s answer to one-click container deployment — it handles networking, firewall rules, port mapping, and storage automatically.
This guide walks through everything: enabling container mode, running the setup wizard, deploying apps, and customizing configurations for your homelab.
Why the RouterOS App Catalog Matters for Homelab
Before Apps, deploying a container on RouterOS required a half-dozen manual steps in the CLI or WinBox. The new /app system abstracts all of that into a catalog.
What the App system does automatically:
- Creates and attaches veth interfaces to your LAN bridge
- Generates firewall filter rules and NAT dstnat entries
- Pulls container images from Docker Hub, GCR, or Quay
- Configures environment variables from a YAML manifest
- Generates a UI-URL for web access via WebFig
This is not a replacement for a full Docker host. The MikroTik container runtime is lightweight — it runs on the router itself, sharing its CPU and RAM. That makes it ideal for lightweight services that benefit from living on the network edge: a local Gitea mirror, a Home Assistant instance, or an ad-blocking DNS container.
Requirements and Prerequisites
Before you start, confirm your device meets the requirements:
| Requirement | Details |
|---|---|
| RouterOS version | 7.14+ (7.24 beta for newest catalog entries) |
| Architecture | arm64 or x86 (not MIPSBE / EN7562CT) |
| Container package | Must be installed (/system/package/print) |
| Device mode | Container mode must be enabled |
| Storage | External USB, NVMe, or SATA recommended (at least 4 GB) |
| RAM | Minimum 512 MB free for containers |
Check your device:
|
|
If the container package is missing, install it:
|
|
Reboot after installation.
Step 1: Enable Container Mode
Container mode requires physical access to the device and a configuration reset. This is a one-time step.
|
|
The device will prompt for confirmation, then reboot. After the reboot, container mode is permanently enabled. You can verify:
|
|
Important: Enabling container mode must be done with physical console or serial access. It cannot be enabled remotely via SSH or API.
Step 2: Run the Setup Wizard
The /app setup wizard automates storage selection, bridge configuration, and IP assignment.
|
|
The wizard walks through three steps:
Step 2a: Storage Selection
The scanner detects formatted disks (nvme1, usb1, sata1, etc.). If no disk appears, format one first:
|
|
Pick the disk when prompted. The wizard creates the necessary directory structure.
Step 2b: Bridge Configuration
Select the LAN bridge interface (typically bridge or bridge_lan). The wizard will:
- Create virtual ethernet (veth) interfaces for each app
- Attach them to the selected bridge
- Configure IP addressing for container connectivity
Step 2c: Router IP
Enter the IP address used to access the router’s web interface. This is used for UI-URL generation and automatic WebFig integration links.
After completion, verify the settings:
|
|
Expected output shows your disk, bridge, router-ip, and auto-configured paths:
app-store-urls: https://apps.mikrotik.com/container/index.yaml
auto-update: no
disk: usb1
download-path: usb1/media/downloads
media-path: usb1/media
lan-bridge: bridge
router-ip: 10.0.20.1
show-in-webfig: yes
Step 3: Browse and Deploy Apps
List available apps from the MikroTik catalog:
|
|
This shows all discoverable apps with their status, size, and UI URL (if running). Flags indicate state:
X= disabledR= running
Deploy Gitea
|
|
RouterOS downloads the Gitea container image, creates the veth interface, adds firewall rules, and configures port forwarding. In seconds, Gitea is accessible at the generated UI-URL (typically http://10.0.20.1:3000).
You can verify the automatic configuration:
|
|
Deploy Home Assistant
|
|
Home Assistant deploys with its web UI mapped to port 8123 by default. The app includes automatic mDNS advertisements for discovery on the local network.
Monitor deployment status:
|
|
The output shows status: running, memory usage, CPU usage, data size, and the UI-URL.
Check Running Apps
|
|
Configuring App Parameters
Apps are not locked down. Every parameter in the YAML manifest can be overridden before or after deployment.
Environment Variables
|
|
Custom Mounts
|
|
Port Redirects
Override auto-generated port maps:
|
|
This maps host ports 443 and 80 to container port 3000.
Enable Auto-Update
|
|
Or set globally for all apps:
|
|
Custom App Stores
Run apps from a private or third-party catalog:
|
|
The custom store URL must point to a YAML array where each element describes an app with name, image, ports, and environment variables matching the MikroTik App schema.
Apps vs Manual Container Setup
| Aspect | App Catalog (/app) |
Manual (/container) |
|---|---|---|
| Setup time | 2 minutes + wizard | 15-30 minutes |
| Network config | Automatic (veth + bridge) | Manual (veth + bridge) |
| Firewall rules | Auto-generated | Manual configuration |
| NAT / port forwarding | Auto dstnat | Manual dstnat rules |
| Storage mounts | Configured in wizard | Manual bind mounts |
| Image pull | On enable | /container/config/set + pull |
| Custom images | Via custom app store | Any image |
| Multi-container | Supported (YAML groups) | Manual stacking |
| Granular control | Limited (preset parameters) | Full control |
When to use Apps: Quick deployments, learning containers on RouterOS, standard services (Gitea, Home Assistant), or when you want one-command repeatability.
When to use manual: Custom images, multi-stage networking, non-standard port schemes, or when you need fine-grained resource limits and device passthrough.
Viewing the App YAML Manifest
Every app is defined by a YAML manifest. You can inspect it:
|
|
This shows the full compose-style definition including image source, environment variables, volumes, ports, and device requirements. You can export and modify it for custom app store deployment.
Security Considerations
Running containers on your router expands the attack surface. Keep these points in mind:
Physical access requirement: Container mode requires physical console access to enable. This is a deliberate security boundary — a remote compromise cannot enable containers without prior physical setup.
Third-party images: MikroTik catalogs point to upstream registries. Verify image integrity when deploying critical services:
|
|
Device resources: A container that exhausts RAM or CPU can affect routing performance. Monitor usage:
|
|
Network isolation: By default, apps use network=default which provides LAN access with NAT for outbound traffic. Use network=internal for services that should not be reachable from the LAN:
|
|
Troubleshooting Common Issues
Container Won’t Start
Check available memory and disk space:
|
|
If storage is full, the image extraction fails. Free space or use a larger disk.
App Not Found in Catalog
Ensure the catalog URL is reachable:
|
|
For custom apps, verify the YAML endpoint returns a valid array.
Networking Issues
If the container UI is unreachable:
|
|
Real-World Example: Full Gitea Deployment
Here is the complete sequence from zero to running Gitea on a RouterOS device:
|
|
Conclusion
The RouterOS App catalog transforms container deployment on MikroTik from a multi-step CLI exercise into a guided, repeatable process. For homelab users running capable hardware like the RB5009, CCR2004, or CHR, this means lightweight services can live at the network edge without a separate Linux host.
The sweet spot for Apps is standard services with predictable configurations — Gitea for local code mirrors, Home Assistant for home automation, or similar light workloads. When you need exotic images or full control, the manual /container path is still there.
The catalog is evolving. With the 7.24 beta adding Gitea and Home Assistant support, expect more entries in future releases. Whether you are new to RouterOS containers or a veteran of manual veth configuration, give /app setup a try — it might save you fifteen minutes and a few firewall headaches.