Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

Quota Manager logo

Quota Manager

Share one limited internet bundle fairly between everyone at home.

Arabic License: MIT

Quota Manager dashboard — overview

People and devices


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.

How Quota Manager connects


Install

You need one always-on device connected to your router by cable. Pick yours:

Your deviceBest forGo to
Old laptop / mini PC / desktop (Debian, Kali, Ubuntu)Most peopleLinux PC
Raspberry PiLow power, silentRaspberry Pi
Windows or Mac you already useNo spare deviceVirtual machine
Old rooted Android phone2–5 W, battery backupAndroid
OpenWrt routerAdvancedOpenWrt

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-manager

Prefer 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.sh

The 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

  1. Install Raspberry Pi OS (64-bit, Lite is fine) with Raspberry Pi Imager.
  2. Plug it into the router with an Ethernet cable.
  3. 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.

  1. Install VirtualBox or VMware, and create a Debian VM.
  2. 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".)
  3. Plug the computer into the router with a cable, then restart the VM.
  4. Install the package inside the VM using the Linux PC steps.
  5. 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 browses

The 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.

  1. Plug the hub into the router with a cable.
  2. Install a Debian 12 (ARM64) chroot (for example with LinuxDeploy) and open its terminal as root.
  3. 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.sh

OpenWrt 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

PageWhat you do there
OverviewRemaining bundle, days left, live speed and who is using it right now
People & devicesAdd people, move devices, top up GB, speed limits, block or kick
QuotaBundle size, renewal day, top-up packs, optional daily quota switch
NetworkGuest mode, new-device rules, IP reservations, allow / block lists
InternetLine status, public IP, direct PPPoE mode, remote access with Tailscale
SecurityFirewall, ad & content blocking, HTTPS
VPNAdd servers, choose who goes through the VPN
InsightsDaily usage, top devices, most visited domains
ShareSend files and folders between devices, even straight to a nearby device
SystemLanguage, 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 everything

Your data lives in /var/lib/quota-gateway/quota.db — copy it now and then as a backup.

Troubleshooting

ProblemFix
No internet after setupMake sure router DHCP is off, then reconnect the device
Device has internet but isn't countedTurn off IPv6 / Router Advertisement on the router
A computer has no internet and shows under Unmanaged devicesIt 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 0The 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 rebootsudo systemctl enable --now quota-gateway
Forgot the passwordAsk in an issue, or see the developer guide below
Speed limits do nothingNetwork 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.

关于 About

Split your metered internet bundle fairly across every person in the house. Each user gets an allowance (fixed GB, or an equal share of what's left), their devices all share it, and the moment the allowance runs out every device they own is cut at once.
ftthnetwork-monitoringnetwork-programmingnetwork-securitynetworkingpython3vdsl2

语言 Languages

Python74.6%
JavaScript13.4%
HTML5.4%
Shell4.3%
CSS2.3%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
112
Total Commits
峰值: 25次/周
Less
More

核心贡献者 Contributors