CreateYourVPN Academy

OpenWRT router

How to connect an OpenWRT router to CreateYourVPN with Nikki — add one subscription link and your panel's split-tunneling rules apply to the whole home network automatically.

Connecting a router puts your whole home behind the VPN — every phone, TV and laptop uses it without any per-device setup. On OpenWRT this is the smoothest path of all: you add one subscription link, and the router pulls both the server and your panel's split-tunneling rules from it. Change the rules in your panel, and the router picks them up on its next refresh.

We use Nikki — a lightweight OpenWRT app built on the mihomo (Clash.Meta) core. This guide covers the whole path: installing Nikki (the manual method is the primary route here, since many providers can't reach the project's feed), connecting the subscription, auto-updates, and verification.

Nikki needs OpenWRT 24.10 or newer (25.x and SNAPSHOT work too). OpenWRT 23.05 is not supported.

What you'll need

  • A router running OpenWRT ≥ 24.10 with internet access.
  • Access to the router's web interface (LuCI) and over SSH (login root, same password as in LuCI).
  • A computer on the same network and 10–15 minutes.

Step 1. Install Nikki

Nikki isn't in the default OpenWRT feeds — it installs from its own package feed. The catch is that the feed and its install script live on GitHub, and GitHub loads poorly for many providers — the quick "two-command" install often just doesn't work. That's why the manual method comes first here: it always works. If GitHub loads fine for you, Method B is faster.

Method A — manual (always works)

You download the packages to your computer and copy them to the router yourself — the router itself doesn't need GitHub access.

Find your router's architecture: in LuCI open System → Software and click Update lists… — the command output will show the architecture (for example x86_64 or aarch64_cortex-a53). Alternative via SSH: grep OPENWRT_ARCH /etc/os-release.

Open the release page nikkinikki.pages.dev, go into the folder for your OpenWRT version (openwrt-24.10, openwrt-25.12, or SNAPSHOT), then into your architecture's folder. Download three packages: mihomo-meta (the core), nikki, and luci-app-nikki — plus luci-i18n-nikki-ru if you'd like the Russian interface. Stable releases ship .ipk files; SNAPSHOT ships .apk. Put it all in one folder, e.g. Downloads/nikki.

Copy the folder to the router. The -O flag is required: without it, scp will try to use SFTP, which OpenWRT doesn't have (if your version of scp doesn't recognize the -O flag, just drop it — older versions already default to the right protocol). If your folder isn't in "Downloads" or is named differently, adjust the path in the command.

macOS / Linux:

scp -O -r ~/Downloads/nikki root@192.168.1.1:/root/

Windows (PowerShell):

scp -O -r "$env:USERPROFILE\Downloads\nikki" root@192.168.1.1:/root/

Connect over SSH and install the packages from the folder — the mihomo core first in the list:

ssh root@192.168.1.1
opkg update
cd nikki
opkg install ./mihomo-meta*.ipk ./nikki*.ipk ./luci-app-nikki*.ipk

opkg update is needed so the package manager can pull dependencies from OpenWRT's stock repositories. If you downloaded the Russian translation, add ./luci-i18n-nikki-ru*.ipk to the end of the command. SNAPSHOT builds don't have opkg — instead of the last two commands, run apk update, then apk add --allow-untrusted ./mihomo-meta*.apk ./nikki*.apk ./luci-app-nikki*.apk (the flag is needed because a manual install doesn't have the project's signing key on the system).

Method B — from the project's feed (if GitHub is reachable)

The classic two-command install. Try it if GitHub loads fine for your provider.

Connect to the router over SSH and add the project's feed:

ssh root@192.168.1.1
wget -O - https://github.com/nikkinikki-org/OpenWrt-nikki/raw/refs/heads/main/feed.sh | ash

192.168.1.1 is the router's default address; substitute your own if it's different.

Install the packages — the mihomo core is pulled in automatically:

opkg install nikki luci-app-nikki luci-i18n-nikki-ru

luci-i18n-nikki-ru is the optional Russian translation of the Nikki interface. SNAPSHOT builds use a different package manager: the same packages install via apk add.

If the script hangs or the packages won't install, your provider can't reach the feed. No problem — Method A works without it.

The official instructions are always up to date — check them if a command has changed:

Whichever method you used to install the packages, log out of LuCI and log back in afterward — the Services → Nikki menu entry only shows up once you've logged back in.

Log in to your account and find the "Routers" block.

Turn on the "Enable router support" toggle.

Copy the subscription link (OpenWRT / Nikki) — it ends in /clash. This is exactly what lets the router pull both your server and your panel's split-tunneling rules.

The subscription link is a secret: whoever gets it can use your VPN. Don't share it, and don't post it anywhere.

Step 3. Add the subscription to Nikki

In Services → Nikki open the Profile tab and add a new subscription: any name works (e.g. CreateYourVPN); paste the subscription link from your account into the Subscription Link field. You can leave the other fields as they are. Click Save & Apply.

Click Update on the subscription — Nikki downloads the profile: the server and your split-tunneling rules.

Step 4. Turn Nikki on

On the Proxy Config tab, make sure the proxy is on (Enable), and switch TCP Mode to TPROXY. Click Save & Apply. Nikki sets up the firewall rules itself.

On the App Config tab, turn on Enable and Fast Reload, pick the subscription you added in the profile selector, and click Save & Apply — the service starts.

While you're there, we recommend also turning on Scheduled Restart with a cron expression such as 0 5 * * * (every day at 05:00). Every restart makes Nikki re-download the subscription — so the router automatically picks up any rule changes from the panel and the current server, with nothing to update by hand.

Step 5. Check that everything works

Click Open Dashboard in Nikki — the core's dashboard opens, showing status and your server. Then, on any device connected through the router, open a site that should go through the VPN and confirm your visible location changed. Sites you set to bypass the VPN should still open directly.

If the core doesn't start on the first try. The first time mihomo starts, it downloads geo databases from GitHub (needed for country/category rules), so the router needs internet access — and if GitHub is poorly reachable from your network, the first start can fail. Restart Nikki (or the whole router) and open the Dashboard again — sometimes it takes a couple of tries before the databases finish downloading. Once the service is up, it keeps running reliably.

How rules and the server update

You edit split-tunneling rules in the panel — there's nothing to change on the router. The router picks up the latest version every time the subscription refreshes: automatically on schedule (Scheduled Restart from step 4) or manually with the Update button on the Profile tab. The server updates along with the rules: if a new one is assigned to you, the router switches to it on the next subscription refresh.

Tip: torrents and load on the router

Now all of your home network's traffic passes through the mihomo core on the router. Heavy P2P downloads on weak hardware can push the router's CPU to its limit and cut your speed. If you run into this, limit traffic interception to a list of ports: on the Proxy Config → Bypass tab, switch Destination TCP Port and Destination UDP Port to Custom and list the ports that should go through the VPN (for example 80 and 443; press Enter after each value, then Save & Apply). Anything not on the list — including torrent clients with their random high ports — goes out directly, bypassing both the VPN and the core.

This is a trade-off: apps running on ports outside the list will also stop going through the VPN. Only use this if the load on your router is genuinely a problem.

Helpful references

On this page