For users running their own services on servers or routers. Core packages don't include a desktop settings interface and won't configure subscriptions or the system proxy for you. Most desktop and mobile users should use a GUI client above to manage core startup and permissions.
Before running the core
Extract ZIP files first. GZ files usually contain a single compressed binary; on Unix-like systems, make it executable after extraction. Install DEB files with a package manager. Prepare a configuration directory and compatible YAML file, then start the core in the foreground and check its output before setting up a service. This helps prevent repeated background restarts from hiding configuration errors.
If you already have an executable and configuration, run a configuration test first. The paths below are local examples; make sure the files exist before running the command. Passing a syntax test only confirms that the configuration can be read—it doesn't confirm node reachability, working DNS, or that system traffic is routed through the core.
mihomo -t -f ./config.yaml
Bind the listener to localhost by default. If you need LAN access, explicitly configure allowed addresses, authentication, and firewall rules. Restrict access to the external controller API as well. Before replacing the binary, keep the old file and configuration, then verify that the new build starts before updating the running service.
| Check | Requirements and steps |
| System and ABI | Match the operating system, bitness, CPU instruction set, and firmware ABI. On low-power devices, also check the instruction set used to build the binary. |
| Configuration and resources | Prepare a readable configuration file and ensure the resources required by rule providers and DNS can be updated. |
| TUN permissions | The OS must provide a virtual network device and the required permissions. Containers also need explicit device and network capabilities. |
| Running as a service | Use the system service manager to control the process, logs, and restart behavior. Test configuration changes before reloading. |