If you have ever wanted to look into running a router in the VPS without hardwares? then you are at the right spot. In this tutorial, I will take you through all there is to know about MikroTik CHR. I will tell you what it is, why it would be interesting to run on a VPS, how it works, what you can actually use it for, benefits of having a VPS defined over physical hardware, and what you should maybe gather before you start. After that, I will take you through the cool common steps of installing MikroTik on a VPS (Ubuntu version), and the performance tweaks I recommend.
A Short Guide on Mikrotik CHR
MikroTik is an industry-favorite hardware company producing a range of modems, routers, and even a few server devices. Its routers were especially popular because of their unique operating system. After a while, MikroTik started releasing that operating system as an independent piece of software, calling it RouterOS. RouterOS basically allows you to turn any computer system into a MikroTik router device, providing practical but straightforward functionality. MikroTik CHR (Cloud-Hosted Router) is a version of RouterOS MikroTik released more recently. CHR is designed to function on clouds, Virtual Private Servers (VPS), and virtual machines.
Mikrotik CHR Use Cases
So, MikroTik CHR is your best bet for turning your remote server into a router, so you can easily create powerful VPN servers, load balancers, and more. Many admins love it for tasks like MikroTik VPN setup, where you can build secure tunnels for remote workers or branch offices. It’s up to you to make the most of your virtual, remote MikroTik router, but potentially, there are a lot of incredible use cases for a MikroTik CHR VPS. If you use a Windows PC or laptop, you can also use MikroTik’s Winbox to simplify using MikroTik’s CHR or RouterOS. Naturally, I’ll show you how to do that as well as how to install MikroTik on a VPS.
Other Use Cases:
- VPN server
- Load balancer
- Firewall & security gateway
- Bandwidth management (QoS, shaping)
- Network monitoring (NetFlow, SNMP)
- Hotspot gateway with captive portal
- Remote access gateway
- Multi-WAN router (failover/load balance)
- IoT device hub
- Virtual lab for testing
Running MikroTik on an Ubuntu VPS
MikroTik installed on an Ubuntu server is like making a high-tech control tower in the cloud. You will serve the role of the air traffic controller for your network. You will handle traffic and create routing in such a manner that the physical router may never need to be touched. Everything is virtual and changeable and can be controlled from anywhere in the world.
For example, you can customize a MikroTik DNS server setup to make sure your clients opt their queries in no time at all, no matter what location they come from. You can handle firewall rules without ever laying hands on on-premise equipment remotely.
Advantages of Installing MikroTik on a VPS
- Anywhere-Anytime: set up a MikroTik router in a remote data center in just minutes.
- Scale-On-Demand: Increase the VPS and say goodbye to adding more hardware.
- Cost Effective: No more buying and maintaining routers and paying for the VPS instead.
- Resilient: Use your provider’s uptime and backup and redundancy.
- Safe Environment: Run performance tests for VPNs or firewall rules or routing setups.
Requirements to Install MikroTik on a VPS
Make sure you meet these conditions:
- A VPS (best is KVM-based) with at least 1 CPU, 512MB of RAM, and 2GB of storage.
- Your OS installed must be Ubuntu (no older than 22.04).
- SSH access (on Windows use PuTTY, and on Linux/Mac just use ssh).
- The MikroTik CHR image.
Some VPS providers will not allow custom OS boot. Be sure that your host supports ISO / disk mounting.
How to Install MikroTik on a VPS
Step 1: Buy a Mikrotik VPS
Head over to Cloudzy.com and buy a MikroTik VPS plan. Make sure to get a plan with decent resources, so your remote router can handle the tasks you have in mind for it. I would suggest the “Growing” plan, which is basically the most affordable plan with the necessary resources and performance. To manually install MikroTik Router (CHR) on your Cloudzy VPS, you need to select a Linux VPS and choose Ubuntu 16 or 18 as your VPS operating system.
Step 2: Update and Prepare Ubuntu VPS
Connect to your VPS:
ssh root@your-vps-ip
Update packages:
apt update && apt upgrade -y
Install tools you’ll need:
apt install wget unzip qemu-utils -y
Step 3: Download MikroTik CHR Image
Grab the latest stable CHR image from MikroTik:
wget https://download.mikrotik.com/routeros/7.15/chr-7.15.img.zip
unzip chr-7.15.img.zip
Step 4: Convert Image for VPS
Convert the raw image into a bootable format:
qemu-img convert -f raw -O qcow2 chr-7.15.img mikrotik-chr.qcow2
Write it to your VPS boot disk (replace vda with your disk):
dd if=chr-7.15.img of=/dev/vda bs=4M
Finish with:
sync
Step 5: Reboot Into MikroTik CHR
Restart the VPS:
reboot
When it comes back online, it will be running RouterOS CHR.
Step 6: First Login to MikroTik
By default, MikroTik CHR allows SSH on port 22. Connect with:
ssh admin@your-vps-ip
The default user is admin with no password.
First thing you should do is to set a password
password
Step 7: Access via Winbox or WebFig
If you are not a fan CLI, then you can handle CHR with GUI tools:
- WebFig: Open
http://your-vps-ip
in your browser.
- Winbox: Connect using the VPS IP.
Step 8: Basic Configuration
Enable a DHCP client on the main interface:
/ip dhcp-client add interface=ether1
Add NAT masquerade for internet access:
/ip firewall nat add chain=srcnat action=masquerade out-interface=ether1
As well as the traffic filtering layer, if you’re thinking about exposing some services, you will most likely want to configure MikroTik port forwarding rules so your VPS can safely direct external traffic to internal apps or devices.
Security Best Practices
- Change the default credentials immediately.
- Restrict SSH to your own IP:
/ip firewall filter add chain=input protocol=tcp dst-port=22 src-address=<your-ip> action=accept
/ip firewall filter add chain=input protocol=tcp dst-port=22 action=drop
- Use HTTPS for WebFig, disable plain HTTP.
Optimizing MikroTik CHR on Your VPS
Installing MikroTik on a VPS offers you the option of cloud-based routing at the price of a physical hardware if you set it up correctly. Typically, the performance is determined more by the CPU than by the RAM of the VPS provider, so minor tweaks in the CHR configuration and virtualization can impact performance totally. This section will detail the important considerations for running your VPS based CHR quickly, stably and adequately.
- VPS: Fast single-core CPU, 512 MB–2 GB RAM, SSD, 1 Gbps+ network.
- CHR Version: Use VPS/Cloud 64-bit, keep updated.
- Virtualization: Dedicated vCPU, virtio NIC, avoid bridges/nested virtualization.
- CHR Tweaks: Enable FastPath, lean firewall/NAT, minimal logging, disable unused services/IPv6.
CHR Tweaks Quick Settings
- FastPath / CFastPath: Enable for faster packet forwarding.
- Firewall / NAT: Keep rules minimal; use raw rules where possible.
- Logging: Limit or rotate logs to reduce disk and CPU load.
- Services: Disable anything you don’t use (IPv6, DHCP, etc.).
- Queues: Use simple queues only; avoid per-IP queues on high traffic.
- Interfaces: Use virtio/paravirtualized NICs; avoid unnecessary bridges.
- Monitoring: tool profile for CPU, SNMP or interface stats for traffic.
Wrapping Up
And well, with all being said, you have just learned the full process of Install MikroTik on a VPS. I have shown you what CHR is, the best use cases for CHR, and why it is better to set up CHR on a VPS than on actual hardware. I have also guided you through what you must have before you start.
2 Responses
what about if i decided to buy a linux vps and decide to install by myself mikrotik chr is it possible because i do not need all the spec of your mikrotik vps for my tests yours basic linux vps spec are fine for me so i prefer buy a basic linux vps and install the chr by myself what i need is to know if it’ll work?
Great tutorial. But your script only install version CHR version 6.
I tried modify the script and add the version 7 image link
and when i run the script its giving me error of fstype mount error.
can you please write how to fix this issue? or do you have a new link?
thanks