run downloads and media on a fast vps. stream them back over a slow link. built for egypt-tier last-mile internet.
# qanat
> القناة - the underground channel that carries water across the desert.
run downloads + media on a fast vps. stream them back over a slow link.
built for egypt-tier last-mile internet.
## what's in it
- **homepage** - one dashboard linking out to everything
- **aria2-pro** + **ariang** - multi-connection http + bittorrent downloads
- **metube** - yt-dlp web ui (youtube + 1000 other sites)
- **jellyfin** - video streaming
- **navidrome** - music streaming (optional)
- **opencloud** - files, sharing, sync (eu fork of owncloud infinite scale)
- **collabora** - online office editor for opencloud (optional)
- **caddy** - tls reverse proxy with auto letsencrypt
## what you need
- a vps with **root access** and a public ipv4. providers with the bandwidth
+ peering for our use case:
- netcup — rs series. cheap, lots of bandwidth.
- hetzner — ccx / cpx series. great peering.
- a **domain name**. don't have one? see docs/domains.md
(free options + cheap `.xyz` for $1).
- **docker** and **docker compose v2** on the vps.
- ~50 gb disk, plus whatever you want for media.
## quick start
```bash
git clone
github.com
cd qanat
./setup.sh
$EDITOR .env
# basic-auth password for ariang/metube:
docker run --rm caddy:2-alpine caddy hash-password --plaintext 'your-pw'
# paste output into BASIC_AUTH_HASH in .env
# point dns:
# example.com -> homepage
# jellyfin.example.com -> jellyfin
# aria.example.com -> ariang
# metube.example.com -> metube
# cloud.example.com -> opencloud
# open firewall: 80, 443, 443/udp, 6888 (bittorrent)
docker compose up -d
```
optional add-ons:
```bash
docker compose --profile music up -d # + navidrome
docker compose --profile office up -d # + collabora editor
docker compose --profile warp up -d # + warp (yt bypass)
docker compose --profile tunnel up -d # + cf tunnel (no open ports)
```
## already running aria2 or jellyfin?
see docs/migration.md - reuses you …