A real frontend for the famous awesome-selfhosted list that lets you browse by what you want to do ("replace Google Photos") instead of tech jargon ("Photo Galleries") — plus a "Can I run this?" resource calculator and an auto docker-compose generator the list can't give you.
Start from a goal — replace Google Photos, run your own Netflix, block ads network-wide — and CanIHost shows the self-hosted apps that do it, tells you whether your box can run them, and ships the docker-compose.yml. Browse 1,300+ apps, check maintenance signals at a glance, estimate combined RAM/CPU, and see ARM-vs-x86 compatibility — all free, open-source, and 100% client-side.
🌐 Live: canihost.vercel.app · ☕ Support on Ko-fi
🔧 How it works: see HOW_IT_WORKS.md for the architecture, data pipeline, and internals.
awesome-selfhosted is one of the best community resources on the internet — but it's a README sorted into A→Z categories. You can't search it well, you can't tell which apps are still maintained, and it certainly won't tell you whether your Raspberry Pi can actually run the five things you just got excited about.
Worse, every directory (including selfh.st and awesome-selfhosted.net) organizes by what the software is — but nobody wakes up wanting "a Feed Reader." They want to replace Google Reader. CanIHost fixes all of that with four things:
- Goal-first browsing — 24 plain-language goals ("Replace Google Photos", "Run my own Netflix", "Block ads on my whole network") that map to the apps which actually do the job, with the proprietary service each one replaces.
- A real frontend — instant search and rich filters over the whole dataset.
- A resource calculator — "Can I run this?" gives an honest combined RAM/CPU estimate and an ARM/x86 read for any set of apps you pick.
- A compose generator — turn your selection into a starter
docker-compose.ymlyou can copy or download.
- 🎯 Goal-first discovery — pick from 24 goals framed as "Replace X" instead of hunting tech categories; each goal surfaces hand-picked top apps first, then everything else that fits.
- Instant client-side search over 1,300+ apps — name, description, category, language.
- Filters — category, language/platform, license, Docker support, "actively maintained only," and a "hide third-party-dependent apps" flag.
- Maintenance signals on every card — GitHub star count plus a recency badge (Active / Aging / Stale) derived from the last commit date, so you can avoid abandonware.
- 🧮 "Can I run this?" calculator — select apps and get an estimated combined RAM footprint (with host overhead + headroom), a CPU load read, an ARM-vs-x86 compatibility view, and a relatable hardware suggestion ("a Pi 5 / 8GB mini-PC can handle this").
- 🐳 docker-compose generator — generates a sensible starter
docker-compose.ymlwith per-app service blocks (image, ports, volumes, env placeholders), auto-resolves host-port conflicts, and clearly marks every guess withTODO. Copy or download. - Keyboard-accessible, responsive, animated, with skeletons and empty states. Light "blueprint / homelab" design.
Everything is static and build-time: no database, no server, no tracking.
- Data pipeline (
scripts/build-data.mjs) clones the structured awesome-selfhosted-data source (software/*.yml,tags/*.yml,licenses.yml) and bakes it into a singledata/apps.json. - Maintenance signals come straight from that dataset, which already carries
stargazers_count,updated_at, andcommit_historyscraped from GitHub — so the site needs zero runtime API calls. The recency badge is computed from the last-commit date. - Resource estimates are honest, category-based heuristics — derived from each app's primary category and language runtime, not vendor specs. They're labelled as estimates everywhere. The calculator adds a host-OS/Docker baseline and ~30% headroom.
- ARM compatibility is inferred from the app's runtime (compiled and interpreted runtimes are nearly all multi-arch today); anything uncertain is flagged, not faked.
- Compose scaffolding derives a plausible image (from a curated map of popular apps, falling back to a clearly-marked guess from the repo owner/name), a default port by category, and volume/database hints. Uncertain lines are commented or marked
TODO.
npm install
# (re)generate data — clone the source first:
git clone --depth 1 https://github.com/awesome-selfhosted/awesome-selfhosted-data /tmp/awesome-selfhosted-data
npm run data
npm run dev # → http://localhost:7681
npm run build # production buildNext.js 15 (App Router) · React 19 · TypeScript · Tailwind CSS v4 · framer-motion. Hosts free on Vercel.
All app data comes from awesome-selfhosted and its structured dataset — an incredible community resource maintained by hundreds of contributors. Go star it. CanIHost is an independent frontend; it doesn't replace the list, it makes it searchable and adds planning tools on top.
Resource numbers and ARM compatibility are honest estimates, not vendor specs — always verify against each project's own documentation.
-
⭐ Star CanIHost on GitHub — it genuinely helps.
-
🛠 Need something like this built? Appturnity ships polished web apps, internal tools, and custom software — let's talk.
MIT © 2026 Nathan Watkins · Built by Nate · n8builds.dev




