{"id":49898429,"url":"https://github.com/pibulus/pibulus-os","last_synced_at":"2026-05-16T01:37:28.229Z","repository":{"id":336100181,"uuid":"1148258936","full_name":"pibulus/pibulus-os","owner":"pibulus","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-07T14:19:57.000Z","size":8374,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-07T14:29:51.095Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pibulus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-02T19:00:40.000Z","updated_at":"2026-05-07T14:26:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/pibulus/pibulus-os","commit_stats":null,"previous_names":["pibulus/pibulus-os"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/pibulus/pibulus-os","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pibulus%2Fpibulus-os","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pibulus%2Fpibulus-os/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pibulus%2Fpibulus-os/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pibulus%2Fpibulus-os/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pibulus","download_url":"https://codeload.github.com/pibulus/pibulus-os/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pibulus%2Fpibulus-os/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33087028,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T20:25:35.270Z","status":"ssl_error","status_checked_at":"2026-05-15T20:25:34.732Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-16T01:37:25.315Z","updated_at":"2026-05-16T01:37:28.214Z","avatar_url":"https://github.com/pibulus.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"```\n\n  ██████╗ ██╗   ██╗██╗ ██████╗██╗  ██╗ ██████╗ █████╗ ████████╗     ██████╗ ███████╗\n ██╔═══██╗██║   ██║██║██╔════╝██║ ██╔╝██╔════╝██╔══██╗╚══██╔══╝    ██╔═══██╗██╔════╝\n ██║   ██║██║   ██║██║██║     █████╔╝ ██║     ███████║   ██║       ██║   ██║███████╗\n ██║▄▄ ██║██║   ██║██║██║     ██╔═██╗ ██║     ██╔══██║   ██║       ██║   ██║╚════██║\n ╚██████╔╝╚██████╔╝██║╚██████╗██║  ██╗╚██████╗██║  ██║   ██║       ╚██████╔╝███████║\n  ╚══▀▀═╝  ╚═════╝ ╚═╝ ╚═════╝╚═╝  ╚═╝ ╚═════╝╚═╝  ╚═╝   ╚═╝        ╚═════╝ ╚══════╝\n\n    q u i c k   c a t ' s   t h e   b e s t .   k i c k   o u t   t h e   r e s t .\n\n  ──────────────────────────────────────────────────────────────────────────\n  ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\n  ██  A SOVEREIGN INTERNET ON A RASPBERRY PI 5  ██  MELBOURNE, AUSTRALIA ██\n  ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\n  ──────────────────────────────────────────────────────────────────────────\n```\n\n## WHAT IS THIS\n\nA 4GB Raspberry Pi 5 and a 5.5TB hard drive under a desk in Melbourne\nrunning 11 Docker containers, 13 domains, 39 scripts, and a 24/7 pirate\nradio station. No cloud. No tracking. No subscriptions. No permission.\n\nIt replaces Netflix, Spotify, Kindle, and a dozen other subscriptions\nwith a single computer that costs less than one month of the services\nit replaces. Every dollar or minute taken away from platforms that\nexploit people is worth it.\n\nIf you want the practical map instead of the manifesto, start at\n[DOCS_INDEX.md](./DOCS_INDEX.md).\n\nIf you specifically want the deck/admin reverse-engineering map, start at\n[DECK_MAP.md](./docs/DECK_MAP.md).\n\n```\n  ┌─────────────────────────────────────────────────────────────────┐\n  │                                                                 │\n  │   \"The internet became a shopping mall. We wanted a park.\"      │\n  │                                                                 │\n  └─────────────────────────────────────────────────────────────────┘\n```\n\n---\n\n## THE STATS\n\n```\n  ╔═══════════════════════════════════════════════════════════════════╗\n  ║                                                                   ║\n  ║   ██ MEDIA VAULT ██████████████████████████████████████████████   ║\n  ║                                                                   ║\n  ║   13,989 .... music tracks                                        ║\n  ║   10,345 .... books (epub/pdf/mobi)                               ║\n  ║    2,192 .... comics \u0026 graphic novels                             ║\n  ║      205 .... movies                                              ║\n  ║      224 .... tv shows                                            ║\n  ║       11 .... audiobooks                                          ║\n  ║                                                                   ║\n  ║   ██ GAMES ████████████████████████████████████████████████████   ║\n  ║                                                                   ║\n  ║      544 .... mega drive ROMs                                     ║\n  ║   3,000+ .... PICO-8 carts                                       ║\n  ║      NES .... Game Boy / GBA / SNES / N64 / TG-16                ║\n  ║    + interactive fiction library                                   ║\n  ║                                                                   ║\n  ║   ██ KNOWLEDGE ████████████████████████████████████████████████   ║\n  ║                                                                   ║\n  ║    2,597 .... occult \u0026 esoterica files                            ║\n  ║       60 .... palestine solidarity resources                      ║\n  ║        1 .... complete offline wikipedia                          ║\n  ║                                                                   ║\n  ║   ██ INFRASTRUCTURE ███████████████████████████████████████████   ║\n  ║                                                                   ║\n  ║       11 .... docker containers                                   ║\n  ║       13 .... tunneled domains                                    ║\n  ║       39 .... shell \u0026 python scripts                              ║\n  ║       20 .... HTML pages                                          ║\n  ║      642 .... lines of nginx config                               ║\n  ║      175 .... git commits                                         ║\n  ║        0 .... dollars/month in hosting fees                       ║\n  ║        0 .... dependencies on big tech                            ║\n  ║                                                                   ║\n  ╚═══════════════════════════════════════════════════════════════════╝\n```\n\n---\n\n## THE SERVICES\n\n```\n  ┌──────────────────────────────────────────────────────────────┐\n  │  PUBLIC -- no login, no tracking, no questions               │\n  ├──────────────────────────────────────────────────────────────┤\n  │  quickcat.club .............. the front door                 │\n  │  kpab.fm ................... 24/7 pirate radio               │\n  │  /arcade/ .................. retro game emulators            │\n  │  /pico/ .................... 3000+ PICO-8 carts              │\n  │  /fiction/ ................. interactive fiction              │\n  │  /wall/ .................... pixel graffiti                   │\n  │  /terminal/ ................ BBS \u0026 MUD gateway               │\n  │  /drop/ .................... file uploads                     │\n  │  /wiki/ .................... offline wikipedia               │\n  │  /palestine/ ............... solidarity resources             │\n  │  /conspiracy/ .............. occult \u0026 esoterica              │\n  └──────────────────────────────────────────────────────────────┘\n  ┌──────────────────────────────────────────────────────────────┐\n  │  FRIENDS -- shared password, given in person                 │\n  ├──────────────────────────────────────────────────────────────┤\n  │  watch.quickcat.club ....... movies \u0026 shows (Jellyfin)       │\n  │  music.quickcat.club ....... hi-fi streaming (Navidrome)     │\n  │  read.quickcat.club ........ 10,345 ebooks (Calibre-Web)     │\n  │  comics.quickcat.club ...... 2,192 comics (Kavita)           │\n  └──────────────────────────────────────────────────────────────┘\n  ┌──────────────────────────────────────────────────────────────┐\n  │  ADMIN -- owner only                                         │\n  ├──────────────────────────────────────────────────────────────┤\n  │  deck.quickcat.club ........ cyberdeck command \u0026 control     │\n  │  radio-admin ............... AzuraCast broadcast mgr         │\n  │  vault ..................... full drive browser               │\n  │  soulseek .................. P2P music network (LAN)         │\n  └──────────────────────────────────────────────────────────────┘\n```\n\n---\n\n## THE CUSTOM BUILDS\n\nNo frameworks. No npm install. VT323 monospace, CSS animations, vanilla JS.\nEvery page loads in under a second on a Pi because there is nothing to load.\n\n```\n  ┌─ KPAB.FM ──────────────────────────────────────────────────────┐\n  │  Pirate radio station. 24/7 auto-DJ with taste but no format.  │\n  │  Song requests. Heart voting. Live shoutbox. Now-playing API.  │\n  │  13,989 tracks. No ads. No algorithm. No Spotify. Just music.  │\n  └────────────────────────────────────────────────────────────────┘\n  ┌─ THE DECK ─────────────────────────────────────────────────────┐\n  │  Cyberdeck control panel with live telemetry: CPU temp, RAM,   │\n  │  disk, uptime, active users, now playing. Floating radio       │\n  │  widget with station switching. Message inbox. One-click       │\n  │  access to every service. It looks like a movie prop and       │\n  │  every number on it is real.                                   │\n  └────────────────────────────────────────────────────────────────┘\n  ┌─ QUICKCAT.CLUB ────────────────────────────────────────────────┐\n  │  Neon glitch title with chromatic aberration. Card hover       │\n  │  sounds. Intersection observer entrance animations. Scanline   │\n  │  drift. Grid overlay. Theme toggle via cursor block. The       │\n  │  whole aesthetic, running on a machine with less RAM than       │\n  │  most browser tabs.                                            │\n  └────────────────────────────────────────────────────────────────┘\n  ┌─ TRANSMISSION WALL ────────────────────────────────────────────┐\n  │  Anonymous shoutbox. Leave a signal. No accounts. No history.  │\n  │  Messages appear in real time across quickcat.club \u0026 kpab.fm.  │\n  └────────────────────────────────────────────────────────────────┘\n  ┌─ THE WALL ─────────────────────────────────────────────────────┐\n  │  Pixel graffiti canvas. Click to paint. Shared state across    │\n  │  all visitors. Persistent. Digital bathroom stall energy.      │\n  └────────────────────────────────────────────────────────────────┘\n  ┌─ DROP ZONE ────────────────────────────────────────────────────┐\n  │  Drag and drop file uploads. Friends contribute music, books,  │\n  │  comics, ROMs directly to the collection. Community-fed.       │\n  └────────────────────────────────────────────────────────────────┘\n  ┌─ RETRO ARCADE ─────────────────────────────────────────────────┐\n  │  Browser-based emulation. Mega Drive, SNES, N64, Game Boy,     │\n  │  GBA, NES, TG-16. SharedArrayBuffer threading. PICO-8 carts.  │\n  │  Interactive fiction engine. Zero install. Play now.            │\n  └────────────────────────────────────────────────────────────────┘\n```\n\n---\n\n## THE SECURITY\n\n```\n  ╔═══════════════════════════════════════════════════════════════════╗\n  ║                                                                   ║\n  ║   CLOUDFLARE TUNNEL .... real IP invisible to the internet       ║\n  ║   RATE LIMITING ........ 1 req/sec on all server blocks          ║\n  ║   BOT BLOCKING ......... 25+ scanner user-agents auto-blocked    ║\n  ║   HONEYPOT TARPIT ...... probe paths return 410 + attitude       ║\n  ║   SECURITY HEADERS ..... nosniff, frame deny, referrer, perms    ║\n  ║   BASIC AUTH ........... deck protected, htpasswd hashed         ║\n  ║   ROBOTS.TXT ........... politely telling crawlers to leave      ║\n  ║   SECURITY.TXT ......... \"there is no bug bounty. go away.\"     ║\n  ║   SERVER TOKENS OFF .... nginx version hidden                    ║\n  ║   UPLOAD LIMITS ........ 1KB on write endpoints                  ║\n  ║   NO ANALYTICS ......... zero cookies, zero tracking pixels      ║\n  ║   NO USER DATA ......... we don't know who you are. good.       ║\n  ║                                                                   ║\n  ║   bots that probe .env or wp-admin get this:                     ║\n  ║                                                                   ║\n  ║   \"Gone. There is nothing here. There was never anything here.   ║\n  ║    This is a Raspberry Pi running static HTML.                   ║\n  ║    You are wasting your time and mine.                           ║\n  ║    Please reconsider your life choices.\"                         ║\n  ║                                                                   ║\n  ╚═══════════════════════════════════════════════════════════════════╝\n```\n\n---\n\n## THE ARCHITECTURE\n\n```\n                    THE INTERNET\n                         │\n                    ┌────┴────┐\n                    │CLOUDFLARE│\n                    │ TUNNEL   │\n                    └────┬────┘\n                         │ (encrypted, IP hidden)\n                         │\n              ┌──────────┴──────────┐\n              │   RASPBERRY PI 5    │\n              │   4GB RAM / arm64   │\n              │   Debian Bookworm   │\n              ├─────────────────────┤\n              │                     │\n              │  ┌───────────────┐  │\n              │  │  NGINX        │  │\n              │  │  642 lines    │  │\n              │  │  5 vhosts     │  │\n              │  │  rate limited │  │\n              │  │  bot blocked  │  │\n              │  └───────┬───────┘  │\n              │          │          │\n              │  ┌───────┴───────┐  │\n              │  │   DOCKER x11  │  │\n              │  │               │  │\n              │  │  jellyfin     │  │\n              │  │  navidrome    │  │\n              │  │  azuracast    │  │\n              │  │  kavita       │  │\n              │  │  calibre-web  │  │\n              │  │  filebrowser  │  │\n              │  │  tunarr       │  │\n              │  │  memos        │  │\n              │  │  shortener    │  │\n              │  │  soulseek     │  │\n              │  │  nginx        │  │\n              │  └───────────────┘  │\n              │                     │\n              │  ┌───────────────┐  │\n              │  │ CUSTOM PYTHON │  │\n              │  │               │  │\n              │  │  shoutbox     │  │\n              │  │  msg drop     │  │\n              │  │  pixel wall   │  │\n              │  │  kpab hearts  │  │\n              │  │  dropzone     │  │\n              │  │  rom browser  │  │\n              │  │  status API   │  │\n              │  └───────────────┘  │\n              │                     │\n              └──────────┬──────────┘\n                         │ USB 3.0\n                    ┌────┴────┐\n                    │ PASSPORT │\n                    │ 5.5TB    │\n                    │ HDD      │\n                    └─────────┘\n                   the whole library\n```\n\n---\n\n## SOVEREIGNTY\n\nThis is a fully sovereign stack. No cloud provider has a kill switch.\nNo corporation can raise prices, change terms, or shut it down.\n\n- **The hard drive** is the collection. Pick it up. Walk away. It's yours.\n- **The Pi** is the infrastructure. $80. Replaceable in an afternoon.\n- **The repo** is the blueprint. `git clone` and you're back online.\n- **The tunnel** is the only external dependency, and it's swappable.\n\nEverything that matters is physical, local, and owned. The entire server\ncan be rebuilt from a fresh Pi, this repo, and the hard drive. That's it.\nNo API keys required. No vendor lock-in. No \"we're sunsetting this feature.\"\n\nIf Cloudflare disappears tomorrow, swap in a different tunnel or just\nuse it on LAN. If the Pi dies, buy another one. If the SD card corrupts,\nflash a new one and run the deploy script. The collection survives\nbecause it lives on a drive you can hold in your hand.\n\n**This is what digital sovereignty actually looks like.** Not a manifesto.\nNot a tweet. A working server under a desk proving the point every second\nit stays online.\n\n---\n\n## QUICK START\n\n```bash\n# clone it\ngit clone https://github.com/pibulus/quickcat-os.git\ncd quickcat-os\n\n# plug in your hard drive, mount it at /media/pibulus/passport\n\n# install docker\ncurl -fsSL https://get.docker.com | sh\n\n# fire it up\ndocker compose -f config/stacks/pirate.yml up -d\n\n# set up the tunnel\n# (you'll need a Cloudflare account and a domain)\ncp config/cloudflared/config.yml /etc/cloudflared/config.yml\nsystemctl enable --now cloudflared\n\n# that's it. you have your own internet now.\n```\n\n---\n\n## THE REPO\n\n```\n  quickcat-os/\n  ├── config/\n  │   ├── nginx/hardening.conf ........ 642 lines of routing \u0026 security\n  │   ├── stacks/pirate.yml ........... main docker compose\n  │   ├── cloudflared/ ................ tunnel config\n  │   └── systemd/ .................... service files\n  ├── scripts/ ........................ 39 shell \u0026 python scripts\n  │   ├── status.sh ................... live system stats API\n  │   ├── deploy.sh ................... stack deployment wizard\n  │   ├── nightly-backup.sh ........... automated config backup\n  │   ├── dropzone.py ................. file upload server\n  │   ├── wall_server.py .............. pixel graffiti backend\n  │   ├── kpab_shoutbox.py ............ transmission wall\n  │   ├── kpab_hearts.py .............. heart voting system\n  │   ├── msgdrop.py .................. message inbox\n  │   └── ... 30 more\n  ├── www/html/ ....................... 20 HTML pages\n  │   ├── index.html .................. quickcat.club portal\n  │   ├── deck/index.html ............. cyberdeck control panel\n  │   ├── kpab/index.html ............. pirate radio frontend\n  │   ├── arcade/ ..................... retro game emulators\n  │   ├── wall/ ....................... pixel graffiti\n  │   ├── fiction/ .................... interactive fiction\n  │   ├── palestine/ .................. solidarity resources\n  │   ├── conspiracy/ ................. occult vault\n  │   └── drop/ ...................... file upload UI\n  ├── LETTER.md ....................... a letter to ourselves\n  ├── FIELD_MANUAL.md ................. operational reference\n  ├── GLOSSARY.md ..................... system map\n  └── README.md ....................... you are here\n```\n\n---\n\n## THE PHILOSOPHY\n\n```\n  ┌────────────────────────────────────────────────────────────────┐\n  │                                                                │\n  │   SOFTWARE IS POLITICS.                                        │\n  │                                                                │\n  │   Every platform you use is a statement about who owns         │\n  │   your attention. This server says: nobody does.               │\n  │                                                                │\n  │   The data lives on a drive you can hold.                      │\n  │   The services run on a computer you own.                      │\n  │   The radio plays what you choose.                             │\n  │   The books are yours to keep.                                 │\n  │                                                                │\n  │   Spotify's algorithms are a con. Radio compartmentalises      │\n  │   people into taste categories. Every dollar or minute taken   │\n  │   away from platforms that exploit musicians is worth it.      │\n  │   We're bigger than genre. It's time to build our own          │\n  │   platforms and think local digitally.                         │\n  │                                                                │\n  │   No scale. No subscriptions. No data harvesting.              │\n  │   \"Can't scale\" IS the feature.                                │\n  │                                                                │\n  │   4GB of RAM means every container earns its place.            │\n  │   A single hard drive means the collection is curated.         │\n  │   Limitations force taste.                                     │\n  │                                                                │\n  │   The server doesn't know who you are. It doesn't want to.    │\n  │   There's no analytics, no cookies, no tracking pixels,        │\n  │   no third-party scripts. The constraint isn't a compromise.   │\n  │   It's the whole point.                                        │\n  │                                                                │\n  │   Build yours. A Pi, a drive, and a weekend.                   │\n  │                                                                │\n  └────────────────────────────────────────────────────────────────┘\n```\n\n---\n\n```\n  ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\n\n                         MELBOURNE  //  2026\n                    ~(=^..^) QUICK CAT CLUB\n\n        175 commits  //  0 dependencies on big tech  //  $0/month\n             4GB of RAM  //  5.5TB of everything good\n\n  ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\n\n  ── GR33TZ ──────────────────────────────────────────────────────────────\n\n  shouts to the demoscene kids who made art on machines that couldn't\n  handle it. to the BBS sysops who ran servers in their bedrooms. to the\n  zine makers and pirate radio operators and everyone who ever built\n  something weird and beautiful on hardware they actually owned.\n\n  to everyone who ever said \"you can't run that on a Pi\" — watch us.\n\n  RESPECT: Raspberry Pi Foundation // Docker // Cloudflare // Deno\n  RESPECT: AzuraCast // Jellyfin // Navidrome // Kavita // Calibre\n  RESPECT: the entire FOSS ecosystem that makes this possible\n  RESPECT: Claude Code for being the best late-night co-pilot\n\n  ANTI-RESPECT: surveillance capitalism, algorithmic feeds, subscription\n  fatigue, planned obsolescence, and the five websites full of screenshots\n  of the other four.\n\n  this readme was written at 11pm on a Monday night in Melbourne\n  while pirate radio played in the background.\n\n  if you made it this far, you're one of us.\n\n  ── EOF ─────────────────────────────────────────────────────────────────\n\n  License: Do whatever you want with this. It's a zine, not a product.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpibulus%2Fpibulus-os","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpibulus%2Fpibulus-os","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpibulus%2Fpibulus-os/lists"}