Quota Manager
Share one limited internet bundle fairly between everyone at home.

What it does
Every person gets a monthly allowance (a fixed number of GB, or an equal share of what's left). All of their devices share it. When it runs out, their devices are cut off — nobody else is affected.
- See who used how much, live, per person and per device
- Set speed limits and keep gaming ping low while others download
- Block, kick or pause any device in one tap
- Block ads and adult/gambling sites for the whole house
- Built-in VPN, firewall, file sharing between devices, and remote access from anywhere (Tailscale)
- Works in English and Arabic, light and dark, on phone and desktop
How it works
A small always-on computer sits between your router and your devices. Your router keeps WiFi; this computer hands out the addresses and counts the traffic.
Install
You need one always-on device connected to your router by cable. Pick yours:
| Your device | Best for | Go to |
|---|---|---|
| Old laptop / mini PC / desktop (Debian, Kali, Ubuntu) | Most people | Linux PC |
| Raspberry Pi | Low power, silent | Raspberry Pi |
| Windows or Mac you already use | No spare device | Virtual machine |
| Old rooted Android phone | 2–5 W, battery backup | Android |
| OpenWrt router | Advanced | OpenWrt |
Wi-Fi can't be used for the gateway itself — it must be plugged in with a cable (a cheap USB-to-Ethernet adapter works). It must stay on 24/7: if it is off, nobody has internet.
Linux PC or laptop
Works on Debian, Kali and Ubuntu (apt), Fedora (rpm), Arch / Manjaro (pacman) and any other systemd distro (tarball). Debian-family first. Run in a terminal:
sudo apt-get update
sudo install -d /etc/apt/keyrings
curl -fsSL https://UserJoo9.github.io/QuotaManager/quota-manager.gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/quota-manager.gpg
echo "deb [signed-by=/etc/apt/keyrings/quota-manager.gpg] https://UserJoo9.github.io/QuotaManager stable main" | \
sudo tee /etc/apt/sources.list.d/quota-manager.list
sudo apt-get update
sudo apt-get install quota-managerPrefer a single file? Download quota-manager_<version>_all.deb from Releases and run sudo apt install ./quota-manager_*_all.deb.
Other distros - download the matching file from Releases:
# Fedora / RHEL family
sudo dnf install ./quota-manager-<version>-1.noarch.rpm
# Arch / Manjaro
sudo pacman -U quota-manager-<version>-1-any.pkg.tar.zst
# Any other systemd distro
tar xzf quota-manager-<version>.tar.gz && cd quota-manager-<version> && sudo ./install.shThe in-app updater picks the right file for how you installed. Fedora and Arch support is new: if your box runs SELinux or firewalld and forwarded traffic is blocked, set QUOTA_DISABLE_FIREWALLD=1 before installing, or open an issue with the output.
Then continue with First setup.
Raspberry Pi
- Install Raspberry Pi OS (64-bit, Lite is fine) with Raspberry Pi Imager.
- Plug it into the router with an Ethernet cable.
- Follow the Linux PC steps above, then First setup.
Windows / Mac (virtual machine)
No spare device? Run the gateway inside a Debian virtual machine on the computer you already have.
- Install VirtualBox or VMware, and create a Debian VM.
- Set the VM network to Bridged and pick the Ethernet (cable) adapter. (VMware: Edit → Virtual Network Editor →
VMnet0→ "Bridged to" → your Ethernet card; leave it off "Automatic".) - Plug the computer into the router with a cable, then restart the VM.
- Install the package inside the VM using the Linux PC steps.
- The computer must stay on, and wired, while you want the limits to work.
Do not bridge to Wi-Fi. A Wi-Fi bridge shares one address with the VM, so the VM can browse the internet but never sees the other devices' traffic. Everything looks connected, yet devices show "connected, no internet", the counters stay at 0 and speed limits do nothing. If you have no cable, use a USB Ethernet adapter passed through to the VM (it behaves like a cable).
Quick check inside the VM:
ip -br a # the card should hold your router-side IP and 192.168.2.1
ping -c2 192.168.1.1 # your router; around 1 ms on a cable, several ms on Wi-Fi
sudo nft list counters | grep -A2 q_up_192_168_2 # bytes grow while a phone browsesThe card is found automatically (the one holding 192.168.2.1), so a different name such as ens34 is fine. After changing the VM's network, restart with sudo systemctl restart quota-gateway.
Great for trying Quota Manager before buying anything.
Old Android phone (rooted)
Android 7–14 with root, plus a USB-C/OTG hub with an Ethernet port and charging pass-through.
- Plug the hub into the router with a cable.
- Install a Debian 12 (ARM64) chroot (for example with LinuxDeploy) and open its terminal as root.
- Follow the Linux PC steps inside it, then First setup.
Tip: limit charging to 60–70 % (ACC app) so the battery lasts.
OpenWrt router
OpenWrt 22.03+ with 128 MB+ RAM (on small-flash routers, use a USB drive with ExtRoot).
OpenWrt 25.12 replaced opkg with apk; the installer below detects which one your router has (22.03-24.10 use opkg):
wget -O /tmp/install_openwrt.sh https://raw.githubusercontent.com/UserJoo9/QuotaManager/main/scripts/install_openwrt.sh
sh /tmp/install_openwrt.shOpenWrt support is experimental: x86_64 and aarch64 routers/PCs work best (the Python packages ship ready-made binaries for them). If it fails, open an issue with the full output.
First setup
1. Turn off DHCP on your router. Open your router's page (usually http://192.168.1.1), find DHCP / LAN and switch DHCP off. Keep Wi-Fi and NAT on. Also turn off IPv6 / Router Advertisement if you see it.
2. Reconnect your devices (toggle airplane mode or Wi-Fi) so they get a new address from the gateway.
3. Open the dashboard from any device:
http://192.168.2.1:8080
Password: admin — you'll be asked to change it right away.
4. Fill in the welcome screen: your bundle size (e.g. 140 GB) and the day your provider renews it.
5. Give people allowances. New devices appear on their own, but start disabled (0 GB) as a safety lock. Add a person, assign the device to them, and set their share.
Can't open the dashboard? A device that still has an old address needs to reconnect. You can also try
http://192.168.1.110:8080.Give the gateway a fixed address (reserve it on the router) — if its address changes, nobody gets internet.
Reach the dashboard from outside your home
Many internet lines block or drop connections coming from outside, so opening a port on your public IP often does not work. Use the built-in Tailscale instead: Internet → Remote access → Install, sign in once, then install the Tailscale app on your phone with the same account and open the address shown on that card. Nothing is opened on your public IP, so keep the "Allow dashboard access from the internet" switch off.
Using it
| Page | What you do there |
|---|---|
| Overview | Remaining bundle, days left, live speed and who is using it right now |
| People & devices | Add people, move devices, top up GB, speed limits, block or kick |
| Quota | Bundle size, renewal day, top-up packs, optional daily quota switch |
| Network | Guest mode, new-device rules, IP reservations, allow / block lists |
| Internet | Line status, public IP, direct PPPoE mode, remote access with Tailscale |
| Security | Firewall, ad & content blocking, HTTPS |
| VPN | Add servers, choose who goes through the VPN |
| Insights | Daily usage, top devices, most visited domains |
| Share | Send files and folders between devices, even straight to a nearby device |
| System | Language, light/dark, colour themes, password and 2FA, updates, logs |
Handy to know:
- Top up a person mid-month from their card — they're back online instantly.
- Eye icon hides names and MAC addresses, handy before showing your screen.
- Daily quota (optional): switch it on in Quota, then open a person's card → Daily plan. Choose fixed GB per day or split what is left of the month over the days left, what happens to unused GB (next day or spread), heavier days, and how the person's devices share the day. The monthly quota still applies; at the daily limit the devices pause until midnight. The person sees today's plan on their usage page.
- My usage page: any device can open
http://192.168.2.1:8080/milestone(no login) to see its own remaining allowance. - The dashboard opens at the same address as always (
http://<gateway>:8080/). Old bookmarks to/ui/forward there automatically. - WAN | LAN switch above the Overview chart: the same live speed, daily usage and top devices, for the internet or for traffic inside your home (NAS, router, the gateway itself).
- Sharing: drop files or folders on the Share page, or send them straight to another device on the WiFi (up to 50 MB; several files or folders arrive as one ZIP).
- Risky buttons (kick, blacklist, enable HTTPS, remove an allow/block entry, clear all) ask you to tap twice — the second tap confirms.
Update & remove
The dashboard checks for updates itself (System → Updates) and can install them in one click. Your settings and data are kept.
sudo apt-get update && sudo apt-get install --only-upgrade quota-manager # update
sudo apt remove quota-manager # remove, keep data
sudo apt purge quota-manager # remove everythingYour data lives in /var/lib/quota-gateway/quota.db — copy it now and then as a backup.
Troubleshooting
| Problem | Fix |
|---|---|
| No internet after setup | Make sure router DHCP is off, then reconnect the device |
| Device has internet but isn't counted | Turn off IPv6 / Router Advertisement on the router |
| A computer has no internet and shows under Unmanaged devices | It uses a manually typed IP. Set it to obtain an IP automatically (DHCP); to keep one fixed address, reserve it for that device in the dashboard instead |
| Running in a VM: devices connect but no internet, counters stay 0 | The VM is bridged to Wi-Fi. Bridge it to the Ethernet card (see virtual machine) |
| Install says "no installation candidate" | Run sudo apt-get update first |
| Everything stopped after a reboot | sudo systemctl enable --now quota-gateway |
| Forgot the password | Ask in an issue, or see the developer guide below |
| Speed limits do nothing | Network page → turn shaping on and enter your real line speed |
Good to know
- Usage is counted every ~15 seconds, so numbers are approximate.
- Over-limit users are fully cut off, not slowed.
- If the gateway loses power, the home network loses internet.
- Deleting a device blocks it for good until you remove it from the block list.
- One admin session at a time: signing in on another device signs the first one out, and changing the password signs out everywhere.
- In LAN mode, firewall rules whose source is your home network have no effect (home devices are always allowed); use blocks or switch to WAN mode to restrict them.
Developers: see Structure_README.md · License: MIT · Not affiliated with any ISP.