be0e622333351d6144f6f577e72e385f0d29157c
ci/woodpecker/pr/pr-build Pipeline was successful
mikrotik-tailscale
A minimal Tailscale Docker image built for MikroTik routers running Container. Fits in 16 MB internal flash. Built from source with only router-relevant features included.
- ~4 MB extracted rootfs (
FROM scratch+ UPX'd Tailscale binary + a custom static busybox debug shell). - Multi-arch: amd64, arm64, arm/v7 — one tag, RouterOS pulls the right one.
- No built-in updater (it would pull the full upstream binary and wear flash); updates are delivered by CI and pulled only when the image actually changed.
- Flash-wear conscious: minimal persistent state, no netmap disk-caching, tmpfs for scratch and runtime.
Documentation
- Usage — deploy the published image on a MikroTik router and operate it (networking, auth, MagicDNS, automatic updates). Start here if you just want it running.
- Development — build the image, test it locally, bump the Tailscale version, and cut releases.
- Design & rationale — size optimizations, the feature allowlist, why certain features are deliberately removed, flash-wear protection, and the versioning / release / update architecture.
Supported architectures
| Docker platform | RouterOS arch | Example devices |
|---|---|---|
linux/amd64 |
x86 / CHR | x86 installs, Cloud Hosted Router |
linux/arm64 |
arm64 | RB5009, CCR2004/2116/2216, hAP ax³, L009, Chateau |
linux/arm/v7 |
arm (ARMv7) | hAP ac², RB3011, RB4011, RB1100AHx4 |
ARMv5 (hEX Refresh / hAP ax S) is not supported — see DESIGN.md.
Quick start
- Run it on a router: follow docs/USAGE.md — it deploys the prebuilt image, no build needed.
- Build it yourself:
./build.sh(needs docker buildx + QEMU for cross-arch); details in docs/DEVELOPMENT.md.
Repository layout
| Path | Purpose |
|---|---|
Dockerfile |
Multi-stage, multi-arch build (cross-compiled Go + custom busybox) |
busybox-applets.config |
Curated busybox applet set |
build.sh |
Build all/one arch, optionally export per-arch tarballs |
routeros/update-tailscale.rsc |
RouterOS auto-update script (digest compare + recreate) |
.woodpecker/ |
CI: Renovate cron, release tagging, multi-arch publish |
renovate.json |
Dependency-update rules |
docs/ |
Tutorial and design docs |
Description
Languages
Dockerfile
57.4%
RouterOS Script
35.2%
Shell
7.4%