What is mikan
mikan is a panel for your own VPN service, built on the mihomo core. In it you add protocols and nodes, create users with plans, hand out subscriptions and sell access through a Telegram bot. The panel is free, the code is open under GPL-3.0, and the interface is in Russian and English.
What it consists of
Section titled “What it consists of”Three small containers from one image run on the server:
- Panel: the admin UI, subscriptions, the Telegram bot and the API. Written in Go.
- Node: mihomo is built into it as a library. It accepts client connections and counts traffic.
- PostgreSQL 18: the panel’s database.
The panel and the node run separately, so updating or restarting the panel does not drop the VPN. The panel server always has its own node, and remote nodes on other servers connect with a key.
Browser ── HTTPS, secret link ──▶ mikan panel │ unix socket / TLS with pinning ▼VPN apps ── REALITY, QUIC… ──▶ mikan nodes (mihomo inside) └──────── subscription ──────────▶ panelOn a production server with clients, the panel takes about 14 MB of memory, the database about 50 MB and the VPN core about 40 MB.
What it can do
Section titled “What it can do”- Accounting to the byte. mihomo is built into the node, so traffic is counted per connection for every user. Plans by duration and gigabytes, a payment day, a device limit and device binding.
- Fifteen protocols. VLESS REALITY (Vision, XHTTP, gRPC, post-quantum), Hysteria2, TUIC, AnyTLS, Trojan, TrustTunnel, ShadowQUIC, Mieru and more. Each one is added from a preset, and keys are created for you.
- Automatic fixes against blocking. If clients from different networks stop reaching a protocol, the panel moves it to a free port or changes the REALITY camouflage site.
- A subscription for each app. Happ, v2RayTun, Koala Clash, Clash Verge, Hiddify and others get only the protocols they can run.
- Nodes and cascades. Remote nodes, node updates from the panel, and exit to the internet through another node or Cloudflare WARP.
- Telegram bot and Mini App. Subscribers see their expiry date, traffic and devices, and buy or renew access. Payment through Telegram Stars and adapters from the marketplace.
- Promo codes, pools and traffic packages, a trial period, Stars refunds.
- Import of users from Marzban, PasarGuard and Remnawave.
- Secure by default. A secret admin link on a random port, HTTPS with Let’s Encrypt even for a bare IP, argon2id, 2FA, a strict CSP, an audit log. Containers run without root, read-only, with no extra privileges.
- Signed updates with a backup before each one and a rollback on failure.
- REST API with “Read” and “Full access” keys, and Prometheus metrics.
Where to start
Section titled “Where to start”InstallationOne command on a clean Ubuntu or Debian server.
First stepsSigning in, the first user and connections.
