One command · runs as a service

Your server is idle most of the month.
Let it cover its own bill.

Cheap servers come with far more bandwidth than anyone uses. Meerkly sends other people's traffic out through the part you do not, and pays you per gigabyte — one command to install, and it runs as a system service from then on.

$zz
$0.10 / GBSame rate as every device
1.6 GB / dayCovers a $5 server — 50 GB a month
1 commandInstall, configure, start
The maths

How little it takes to break even.

Not a forecast of what the server will earn — that depends on demand for its location. Just the line it has to cross for the hosting to cost you nothing.

One server · break-even

What does it take to cover the bill?

Not what the server might earn — what it has to share for the hosting to cost you nothing. At $0.10 a gigabyte, that is a smaller number than most people expect.

Currency
Plan type
Covers the bill at1.6 GBa day, at $0.10 per GB

50 GB a month2.5% of a 2 TB allowance.

Everything past that point is profit, at the same rate.

One server. Every one you add runs the same command with the same publisher id, and shows up in the dashboard by hostname.

A threshold, not a forecast. This is how little it takes to cover the hosting — not what the server will make, which depends on demand for its location and network. Shared traffic counts against a metered allowance like any other; the agent does not cap it for you yet.

The install

Three steps. Two of them are one line.

Paste it and answer one question, or take the pre-filled line from your dashboard and answer none. The same command works pasted into a shell, in cloud-init, or in an Ansible task.

  1. Get your publisher id

    Create an account and the dashboard hands you one — a pub_ string that says which account earns. It is public, not a secret, so it is safe in a shell history, a cloud-init file or a repo.

  2. Run one command on the server

    SSH in and paste the line below. It installs through apt or dnf if the box has one, verifies the download against the release checksums, asks for your publisher id once, and registers a systemd service. Your dashboard hands you the same line with your id already in it, so nothing prompts at all.

  3. Check on it, then forget it

    meerkly status tells you it is connected. From then on systemd keeps it running through reboots, and every gigabyte it shares shows up in the dashboard under the server's hostname.

curl -fsSL https://meerkly.com/install | sh

The first form asks for your id. The one-liner and the cloud-init file carry it instead — copy those from your dashboard, where they come pre-filled with your real id. The variable sits after the pipe on purpose: in front of curl it would go to curl, and sh would never see it.

$ meerkly status
state:    connected
gateway:  gw-eu-1
uptime:   3d 4h
shared:   see https://dashboard.meerkly.com
Privacy & safety

Before anything else: what it does on your box.

It cannot reach your own services

The exit refuses anything that is not a routable public address — so 127.0.0.1, your database, your admin panel and anything on a private range are out of reach by construction, not by configuration.

One outbound connection, no ports

A single QUIC connection out to our gateway. Nothing listens, nothing is opened in your firewall, and your provider's security groups need no changes.

Metered at the gateway

Bytes are counted by us as they move, not by the agent. What the dashboard shows is what gets paid, and journalctl will agree with it.

Questions

What people who run servers ask.

Does it need root?

To install a distribution package and register a system service, yes — the script uses sudo for those two steps on Linux and nothing else. Run as root directly, as cloud-init does, and there is no sudo at all.

The one thing it will never do as root is Homebrew, which refuses to run that way and would leave a broken prefix if it did not.

Can it reach the other things running on this server?

No. The exit resolves every destination itself and refuses anything that is not a routable public address — 127.0.0.1, your database, an admin panel bound to a private interface, anything on 10.* or 192.168.*. It then connects to the address it checked and never re-resolves the name, so a hostname cannot answer public once and private the second time. Your own services are out of reach by construction, not by a setting.

Will it eat my bandwidth allowance?

Shared traffic counts against a metered plan like any other traffic, and the agent does not cap it for you yet. On a metered box, watch meerkly status and your provider’s graph for the first month. On an unmetered one there is nothing to eat into.

For scale: a $5 server covers its own bill at 50 GB a month, which is a few percent of a typical allowance.

Does my hosting provider allow this?

Check. Some providers forbid running a proxy or reselling bandwidth in their terms, and that is between you and them — we cannot tell you it is allowed on a plan we have never read. The traffic itself is ordinary outbound HTTPS from your box; nothing about it is hidden from the provider.

Does it open any ports?

None. The agent holds one outbound QUIC connection to our gateway and listens for nothing. Your firewall and your provider’s security groups need no changes, and there is no inbound surface to scan.

Is a server paid the same as a phone?

Today, yes — one rate for every kind of device, $0.10 per GB, and exits are chosen by country alone. We have left room to price them differently in future. If that changes, settled earnings keep the rate they were priced at, so nothing already earned moves.

Can I run it on many servers?

Yes — same command, same publisher id, on as many machines as you like. Each one appears in the dashboard under its hostname, so you can tell them apart and name them, and it all settles into one balance.

Where are the logs, and how do I remove it?

meerkly status for the short version; journalctl -u meerkly -f for the stream. The service is a normal systemd unit named meerkly.

Removal is whatever installed it: sudo apt remove meerkly, sudo dnf remove meerkly, or brew uninstall meerkly. The package’s own scripts stop and deregister the service on the way out.

One line, and the box starts paying for itself.

Take a publisher id, paste the command, check meerkly status. Add the next server the same way.

$zz