Pick self-hosted apps, get one working docker-compose file
Tick the apps, type your domain, and this page writes a docker-compose.yml with Caddy or Traefik in front for automatic HTTPS (plus the Caddyfile, or Traefik's labels inside the file), a .env with fresh passwords, and the settings each app needs behind a proxy. The files are built in this page and nothing is uploaded.
Your stack
Tick at least one app to see the files.
No Caddyfile with Traefik. Its settings are the command list of the traefik service, and each app's route is the traefik.* labels on its web service, all inside docker-compose.yml above. What Traefik mode writes and leaves out.
Then, on your server
- At your DNS provider, create these records, all pointing at the server's public IP address:In a DNS server your devices use (your router's local DNS, AdGuard Home's rewrites or each device's hosts file; not a public record), point these names at the address in
LAN_IP:Type Name Value - On your router or cloud firewall, send TCP 80, TCP 443 and UDP 443 to the server. CaddyTraefik uses port 80 to prove to Let's Encrypt that it owns each name.
- Fill in
LAN_IPin.env;docker compose uprefuses to start without it. Forward nothing on your router, except UDP 51820 to the server for wg-easy. Then trust Caddy's root certificate on each device, as the setup notes show.Put your DNS provider's API token in./traefik/dns.envfor the DNS challenge. - Put the files in one folder and start everything:
mkdir -p ~/selfhost/caddy && cd ~/selfhost # save docker-compose.yml and .env here, the Caddyfile in ./caddy/ # (if the browser saved .env as env or _env, rename it to .env) chmod 600 .env docker compose up -d docker compose logs -f caddy # watch the certificates arrive
mkdir -p ~/selfhost && cd ~/selfhost # save docker-compose.yml and .env here (no Caddyfile with Traefik) # (if the browser saved .env as env or _env, rename it to .env) # in .env, set TRAEFIK_ACME_EMAIL to an address you read chmod 600 .env docker compose up -d docker compose logs -f traefik # watch the certificates arrive
- Open each address straight away and follow its setup notes: several apps give admin rights to whoever opens them first.
Will it run on my machine? See whether the RAM and disk figures the apps publish fit a Raspberry Pi 4 or 5, a mini PC, an old laptop or a small VPS, and whether every image has a build for its CPU.
Check a compose file you already have. Paste your own docker-compose.yml and see what will break or is risky: a database open to the internet, :latest tags, secrets in plain text, port clashes, and for these 100 apps the data folders you forgot to mount. It runs in your browser; the file is never uploaded.
What the file does, and why a chat answer often gets it wrong
- One proxy, no port clashes. Only the proxy (Caddy, or Traefik if you pick it) publishes web ports (80, 443 and 443/udp for HTTP/3). The only other ports in any file are the two that are not web traffic: 53 TCP and UDP for AdGuard Home's DNS and 51820/udp for wg-easy's WireGuard, each labelled with a
# PORT OUTSIDE THE PROXYcomment. The web apps publish nothing, so Jellyfin, Vaultwarden and Audiobookshelf can all listen on their own port 80 inside their containers without fighting over the host, and so can Forgejo and Grafana on 3000 or Miniflux and Stirling-PDF on 8080. - Names that never collide. Nextcloud and Paperless-ngx both call their database
db; Immich and Nextcloud both call their cacheredis. Every service, container, volume, folder and variable is prefixed with the app's name, and each database keeps its documented name as an alias on its app's private network, so the documented settings still find it. - An exact trusted-proxy address. The proxy network's subnet is pinned and Caddy has the fixed address 172.30.0.2, so the value written into
TRUSTED_PROXIES(Nextcloud),IMMICH_TRUSTED_PROXIES,PAPERLESS_TRUSTED_PROXIES, FreshRSS'sTRUSTED_PROXY,PHOTOPRISM_TRUSTED_PROXY, Jellyfin's Known proxies, Kavita'sKnownProxiesand Home Assistant's Trusted proxies is right, not a guess. - Host networking where the docs demand it. Home Assistant runs with
network_mode: hostas its install page shows; the proxy (Caddy or Traefik) reaches it throughhost.docker.internaland the notes give both the current Settings path and the olderconfiguration.yamllines. - One login in front of everything. Tick Authelia and every other app in the file gets a login check first: a
forward_authblock in its Caddyfile site, or theauthelia@dockerForwardAuth middleware on its Traefik router, both exactly as Authelia's own proxy guides write them. Authelia'sconfiguration.ymland users file come with the rest, their secrets generated in your browser. What it adds. - Elevated access is labelled. Where an app's own docs ask for more than a plain container (Portainer's Docker socket, wg-easy's
NET_ADMINandSYS_MODULE, Frigate'sprivilegedand shared memory) the file keeps it and says what it gives away in an# ELEVATED ACCESScomment. - No shared default passwords. Every database password and app key is generated in your browser with
crypto.getRandomValues: 32 letters and digits for database passwords, 64 for the Paperless secret key. - Sourced line by line. Each app block starts with a
# Source:comment for every official page it came from and the date it was checked, followed by a# Changed:list of every difference from the documented file beyond the name prefix.
What it does not do
- Backups are a plan, not a service. BACKUP.md names every folder and volume the file mounts and gives each project's documented dump command for this file's service names, but nothing runs on a schedule: put the commands in cron or your backup tool yourself. The commands were read from each project's docs, not run against a live install, and where a project publishes no backup procedure (Actual Budget's server folder, Kavita, Syncthing, n8n, Ghost's Docker install, ntfy, changedetection.io) the plan says so and falls back to Docker's generic volume copy.
- Home-only and VPN set-ups, but not the DNS for them. “Who can reach it” binds every published port to the server's LAN address (
LAN_IP) or its Tailscale address (VPN_IP) instead of all interfaces, and Caddy then signs each name with its own local certificate authority, whose root you trust once per device (the notes give the steps for Windows, macOS, Linux, iPhone and Android; many Android apps still ignore a root you install yourself). Not covered: the DNS that makes a name likephotos.home.arpapoint at the server (no split-horizon DNS server is configured for you: use your router, AdGuard Home's rewrites or hosts files), installing Tailscale itself, a firewall for Home Assistant (withnetwork_mode: hostit listens on port 8123 on every interface whichever mode you pick), and publicly trusted certificates in Caddy, which would need a Caddy build with a DNS-provider module. - Checked for structure, not by running Docker. Automated tests build every app alone, all one hundred together and several pairs, and check that the YAML parses, only the proxy publishes web ports and the only other published ports are 53/tcp and 53/udp (DNS), 51820/udp (WireGuard), 1883/tcp (MQTT), 52000/udp and 52000/tcp (Neko's WebRTC), 1935/tcp (Owncast's RTMP) and 3334/tcp and 3334/udp (bitmagnet's BitTorrent), no host port is published twice (when Pi-hole and AdGuard Home are both picked, the one picked first keeps port 53 and the file says so), no names clash, every web app is on the proxy network, every Caddy site or Traefik router points at a real service and its documented port, and every variable is defined. Caddy mode is also checked to stay byte for byte what it was before Traefik mode existed. Nobody starts the containers in those tests.
- Image tags follow the docs. Most apps are documented with
latest,stableor a major tag, so a laterdocker compose pullcan bring a new major version. Read each app's release notes before updating. - Two extra host ports, no more. AdGuard Home publishes 53 (TCP and UDP) for DNS and wg-easy 51820/udp for WireGuard, because neither is web traffic. Everything else that needs a port of its own is left out: Forgejo clones over HTTPS only (no SSH), Syncthing syncs through its outgoing connections and public relays (its port 22000 is not opened), and Frigate's RTSP and WebRTC ports are not published (its page says how to add them).
- Single sign-on is a login wall, not OIDC. Authelia puts a password check in front of each app through the proxy, with users in a file and no e-mail server. It does not log you in to the apps themselves, and phone or desktop clients that talk to their server without a browser cannot pass it.
- Hardware transcoding, GPU machine learning and SMTP mail are left out; each app's docs cover them.
Traefik mode: the labels written for you
Already run Traefik, or prefer labels to a Caddyfile? Choose Traefik next to the domain field. The apps, addresses, passwords and trusted-proxy address stay the same; only the proxy changes.
- One
traefikservice ontraefik:v3.7(3.7 is the release Traefik currently supports), configured only with command flags: the Docker provider withexposedByDefault=false, so only containers labelledtraefik.enable=trueare routed; entrypointwebon :80 redirecting towebsecureon :443 with HTTP/3; a Let's Encrypt resolver on the HTTP-01 challenge (the DNS challenge when you pick a home-only or VPN set-up), stored in/letsencrypt/acme.jsonin thetraefik-letsencryptvolume, with the e-mail from.env. Traefik publishes 80, 443 and 443/udp; the only other ports in the file are AdGuard Home's 53 and wg-easy's 51820/udp when you pick them. - Labels on each app's web container: a router named after the app with
Host(`cloud.example.org`), thewebsecureentrypoint and the certresolver, and a service whoseloadbalancer.server.portis the app's documented internal port (80 for Nextcloud, 2283 for Immich, 8096 for Jellyfin, 3000 for Forgejo and Grafana). Every router, service and middleware name starts with the app's slug, so one hundred apps' labels cannot collide. - The same fixed address. Traefik gets 172.30.0.2, exactly where Caddy sits, so every trusted-proxy value in the file stays right. The proxy network gets the fixed name
dankhost-proxy, because--providers.docker.networkneeds the real name and Compose would otherwise prefix it with the folder name. - The per-app proxy settings, translated. Nextcloud's two
.well-knownCalDAV/CardDAV redirects become oneredirectregexmiddleware; Actual's and PhotoPrism's compression becomes acompressmiddleware; PhotoPrism'sflush_interval -1becomesresponseForwarding.flushInterval=-1ms(a negative value flushes after every write); Syncthing's Host rewrite becomespassHostHeader=false. Vaultwarden'sX-Real-IPneeds no label: Traefik addsX-Real-Ipto every proxied request by default. Home Assistant keepsnetwork_mode: host; for a host-networked container Traefik's Docker provider looks uphost.docker.internal, which theextra_hostsentry provides. - No 60-second upload cut-off. Traefik v3 stops reading a request after 60 seconds by default (
readTimeout), which would break long photo, video and file uploads to Immich, Nextcloud or PhotoPrism. The file sets it to 0, no limit, onwebsecure.
What Traefik mode does not do
- No dashboard. Traefik's API and dashboard are not turned on and port 8080 is not published. If you want the dashboard, add it yourself behind authentication.
- The Docker socket is mounted directly. Traefik reads the labels through
/var/run/docker.sock, mounted read-only. Traefik's own documentation warns: “Accessing the Docker API without any restriction is a security concern: If Traefik is attacked, then the attacker might get access to the underlying host.” The:roflag does not make the Docker API read-only. The same page lists ways to restrict it, such as a socket proxy or TLS or SSH access to the daemon; this file uses none of them. - HTTP-01 in public mode, the DNS challenge in private modes. With “Public domain” every name needs a public DNS record and port 80 reachable from the internet. With “Home network only” or “Over a VPN” nothing is reachable from outside, so Traefik uses Let's Encrypt's DNS challenge instead: that needs a real domain at a DNS provider Traefik supports and an API token for it (the file is set up for Cloudflare's
CF_DNS_API_TOKEN; other providers need their own variables), and the builder refuses a local name such ashome.arpa. The certificate names show up in public Certificate Transparency logs. No wildcard certificate in either mode. - It does not join an existing Traefik. It starts its own Traefik on ports 80 and 443. If one already runs, copy the
labels:blocks onto your services and change the network and resolver names to yours. - No TCP or UDP routes. As in Caddy mode, nothing but HTTPS goes through the proxy: no Forgejo SSH, no Syncthing port 22000.
Every Traefik setting above comes from Traefik's official documentation, fetched on the date shown:
- Traefik docs: Setup on Docker (traefik:v3.7 image, static configuration as command flags, HTTP to HTTPS redirection, a named proxy network) checked 2026-09-24
- Traefik docs: Releases (3.7, released 2026-05-05, is the release in active support) checked 2026-09-24
- Traefik docs: Docker provider (exposedByDefault, network, Host networking, Docker API Access security note) checked 2026-09-24
- Traefik docs: EntryPoints (http.redirections, http3, transport.respondingTimeouts.readTimeout default 60s) checked 2026-09-24
- Traefik docs: ACME certificate resolver (email required, storage, httpChallenge on the web entrypoint, 'Redirection is fully compatible with the HTTP-01 challenge') checked 2026-09-24
- Traefik docs: Exposing services on Docker, advanced (Let's Encrypt storage at /letsencrypt/acme.json in a mounted volume) checked 2026-09-24
- Traefik docs: Docker routing labels (traefik.enable, routers, services, middlewares, traefik.docker.network) checked 2026-09-24
- Traefik docs: FAQ, the forwarded headers (X-Forwarded-For, X-Real-Ip, X-Forwarded-Proto ...) Traefik adds by default checked 2026-09-24
- Traefik docs: Exposing services, WebSocket supported out of the box checked 2026-09-24
- Traefik docs: RedirectRegex middleware (regex, replacement, permanent; dollar signs doubled in labels) checked 2026-09-24
- Traefik docs: Docker provider, Host networking (host.docker.internal lookup) checked 2026-09-24
- Traefik docs: Compress middleware (encodings zstd, br, gzip) checked 2026-09-24
- Traefik docs: HTTP service load balancer (passHostHeader is true by default) checked 2026-09-24
- Traefik docs: static configuration options (serverstransport.insecureskipverify, used only when Frigate is picked, to accept its self-signed certificate on 8971) checked 2026-09-26
- Traefik docs: Headers middleware (customRequestHeaders) checked 2026-09-29
The one hundred apps and where each definition comes from
Every page below was fetched on the date shown and the compose definition was copied from it, not written from memory. Each app also has its own page with the RAM, CPU and disk figures its project publishes and the compose file for that app alone.
-
Nextcloud
File sync and sharing with calendar, contacts and office add-ons; replaces Google Drive or Dropbox.
-
Immich
Photo and video library with phone backup, face search and maps; replaces Google Photos or iCloud Photos.
- Immich docs: Docker Compose install checked 2026-09-23
- Immich release docker-compose.yml checked 2026-09-23
- Immich release example.env checked 2026-09-23
- Immich docs: environment variables (DB_HOSTNAME, REDIS_HOSTNAME, IMMICH_TRUSTED_PROXIES) checked 2026-09-23
- Immich docs: reverse proxy (Caddy example) checked 2026-09-23
-
Jellyfin
Media server that streams your films, series and music to any screen; replaces Plex or Emby without an account.
- Jellyfin docs: Container install (Docker Compose) checked 2026-09-23
- Jellyfin docs: Reverse proxy (Known Proxies) checked 2026-09-23
- Jellyfin docs: Caddy checked 2026-09-23
-
Vaultwarden
Lightweight Bitwarden-compatible password manager server that works with the official Bitwarden apps; replaces 1Password or LastPass.
- Vaultwarden wiki: Using Docker Compose (minimal template and Caddy example) checked 2026-09-23
-
Home Assistant
Smart-home hub that runs your lights, sensors and automations locally; replaces Google Home, Alexa or SmartThings routines.
- Home Assistant: Linux install, Docker Compose (Container) checked 2026-09-23
- Home Assistant: HTTP integration (reverse proxies, Trusted proxies, migrating from YAML) checked 2026-09-23
-
Paperless-ngx
Scans, OCRs, tags and indexes your paper documents so you can search them; replaces a filing cabinet and Evernote-style scan folders.
- Paperless-ngx: docker-compose.postgres.yml checked 2026-09-23
- Paperless-ngx: docker-compose.env checked 2026-09-23
- Paperless-ngx docs: Configuration (PAPERLESS_URL, PAPERLESS_DBPASS, PAPERLESS_TRUSTED_PROXIES, PAPERLESS_ADMIN_USER) checked 2026-09-23
-
Uptime Kuma
Checks your websites, ports and services every minute and alerts you when one goes down; replaces UptimeRobot or Pingdom.
- Uptime Kuma: compose.yaml checked 2026-09-23
- Uptime Kuma wiki: Reverse Proxy checked 2026-09-23
-
Audiobookshelf
Audiobook and podcast server with progress sync across its phone apps; replaces Audible's library app or a podcast service.
- Audiobookshelf: docker-compose.yml checked 2026-09-23
- Audiobookshelf README: Reverse Proxy Set Up (WebSocket required) checked 2026-09-23
- Audiobookshelf docs: Install, Docker Compose (volume mappings, TZ) checked 2026-10-01
-
FreshRSS
RSS and Atom feed reader that refreshes on your server and syncs to mobile readers; replaces Feedly or Inoreader.
- FreshRSS: Docker/freshrss/docker-compose.yml checked 2026-09-23
- FreshRSS: Deploy FreshRSS with Docker (TRUSTED_PROXY, CRON_MIN) checked 2026-09-23
-
Forgejo
Git hosting with issues, pull requests, wikis, a package registry and CI (Forgejo Actions); replaces GitHub or GitLab for your own repositories.
- Forgejo docs: Installation with Docker (docker-compose example, FORGEJO__section__KEY variables) checked 2026-09-23
- Forgejo docs: Reverse proxy (Caddy HTTPS example) checked 2026-09-23
- Forgejo docs: Configuration Cheat Sheet (ROOT_URL, DISABLE_SSH) checked 2026-09-23
-
Mealie
Recipe manager that imports a recipe from its web address, plans meals and builds shopping lists; replaces recipe apps and a folder of bookmarked recipes.
- Mealie docs: Installation, SQLite (Recommended) docker-compose.yaml checked 2026-09-23
- Mealie docs: Installation Checklist (default credentials, architectures) checked 2026-09-23
-
Actual Budget
Envelope-budgeting app that syncs one budget between your devices and keeps the data on your server; replaces YNAB or a budgeting spreadsheet.
- Actual docs: Using a Reverse Proxy (Caddy docker-compose.yml and Caddyfile) checked 2026-09-23
- Actual: packages/sync-server/docker-compose.yml checked 2026-09-23
- Actual docs: Enabling SharedArrayBuffer Access (HTTPS required) checked 2026-09-23
-
Stirling-PDF
PDF toolbox in the browser: merge, split, compress, convert, OCR, sign and redact; replaces uploading private documents to online PDF sites.
- Stirling-PDF docs: Docker Installation (docker-compose.yml, default login) checked 2026-09-23
- Stirling-PDF docs: Production Deployment Guide (Reverse proxy integration) checked 2026-09-23
- Stirling-PDF docs: FAQ (alternative registries, memory use) checked 2026-09-23
-
linkding
Bookmark manager with tags, notes, read-later, archiving and browser extensions; replaces Raindrop.io or bookmarks locked inside one browser.
- linkding: docker-compose.yml checked 2026-09-23
- linkding: .env.sample (LD_SUPERUSER_NAME, LD_SUPERUSER_PASSWORD, LD_CSRF_TRUSTED_ORIGINS) checked 2026-09-23
- linkding docs: Options (LD_SUPERUSER_PASSWORD, LD_CSRF_TRUSTED_ORIGINS) checked 2026-09-23
- linkding docs: Installation (Docker Compose, Reverse Proxy Setup) checked 2026-09-23
-
Miniflux
Minimalist feed reader that removes tracking pixels and can fetch full articles; replaces Feedly or Inoreader with one small Go server and Postgres.
- Miniflux docs: Installation with Docker (Docker Compose example, architectures) checked 2026-09-23
- Miniflux docs: Configuration Parameters (BASE_URL, DATABASE_URL) checked 2026-09-23
-
Grafana
Dashboards and alerts for metrics, logs and traces from Prometheus, InfluxDB, Loki, Postgres and more; replaces hosted dashboards such as Datadog's.
-
PhotoPrism
Photo library that indexes, tags, maps and recognises faces in your pictures without changing the originals; replaces Google Photos or Apple Photos browsing.
- PhotoPrism docs: Setup Using Docker Compose checked 2026-09-23
- PhotoPrism: compose.yaml (the file the setup guide downloads) checked 2026-09-23
- PhotoPrism docs: Using Caddy 2 as Reverse Proxy (DISABLE_TLS, TRUSTED_PROXY, Caddyfile) checked 2026-09-23
-
Kavita
Reading server for comics, manga and ebooks with a web reader, OPDS and reading progress; replaces Kindle or comic-shop libraries for files you own.
- Kavita wiki: DockerHub Image (Docker Compose) checked 2026-09-23
- Kavita wiki: Remote Access (reverse proxy, KnownProxies) checked 2026-09-23
-
Syncthing
Continuous peer-to-peer file sync between your devices, with this server as an always-on peer; replaces Dropbox-style sync without a copy on someone's cloud.
- Syncthing: README-Docker.md (Docker compose, Discovery, GUI Security) checked 2026-09-23
- Syncthing docs: Reverse Proxy Setup (Caddy v2) checked 2026-09-23
- Syncthing docs: Relaying checked 2026-09-23
- Syncthing docs: Firewall Setup (port 22000 TCP and UDP) checked 2026-09-23
-
n8n
Workflow automation with a visual editor, 400+ integrations, webhooks and AI nodes; replaces Zapier or Make with workflows that run on your own server.
- n8n docs: Use Docker Compose (compose.yaml, .env, volumes table) checked 2026-09-25
- n8n docs: Deployment environment variables (N8N_PROXY_HOPS, N8N_ENCRYPTION_KEY) checked 2026-09-25
-
Open WebUI
A chat interface for language models that run on your own machine through Ollama, with users, chat history and document upload; replaces ChatGPT for private chats.
- Open WebUI repository: docker-compose.yaml (open-webui with an ollama service) checked 2026-09-25
- Open WebUI docs: Quick Start (Docker Compose, WEBUI_SECRET_KEY, data volume) checked 2026-09-25
-
Ghost
Publishing platform for a blog or newsletter with members and paid subscriptions built in; replaces Substack or a hosted WordPress blog on your own domain.
- Ghost docs: How To Install Ghost With Docker (the Ghost and MySQL services, .env settings) checked 2026-09-25
- TryGhost/ghost-docker: compose.yml (ghost and db services) checked 2026-09-25
- TryGhost/ghost-docker: Caddyfile.example ('reverse_proxy ghost:2368', 'encode gzip') checked 2026-09-25
-
BookStack
Wiki organised as shelves, books, chapters and pages, with a WYSIWYG editor, search and permissions; replaces Confluence or a shared-drive of Word documents.
-
Wiki.js
Wiki with a Markdown, visual or raw-HTML editor, page history, search and fine-grained access rules; replaces Confluence, Notion wikis or a hosted MediaWiki.
- Wiki.js docs: Docker (Using Docker Compose, ARM images) checked 2026-09-25
-
Memos
Quick notes in a Markdown timeline with tags, links and attachments, private or shared; replaces Google Keep, Apple Notes or a notes-to-self chat.
- Memos docs: Docker Compose (basic setup, production notes) checked 2026-09-25
- Memos docs: Docker (port 5230, /var/opt/memos, platform support, container user) checked 2026-09-25
-
ntfy
Push notifications to your phone or desktop from any script with one curl command, with Android, iOS and web apps; replaces Pushover or Pushbullet.
-
Vikunja
To-do lists and projects as list, Kanban, Gantt or table views, with sharing, reminders and CalDAV; replaces Todoist, Trello or Microsoft To Do.
-
Gotify
Small server that receives messages over a REST API and pushes them to its Android app and web UI over WebSocket; replaces Pushover for alerts from your own scripts.
-
changedetection.io
Watches web pages for changes, price drops or restocks and alerts you by e-mail, Discord, ntfy, Gotify and more; replaces Visualping or Distill.io.
- changedetection.io repository: docker-compose.yml (BASE_URL, USE_X_SETTINGS) checked 2026-09-25
- changedetection.io wiki: Running changedetection.io behind a reverse proxy checked 2026-09-25
-
Authelia
One login page, with optional two-factor, in front of every other app in the file through the proxy's forward auth; replaces a separate password prompt per app with single sign-on.
- Authelia docs: Docker deployment (image docker.io/authelia/authelia:latest, /config volume, standalone compose examples) checked 2026-09-26
- Authelia docs: Caddy integration (forward_auth authelia:9091, uri /api/authz/forward-auth, copy_headers) checked 2026-09-26
- Authelia docs: Traefik integration (ForwardAuth middleware labels, authelia@docker) checked 2026-09-26
- Authelia docs: Secrets (secrets in the configuration file, permissions 0600) checked 2026-09-26
- Authelia docs: Passwords (users file format, authelia crypto hash generate argon2) checked 2026-09-26
- Authelia docs: Access Control (default_policy, rules per domain) checked 2026-09-26
- Authelia docs: Notifications, File System (notifier.filesystem.filename) checked 2026-09-26
- Authelia docs: Session (cookies: domain, authelia_url) checked 2026-09-26
- Authelia docs: Storage, SQLite (storage.local.path) checked 2026-09-26
-
AdGuard Home
Network-wide ad and tracker blocking: a DNS server for every device in the house, with a web UI for filter lists and query logs; replaces per-device ad blockers.
-
wg-easy
WireGuard VPN with a web UI to add devices and show their QR codes, so your phone and laptop reach home from anywhere; replaces a paid VPN app or forwarding a port per app.
- wg-easy: docker-compose.yml (the file the basic installation downloads) checked 2026-09-26
- wg-easy docs: Basic Installation (download the compose file, open UDP 51820) checked 2026-09-26
- wg-easy docs: Caddy (drop the web UI port, keep 51820/udp, join the proxy network) checked 2026-09-26
- wg-easy docs: Getting Started (tag 15, use docker compose up/down, not start/stop) checked 2026-09-26
- wg-easy docs: Traefik (labels with loadbalancer.server.port=51821, the traefik network) checked 2026-09-26
-
Frigate
Network video recorder for IP cameras that detects people, cars and animals locally with AI and ties into Home Assistant; replaces cloud camera subscriptions.
- Frigate docs: Installation (storage, ports, shm size, Docker Compose generator and example) checked 2026-09-26
- Frigate docs: Getting started (./config and ./storage, admin password in the logs) checked 2026-09-26
- Frigate docs: TLS (self-signed certificate on 8971 by default; allow it in the proxy or turn TLS off) checked 2026-09-26
- Frigate docs: Setting up a reverse proxy (port 8971, WebSockets) checked 2026-09-26
- Caddy docs: reverse_proxy, transport http (tls_insecure_skip_verify) checked 2026-09-26
-
Firefly III
Personal finance manager: accounts, budgets, categories, rules, recurring transactions and reports, on your own server; replaces Mint, YNAB or a spreadsheet.
- Firefly III docs: How to install Firefly III using Docker (source of docs.firefly-iii.org) checked 2026-09-26
- Firefly III: docker-compose.yml (app, db, cron) checked 2026-09-26
- Firefly III: .env.example (APP_KEY, TRUSTED_PROXIES, APP_URL, STATIC_CRON_TOKEN) checked 2026-09-26
- Firefly III: database.env (the .db.env file) checked 2026-09-26
-
Tandoor Recipes
Recipe manager with meal plans and shopping lists that imports recipes from websites and shares them with your household; replaces Paprika or a folder of bookmarked recipes.
- Tandoor docs: Docker (plain docker-compose.yml, .env.template, port 80) checked 2026-09-26
- Tandoor docs: Configuration (SECRET_KEY, ALLOWED_HOSTS, database) checked 2026-09-26
-
Grocy
Groceries and household management: stock with best-before dates, shopping lists, recipes, chores and batteries, with barcode scanning; replaces the note on the fridge.
-
Homepage
A start page for everything you host, with live status widgets for over 100 services, set up in YAML files; replaces a bookmark folder of server addresses.
-
Kopia
Encrypted, deduplicated backups of your server's folders as snapshots to a local disk, S3, B2, SFTP or WebDAV, run from a web UI; replaces ad-hoc tar scripts and a paid backup service.
-
Portainer CE
A web UI for the Docker on this server: containers, images, volumes, networks and compose stacks, with logs and a console; replaces typing docker commands over SSH.
- Portainer docs: Install Portainer CE with Docker on Linux (compose file, ports 9443, 8000, 9000) checked 2026-09-26
- Portainer docs: How do I find, skip, or customize my setup token? checked 2026-09-26
- Portainer docs: Using Portainer with reverse proxies (X-Forwarded-Proto, Host, Secure cookies) checked 2026-09-26
-
Pi-hole
Network-wide ad and tracker blocking: a DNS server for every device in the house, with a dashboard of every query and what it blocked; replaces per-device ad blockers.
- Pi-hole docs: Docker (docker compose example, docker run, tags) checked 2026-09-29
- docker-pi-hole README on GitHub (Quick Start compose file) checked 2026-09-29
- Pi-hole docs: Docker tips and tricks (Disable systemd-resolved port 53, Note on Watchtower) checked 2026-09-29
- Pi-hole docs: Docker configuration (FTLCONF_ variables, the web interface password, capabilities) checked 2026-09-29
-
Plex Media Server
Media server that streams your own films, series, music and photos to the Plex apps on TVs, phones and consoles; replaces copying files to each device or a NAS's own media app.
- plexinc/pms-docker README on GitHub (bridge networking, PLEX_CLAIM, ADVERTISE_IP, volumes) checked 2026-09-29
- plexinc/pms-docker: docker-compose-bridge.yml.template checked 2026-09-29
- Plex support: Network settings (Custom server access URLs for a reverse proxy) checked 2026-09-29
-
Node-RED
Flow-based automation in a browser editor: wire devices, MQTT topics, APIs and online services together with drag-and-drop nodes; replaces IFTTT or Zapier-style cloud automations.
-
Mosquitto
MQTT message broker that sensors, ESP boards, Zigbee2MQTT and Home Assistant publish to and subscribe from on your own network; replaces a vendor cloud relaying your devices' messages.
- Docker Hub: eclipse-mosquitto official image (directories, docker run, image tags) checked 2026-09-29
- Mosquitto docs: mosquitto.conf man page (listener, protocol websockets, allow_anonymous, password_file, persistence) checked 2026-09-29
- Mosquitto docs: Authentication methods (mosquitto_passwd, password_file) checked 2026-09-29
- Mosquitto repository: docker/2.1-alpine/Dockerfile (the mosquitto user is uid 1883; volumes /mosquitto/data and /mosquitto/log) checked 2026-09-29
-
Zigbee2MQTT
Bridge from a USB Zigbee adapter to MQTT, so Zigbee lights, plugs and sensors of many brands work together without each maker's hub; replaces the Hue, IKEA or Aqara bridges.
- Zigbee2MQTT docs: Docker (docker run, Docker Compose example, tags) checked 2026-09-29
- Zigbee2MQTT docs: Getting started (onboarding on first run) checked 2026-09-29
- Zigbee2MQTT docs: Frontend (auth_token, Nginx proxy configuration) checked 2026-09-29
- Zigbee2MQTT docs: Configuration (the data directory, ZIGBEE2MQTT_CONFIG_ environment variables) checked 2026-09-29
-
Umami
Privacy-focused website analytics: page views, referrers, countries, devices and events from a small script, without cookies; replaces Google Analytics on your own sites.
- Umami repository: docker-compose.yml (Umami with a PostgreSQL database) checked 2026-09-29
- Umami docs: Login (default account admin / umami) checked 2026-09-29
- Umami docs: Environment variables (APP_SECRET, DATABASE_URL) checked 2026-09-29
-
Calibre-Web
Web library for your Calibre e-books: browse, search, read in the browser, download, send to an e-reader and serve an OPDS feed; replaces keeping the library on one computer running Calibre.
- Calibre-Web README on GitHub (Docker Images: the LinuxServer image; default login; blank database) checked 2026-09-29
- LinuxServer.io: docker-calibre-web README (docker-compose, port 8083, /config, /books, admin / admin123) checked 2026-09-29
- Calibre-Web wiki: Setup Reverse Proxy (nginx, Caddy) checked 2026-09-29
-
Gitea
Git hosting with issues, pull requests, code review, a package registry and CI (Gitea Actions); replaces GitHub or GitLab for your own repositories.
- Gitea docs: Installation with Docker (docker-compose.yml, GITEA__section__KEY variables) checked 2026-09-29
- Gitea docs: Reverse Proxies (ROOT_URL, nginx example, client_max_body_size 512M) checked 2026-09-29
- Gitea docs: Configuration Cheat Sheet (ROOT_URL, DISABLE_SSH) checked 2026-09-29
-
Dozzle
Live log viewer for every container on this server, in the browser, with search and per-container filters; replaces running docker logs over SSH.
- Dozzle docs: Getting Started (docker-compose.yml, docker.sock, /data) checked 2026-09-29
- Dozzle docs: Authentication (Security Considerations, generating users.yml) checked 2026-09-29
- Dozzle docs: Simple Authentication (DOZZLE_AUTH_PROVIDER: simple, /data/users.yml) checked 2026-09-29
- Dozzle docs: Reverse Proxy & Base Path (SSE, buffering, nginx, Caddy flush_interval -1) checked 2026-09-29
-
Homarr
Start page for your self-hosted apps with drag-and-drop boards, app status and widgets from their APIs, and its own logins; replaces a bookmarks folder of server addresses.
- Homarr docs: Docker installation (docker-compose.yml, SECRET_ENCRYPTION_KEY) checked 2026-09-29
- Homarr documentation repository: the compose file the Docker page shows (dynamic-docker-install.tsx) checked 2026-09-29
- Homarr docs: Proxies and Certificates (Caddy: reverse_proxy homarr:7575; Traefik port 7575) checked 2026-09-29
-
SearXNG
Private metasearch engine: one search box that asks Google, Bing, DuckDuckGo, Wikipedia and other engines for you and merges their results, without an account, ads or a search history kept about you; replaces searching on Google directly.
- SearXNG docs: Installation container (compose template, volumes, SEARXNG_* variables) checked 2026-09-30
- SearXNG repository: container/docker-compose.yml (core and valkey services) checked 2026-09-30
- SearXNG docs: settings.yml server: (secret_key as $SEARXNG_SECRET, base_url as $SEARXNG_BASE_URL, limiter) checked 2026-09-30
- SearXNG docs: settings.yml valkey: (url as $SEARXNG_VALKEY_URL) checked 2026-09-30
- SearXNG repository: container/entrypoint.sh (creates settings.yml from the template on first start) checked 2026-09-30
-
code-server
VS Code in the browser, running on your server: edit files, use the terminal and install extensions from any device, including a tablet; replaces a laptop with a local editor for work on the server.
- code-server docs: Install (Docker: docker run, volumes, amd64 and arm64) checked 2026-09-30
- code-server docs: Requirements (1 GB of RAM and 2 CPU cores at the minimum; WebSockets) checked 2026-09-30
- code-server docs: FAQ (config.yaml, password, hashed-password, HASHED_PASSWORD in Docker Compose) checked 2026-09-30
- code-server source: cli.ts (password "can only be passed in via $PASSWORD or the config file") checked 2026-09-30
- code-server docs: Setup and configuration guide (Caddy and NGINX reverse proxy examples) checked 2026-09-30
-
PrivateBin
Pastebin that encrypts every paste in the browser before it is sent, so the server stores only ciphertext; pastes can expire or burn after reading; replaces Pastebin and pasting passwords or logs into a chat.
- PrivateBin image README: Running the image (docker run, --read-only, tmpfs, /srv/data owned by 65534:82, custom conf.php, image tags) checked 2026-09-30
- PrivateBin repository: cfg/conf.sample.php ([traffic] limit and header = "X_FORWARDED_FOR" behind a reverse proxy) checked 2026-09-30
- PrivateBin source: lib/Configuration.php (requires [main], [model] and [model_options]; fills every other setting from its defaults) checked 2026-09-30
-
authentik
Identity provider for your self-hosted apps: one login with two-factor for everything, through OAuth2/OpenID Connect, SAML, LDAP or a proxy in front of apps without logins; replaces a separate password for every app, or Okta and Auth0.
- authentik docs: Docker Compose installation (requirements, PG_PASS and AUTHENTIK_SECRET_KEY, Docker socket, initial setup) checked 2026-09-30
- authentik: docker-compose.yml (postgresql, server and worker, version 2026.8.3) checked 2026-09-30
- authentik docs: Reverse proxy (required headers, WebSockets, trusted proxy networks) checked 2026-09-30
-
Radicale
Small CalDAV and CardDAV server for calendars, to-do lists and contacts, synced to phones (DAVx5 on Android, the built-in accounts on iPhone) and Thunderbird, stored as plain files; replaces Google Calendar and Contacts or iCloud sync.
- Radicale documentation (DOCUMENTATION.md): Docker, authentication with htpasswd, reverse proxy, storage checked 2026-09-30
- Radicale repository: compose.yaml (ghcr.io/kozea/radicale:stable, ./config and ./data) checked 2026-09-30
- Radicale repository: Dockerfile (user radicale, UID 1000; apache2-utils; --hosts 0.0.0.0:5232) checked 2026-09-30
-
Karakeep
Bookmark-everything app (formerly Hoarder): save links, notes, images and PDFs, with a headless Chrome that archives each page, full-text search and optional AI tagging; replaces Pocket, Raindrop.io and a notes app full of links.
- Karakeep docs: Docker installation (docker-compose.yml, .env with NEXTAUTH_SECRET, MEILI_MASTER_KEY, NEXTAUTH_URL) checked 2026-09-30
- Karakeep repository: docker/docker-compose.yml (web, chrome, meilisearch) checked 2026-09-30
- Karakeep docs: Environment variables (NEXTAUTH_URL, DISABLE_SIGNUPS, crawler options) checked 2026-09-30
- Karakeep docs: Security considerations (what the crawler lets users reach) checked 2026-09-30
-
wallabag
Read-it-later app: save articles from the browser or phone, and wallabag fetches the text without the ads and clutter for reading later, also offline in its apps and on e-readers; replaces Pocket and Instapaper.
-
IT-Tools
One page of small developer tools that run in your browser: UUID, token and password generators, hash and bcrypt, JWT parser, base64, cron and chmod calculators, JSON, YAML and TOML converters, subnet calculator; replaces pasting data into ad-funded converter sites.
-
HedgeDoc
Collaborative Markdown editor in the browser: several people edit one note at once and see the rendered page live, with diagrams, math and slide mode, shared by link; replaces Google Docs and HackMD for meeting notes and docs.
- HedgeDoc docs: Docker Image (docker-compose.yml, amd64 and arm64, backup and restore) checked 2026-09-30
- HedgeDoc docs: Using a Reverse Proxy (CMD_DOMAIN, CMD_PROTOCOL_USESSL, CMD_URL_ADDPORT, /socket.io/ WebSocket) checked 2026-09-30
- HedgeDoc docs: How to make your HedgeDoc instance production ready (guest users, backups) checked 2026-09-30
- HedgeDoc docs: Configuration (CMD_SESSION_SECRET, CMD_ALLOW_ANONYMOUS, CMD_ALLOW_EMAIL_REGISTER) checked 2026-09-30
- docker-library/postgres: the 18 Dockerfile ("in 18+ ... the VOLUME has moved from /var/lib/postgresql/data to /var/lib/postgresql") checked 2026-09-30
-
Seerr
Request manager for a Jellyfin, Plex or Emby library (Seerr is the merged successor of Jellyseerr and Overseerr): family and friends browse and request films and series, you approve, and Sonarr or Radarr fetch them; replaces requests by text message.
- Seerr docs: Docker (compose.yaml, tags, config folder owned by UID 1000) checked 2026-09-30
- Seerr docs: Reverse Proxy (subdomain only; nginx example) checked 2026-09-30
- Seerr docs: Network settings (Enable Proxy Support) checked 2026-09-30
- Seerr docs: Migration guide (from Overseerr or Jellyseerr; node user UID 1000; init: true) checked 2026-09-30
-
SiYuan
Block-based note-taking and personal knowledge base in the browser: Markdown-style editing, links and backlinks between blocks, databases, flashcards and PDF annotation, all kept in one workspace folder on your server; replaces Notion and Obsidian Sync for one person.
- SiYuan README: Docker Hosting (Docker Compose, PUID/PGID, lock screen password, hidden port, limitations) checked 2026-10-01
- Docker Hub: b3log/siyuan (the README's image) checked 2026-10-01
-
Reactive Resume
Resume builder in the browser: fill in your experience once, pick a template, rearrange sections and download a PDF made on your own device, with accounts for several people; replaces paid online CV builders that keep your data.
-
ToolJet
Low-code builder for internal tools: drag tables, forms and charts onto a page, wire them to your databases and APIs with queries, and share the app with your team; replaces Retool and hand-written admin panels.
- ToolJet docs: Deploying ToolJet using Docker Compose (in-built PostgreSQL, .env, backup, upgrading to the latest LTS) checked 2026-10-01
- ToolJet: the production docker-compose-db.yaml the Docker page downloads checked 2026-10-01
- ToolJet: .env.internal.example, the .env the Docker page downloads for in-built PostgreSQL checked 2026-10-01
- ToolJet: internal.sh, which fills in the keys and the database password checked 2026-10-01
- ToolJet docs: System Requirements (x86 only, 4 GB RAM, 1 vCPU, 8 GiB storage) checked 2026-10-01
-
Appsmith
Low-code platform for admin panels and internal tools: build pages from tables, forms and charts, connect them to PostgreSQL, MongoDB, REST and 25-plus other sources, and add logic in JavaScript; replaces Retool and one-off admin dashboards.
- Appsmith docs: Docker (docker-compose.yml, Community edition, release tags, 8 GB of RAM) checked 2026-10-01
- Appsmith on GitHub: release v2.4.3 (2026-09-30), the latest on 2026-10-01 checked 2026-10-01
- Appsmith docs: Backup Instance (appsmithctl backup) checked 2026-10-01
- Appsmith docs: Restore Instance (appsmithctl restore) checked 2026-10-01
- Appsmith docs: Update Appsmith (pinned tag, pull, recreate) checked 2026-10-01
-
Trilium Notes
Hierarchical note-taking for a large personal knowledge base: a tree of rich-text, code, canvas and mind-map notes with cloning, attributes, scripting and per-note encryption, synced to the desktop app; replaces Evernote and OneNote.
- Trilium: docker-compose.yml in the repository (the file the Docker page downloads) checked 2026-10-01
- Trilium docs: Using Docker (images for AMD64, ARMv7 and ARM64, data directory, user and group IDs) checked 2026-10-01
- Trilium docs: Trusted proxy (trustedReverseProxy=true) checked 2026-10-01
- Trilium docs: Configuration (TRILIUM_NETWORK_TRUSTEDREVERSEPROXY) checked 2026-10-01
-
Khoj
AI assistant over your own documents and the web: chat with the language model you connect, ask questions about notes and files you add, run web searches through its own SearXNG and code in a sandbox; replaces ChatGPT with file uploads and Perplexity.
- Khoj: docker-compose.yml in the repository (the file the setup page downloads) checked 2026-10-01
- Khoj docs: Setup (Docker, admin credentials, anonymous mode, admin panel, offline chat requirements) checked 2026-10-01
- Khoj docs: Remote Access (KHOJ_DOMAIN, authentication) checked 2026-10-01
-
Glance
One-page dashboard for your feeds: RSS, Reddit, Hacker News, YouTube channels, weather, calendar, stock prices, release notes and status checks of your own services, laid out in columns from one YAML file; replaces a browser start page and a pile of open tabs.
- Glance README: Installation, Docker compose manual checked 2026-10-01
- Glance docs: Configuration (authentication, server proxied, environment variables) checked 2026-10-01
-
QwenPaw
Personal AI agent with a web console: connect a model provider or a local model, give it skills, memory and scheduled jobs, and talk to it from the browser or from chat apps such as Telegram and Discord; replaces hosted assistant subscriptions that keep your history.
- QwenPaw: docker-compose.yml in the repository checked 2026-10-01
- QwenPaw docs: Quick start, Option 3: Docker (image tags, the three volumes) checked 2026-10-01
- QwenPaw docs: Security, Web Authentication (QWENPAW_AUTH_ENABLED, auto-registration, localhost bypass) checked 2026-10-01
-
Langfuse
Tracing and evaluation for applications built on language models: your code sends each prompt, response, cost and latency through its SDK, and the web UI shows the traces, manages prompt versions and scores outputs; replaces LangSmith and hosted LLM observability services.
-
Plausible CE
Privacy-friendly web analytics on your own server: a small script on your pages counts visits, sources, pages, countries and goals without cookies, shown on one dashboard per site; replaces Google Analytics.
- Plausible CE: compose.yml at v3.2.1, the tag the README clones checked 2026-10-01
- Plausible CE README: prerequisites (SSE 4.2 or NEON, 2 GB of RAM), .env, first user checked 2026-10-01
- Plausible CE: the four ClickHouse files in clickhouse/ at v3.2.1 checked 2026-10-01
- Plausible CE wiki: Configuration (BASE_URL, SECRET_KEY_BASE, DISABLE_REGISTRATION, HTTP_PORT, DATABASE_URL) checked 2026-10-01
- Plausible CE wiki: Reverse Proxy (HTTP_PORT=8000, reverse_proxy to port 8000) checked 2026-10-01
-
ArchiveBox
Saves web pages you give it as lasting copies on your own disk: HTML, a single-file page, a PDF, a screenshot, the media and the text for full-text search, all browsable from one index; replaces trusting the Wayback Machine or bookmarks that rot.
- ArchiveBox: docker-compose.yml (the file docker-compose.archivebox.io serves; port 5797, ./data, pids_limit, shm_size) checked 2026-10-03
- ArchiveBox wiki: Docker (Docker Compose setup, published tags, single-domain mode on port 5797) checked 2026-10-03
- ArchiveBox wiki: Configuration (BASE_URL, SERVER_SECURITY_MODE) checked 2026-10-03
- ArchiveBox wiki: Upgrading Versions (Upgrading with Docker Compose, back up first) checked 2026-10-03
-
Dashy
Start page for a home server from one conf.yml: tiles and sections linking your services, live status checks, widgets for weather, system stats and feeds, themes and search; edited in the browser or in the file; replaces a browser start page full of server addresses.
-
Beszel
Server monitoring with history: a small agent on each machine reports CPU, memory, disk, network, temperatures and per-container Docker stats to this hub, which keeps the charts and sends alerts when a value crosses a threshold; replaces logging in to each machine to run top and docker stats.
- Beszel docs: Hub Installation (docker-compose.yml, port 8090, ./beszel_data, APP_URL) checked 2026-10-03
- Beszel docs: Reverse Proxy (APP_URL; WebSocket for agents; Caddy and Nginx examples with a 10 MB body limit and a 360 s read timeout) checked 2026-10-03
- Beszel docs: Agent Installation checked 2026-10-03
- Beszel docs: Environment Variables (APP_URL, USER_EMAIL, USER_PASSWORD) checked 2026-10-03
-
NocoBase
No-code builder for internal business apps: define your own data tables and relations, then click together lists, forms, kanban boards, charts, workflows and per-role permissions on top of a PostgreSQL database; replaces spreadsheets passed around by e-mail and hosted tools like Airtable.
- NocoBase docs: Docker Installation (docker-compose.yml for PostgreSQL, latest-full image, port 80, first login, Nginx proxy) checked 2026-10-03
- NocoBase docs: System Requirements (single node: 1 core and 2 GB minimum, 2 cores and 4 GB recommended) checked 2026-10-03
- NocoBase docs: Upgrading a Docker Installation checked 2026-10-03
-
listmonk
Newsletter and mailing-list manager: subscriber lists with double opt-in, segments by SQL query, templated campaigns with open and click counts, sent through your own SMTP server or mail provider; replaces hosted newsletter services such as Mailchimp.
- listmonk: docker-compose.yml (app and Postgres, install and upgrade on start, LISTMONK_* variables) checked 2026-10-03
- listmonk docs: Installation (Docker, Super Admin on first start) checked 2026-10-03
- listmonk docs: Upgrade (back up Postgres first; Docker steps) checked 2026-10-03
- listmonk docs: Configuration (environment variables, HTTP routes, media uploads) checked 2026-10-03
-
Neko
A Firefox running on your server that you use from any browser tab: the screen streams to you over WebRTC, several people can watch together and pass the keyboard around, and logins, downloads and history stay on the server, not on the device you use; replaces screen sharing when several people want to browse together.
- Neko: docker-compose.yaml (Firefox image, shm_size 2gb, port 8080, UDP 52000-52100) checked 2026-10-03
- Neko docs: Quick Start (download the compose file, NAT1TO1 on a local network) checked 2026-10-03
- Neko docs: WebRTC Configuration (ephemeral UDP port range or UDP/TCP multiplexing, server IP address, no reverse proxy for WebRTC) checked 2026-10-03
- Neko docs: Reverse Proxy Setup (server.proxy, WebSocket, Nginx and Caddy examples) checked 2026-10-03
- Neko docs: Browsers (persistent profile at /home/neko/.mozilla/firefox/profile.default, uid 1000, policies) checked 2026-10-03
-
Linkwarden
Bookmark manager that keeps a copy of every page you save, as a screenshot, a PDF and a readable HTML archive, so links still open after the site changes or goes away; collections shared with other users, tags and full-text search; replaces read-later services and browser bookmarks.
- Linkwarden: docker-compose.yml (postgres, linkwarden, meilisearch; .env) checked 2026-10-03
- Linkwarden docs: Setup (hardware requirements, Docker Compose, required environment variables) checked 2026-10-03
- Linkwarden docs: How to Upgrade (back up first: pg_dump and the data folder; pull, up -d, logs; pinning a version) checked 2026-10-03
- Linkwarden docs: Reverse Proxy (NGINX example, NEXTAUTH_URL and BASE_URL) checked 2026-10-03
- Linkwarden docs: Environment Variables (NEXT_PUBLIC_DISABLE_REGISTRATION) checked 2026-10-03
-
ConvertX
File converter in the browser for over a thousand formats: images, documents, e-books, audio, video and 3D files go through FFmpeg, LibreOffice, Pandoc, ImageMagick, Calibre and a dozen other tools on your own server, several files at once; replaces upload-to-convert websites.
- ConvertX README (Docker Compose, environment variables, image tags) checked 2026-10-03
-
DocuSeal
Document signing on your own server: upload a PDF, drag signature, date and text fields onto it, send the link by e-mail, and get the signed PDF with an audit log back; signers need no account; replaces DocuSign.
- DocuSeal README: Docker (SQLite by default, PostgreSQL or MySQL through DATABASE_URL) and Docker Compose checked 2026-10-03
- DocuSeal: docker-compose.yml (app, postgres:18 and its own Caddy) checked 2026-10-03
- DocuSeal: config/database.yml (SQLite at $WORKDIR/db.sqlite3 when DATABASE_URL is empty) checked 2026-10-03
- DocuSeal: Dockerfile (WORKDIR /data/docuseal, port 3000) checked 2026-10-03
- DocuSeal: config/environments/production.rb (FORCE_SSL sets assume_ssl and force_ssl) checked 2026-10-03
- DocuSeal: setup_controller.rb (first account and app URL, only while no user exists) checked 2026-10-03
-
BentoPDF
PDF toolbox that works inside your browser: merge, split, compress, rotate, sign, fill forms, OCR and convert to and from Office and image formats, with the files processed on your own device; replaces online PDF sites that upload your documents.
-
Termix
SSH terminals, remote desktops (RDP, VNC, Telnet), SFTP file transfers and SSH tunnels for all your servers in one browser tab: hosts and keys saved once, split screen up to six panels, live CPU, memory and disk per session; replaces a desktop SSH client such as Termius and its synced host list.
- Termix docs: Docker (compose with guacd, image tags, database, termix-data volume) checked 2026-10-08
- Termix docs: Reverse Proxy (NGINX WebSocket upgrade, Traefik, Caddy) checked 2026-10-08
- Termix docs: Security (password reset by a code the server logs; encrypted user data) checked 2026-10-08
- Termix docs: Authentication (the first account becomes the admin) checked 2026-10-08
- Termix docs: Environment Variables (ALLOW_REGISTRATION, ALLOW_PASSWORD_RESET, EXTERNAL_FORCE_HTTPS) checked 2026-10-08
- Termix docs: Remote Desktop (guacd, its URL in Admin Settings) checked 2026-10-08
- Termix docs: Benchmarks (CPU, RAM and disk by number of hosts) checked 2026-10-08
-
Documenso
Document signing on your own server: upload a PDF, place signature, date and text fields, send it to recipients by email and get back a PDF sealed with your own signing certificate plus an audit log; templates, teams and an API; replaces DocuSign and similar e-signature services.
- Documenso: docker/production/compose.yml (database, documenso) checked 2026-10-08
- Documenso docs: Docker Compose (required variables, signing certificate, first account) checked 2026-10-08
- Documenso docs: Local Certificate (generating a .p12 with OpenSSL) checked 2026-10-08
- Documenso docs: Requirements (hardware; email for signing requests and password resets) checked 2026-10-08
- Documenso docs: Email (SMTP transports; forgot-password and reset-password emails) checked 2026-10-08
- Documenso docs: Backups (database, signing certificate) checked 2026-10-08
- Documenso docs: Upgrades (image tags, pull, up -d, verify) checked 2026-10-08
-
MeTube
Web page for yt-dlp: paste a link from YouTube or any of the other sites yt-dlp supports and the server downloads the video or just the audio, at the quality and format you pick, into a folder you can play or sync from; playlists, channel subscriptions and a download queue; replaces running yt-dlp by hand and download websites full of ads.
- MeTube README (Docker Compose, environment variables, multi-arch images) checked 2026-10-08
- MeTube wiki: Reverse proxy configurations (WebSocket for Socket.IO, URL_PREFIX) checked 2026-10-08
-
TREK
Trip planner for one person or a group: days with places on a map, routes, bookings and flights, a shared budget with currency conversion, packing lists, to-dos, documents and a chat per trip, all updated live for everyone on it; read-only share links and PDF export; replaces planning a trip across spreadsheets, notes and a shared map.
- TREK: docker-compose.yml (hardened app service, ./data and ./uploads) checked 2026-10-08
- TREK wiki: Install: Docker Compose checked 2026-10-08
- TREK wiki: Environment Variables (ENCRYPTION_KEY, APP_URL, FORCE_HTTPS, TRUST_PROXY, ADMIN_EMAIL) checked 2026-10-08
- TREK wiki: Updating (back up, docker compose pull && docker compose up -d) checked 2026-10-08
- TREK wiki: Backups (Admin Panel backups; ./data and ./uploads) checked 2026-10-08
- TREK wiki: Reverse Proxy (WebSocket on /ws, 500 MB bodies, Mcp-Session-Id) checked 2026-10-08
- TREK wiki: Troubleshooting (reset-admin.js) checked 2026-10-08
-
RomM
Library for retro game ROMs: scans your folders, matches each game to cover art and details from IGDB, ScreenScraper and other providers, groups them by platform and plays many in the browser through EmulatorJS and Ruffle, keeping saves and states in sync across your devices; replaces a folder of ROM files and hand-made playlists.
- RomM: examples/docker-compose.example.yml (romm, romm-db) checked 2026-10-08
- RomM docs: Quick Start (Docker Compose, Setup Wizard) checked 2026-10-08
- RomM docs: Reverse Proxy (port 8080, nginx WebSocket headers, client_max_body_size 0) checked 2026-10-08
- RomM docs: Backup & Restore (database dump, assets, config) checked 2026-10-08
- RomM docs: Authentication (Password reset: email or container log) checked 2026-10-08
- RomM docs: Environment Variables (ROMM_AUTH_SECRET_KEY, DB_PASSWD) checked 2026-10-08
-
PLANKA
Kanban boards for a team in the browser: projects with boards, lists and cards that update live for everyone, with Markdown, due dates, a stopwatch, attachments, comments and custom fields on each card, notifications through more than 100 providers and import from Trello; replaces Trello and similar hosted kanban services.
- PLANKA: docker-compose.yml (planka, postgres) checked 2026-10-08
- PLANKA docs: Docker, Production Version (SECRET_KEY, BASE_URL, create an admin user) checked 2026-10-08
- PLANKA docs: Admin User (db:create-admin-user, DEFAULT_ADMIN_* variables) checked 2026-10-08
- PLANKA docs: Docker, How to Update (backup, down, pull, up -d) checked 2026-10-08
- PLANKA docs: Docker, Backup & Restore (database and data volume) checked 2026-10-08
- PLANKA docs: Reverse Proxy, Nginx (socket.io WebSocket, client_max_body_size 50M) checked 2026-10-08
- PLANKA docs: Reverse Proxy, Caddy (X-Forwarded-Proto, BASE_URL) checked 2026-10-08
- PLANKA: docker-backup.sh (pg_dumpall and a copy of /app/data) checked 2026-10-08
-
Gatus
Status page that checks your services from one YAML file: each endpoint is polled over HTTP, TCP, DNS, ICMP or other protocols and judged on conditions such as status code, response time, body content or days until the certificate expires; alerts to Slack, Discord, email, ntfy and more; replaces a hosted uptime-monitor subscription.
- Gatus: .examples/docker-compose-sqlite-storage (compose.yaml and config.yaml) checked 2026-10-08
- Gatus README (configuration, storage, security, Docker) checked 2026-10-08
-
Homer
Static start page for a home server, built from one config.yml: groups of tiles with icons linking your services, fuzzy search, keyboard shortcuts, theme customisation, several pages, and smart cards that show live data from some services; installable as an app (PWA); no server-side code and no database; replaces a browser bookmark folder of server addresses.
- Homer README (docker-compose, INIT_ASSETS, PORT, uid 1000) checked 2026-10-08
- Homer docs: Configuration (one config.yml in /assets) checked 2026-10-08
-
Owncast
Your own live-streaming server: stream from OBS or any RTMP software and viewers watch in the browser at several qualities, with built-in chat, moderation, custom branding and Fediverse notifications when you go live; replaces streaming on Twitch or YouTube Live under their rules.
- Owncast docs: Use a container image (docker-compose.yml, ports 8080 and 1935, default login) checked 2026-10-08
- Owncast docs: SSL and reverse proxies (RTMP on 1935 does not go through the proxy; /ws for chat) checked 2026-10-08
- Owncast docs: NGINX (WebSocket map, Authorization header) checked 2026-10-08
- Owncast docs: Configuration via runtime flags (--adminpassword) checked 2026-10-08
- Owncast docs: Back up your stream data and configuration (data/, hourly owncastdb.bak) checked 2026-10-08
- Owncast: Earthfile (the image's ENTRYPOINT ["/app/owncast"]) checked 2026-10-08
-
Dawarich
Your location history on your own server: phones send their position through OwnTracks, Overland, the Dawarich apps or Home Assistant, or you import a Google Takeout, and it draws your routes and visits on a map, with trips and statistics such as the countries and cities you visited and the distance you travelled; replaces Google Timeline (Google Maps Location History).
- Dawarich: docker/docker-compose.yml (redis, postgis, app, sidekiq) checked 2026-10-08
- Dawarich docs: Introduction (requirements, setup, update, default credentials) checked 2026-10-08
- Dawarich docs: Setting Up Reverse Proxy (APPLICATION_HOSTS, nginx example) checked 2026-10-08
- Dawarich docs: Backup & Restore (pg_dumpall, storage, public, watched, redis) checked 2026-10-08
- Dawarich docs: FAQ (Rails console; How to update user's password?) checked 2026-10-08
-
OmniTools
Browser toolbox for everyday file and data jobs: resize, convert and edit images, trim or reverse video, split, merge and edit PDFs, reformat text and lists, work out dates and time zones, and convert JSON, CSV and XML, all done in the visitor's browser so the files never reach the server; replaces ad-funded single-purpose converter sites.
- OmniTools README (Docker Compose, port 80, files processed in the browser) checked 2026-10-09
- OmniTools: Dockerfile (nginx serving the built app on port 80) checked 2026-10-09
-
LibrePhotos
Photo and video library for a household: indexes the folders you give it (or takes uploads), finds and groups faces, captions and tags scenes, turns GPS into place names for a map and for search, and builds albums, memories and a timeline, with several users each confined to a folder of their own; replaces Google Photos.
- LibrePhotos: deploy/compose/docker-compose.yml (proxy, db, frontend, backend) checked 2026-10-09
- LibrePhotos: deploy/compose/librephotos.env (tag, folders, database, workers) checked 2026-10-09
- LibrePhotos docs: Standard Docker Setup (4 GB RAM, 10 GB disk, setup wizard, updating) checked 2026-10-09
- LibrePhotos docs: Managing Users (How to change the admin password, when you can't log in) checked 2026-10-09
- LibrePhotos docs: Upgrading (back up the database with pg_dump first) checked 2026-10-09
- LibrePhotos docs: Single Container Deployment (Behind a reverse proxy: CSRF_TRUSTED_ORIGINS) checked 2026-10-09
- LibrePhotos docs: Internal files (/logs/secret.key, /protected_media, the models) checked 2026-10-09
-
Homebox
Home inventory in the browser: record what you own with photos, serial numbers, purchase and warranty details and fields of your own, sort it by location and label, find it with search, print QR codes to stick on boxes and get maintenance reminders, with several people sharing one inventory; replaces a spreadsheet of belongings for insurance claims and moves.
- Homebox docs: Install (Docker Compose, Regular image, port 7745, /data volume) checked 2026-10-09
- Homebox docs: Configure (environment variables: API key pepper, registration, trust proxy) checked 2026-10-09
- Homebox docs: Proxying (HBOX_OPTIONS_TRUST_PROXY, nginx WebSocket example) checked 2026-10-09
- Homebox docs: Storage (local storage at /data in the container) checked 2026-10-09
- Homebox docs: Database (SQLite by default) checked 2026-10-09
-
Photoview
Photo gallery for the pictures already on your server: it maps your folders to albums, makes thumbnails, groups photos by the faces in them, plays videos optimised for the web, reads RAW files and EXIF data, and shares albums or single photos by public link with an optional password, each user limited to a folder of their own; replaces Google Photos for browsing and sharing.
- Photoview: docker-compose.minimal.example.yml (photoview-prepare, photoview, mariadb) checked 2026-10-09
- Photoview: example.env (folders, database driver, MariaDB settings) checked 2026-10-09
- Photoview docs: Setup with Docker (port 80, media mounts read-only, tags, updating) checked 2026-10-09
- Photoview docs: Getting started (initial setup wizard: admin user and photo path) checked 2026-10-09
- Photoview docs: FAQ (I forgot the password to the admin user) checked 2026-10-09
- Photoview docs: Reverse Proxy (Traefik labels, Caddy, Apache) checked 2026-10-09
-
SparkyFitness
Food, exercise and health tracker for a family: log meals from food databases or your own foods, workouts, water, weight and body measurements, track cycles and symptoms, set goals and read reports, share with family members, and sync from the phone app; replaces MyFitnessPal and similar subscription trackers.
- SparkyFitness: docker/docker-compose.prod.yml (db, server, frontend) checked 2026-10-09
- SparkyFitness docs: Docker Compose (the secrets to replace, services, port 80) checked 2026-10-09
- SparkyFitness docs: Environment Variables (frontend URL, admin email, sign-up, email) checked 2026-10-09
- SparkyFitness docs: Reverse Proxy (headers, frontend container on port 80) checked 2026-10-09
- SparkyFitness docs: FAQ (locked out of MFA, temporary admin) checked 2026-10-09
- SparkyFitness docs: Manual Backup and Restore (in-app archives in /app/SparkyFitnessServer/backup) checked 2026-10-09
-
bitmagnet
BitTorrent search engine of your own: its crawler walks the public DHT network and records the torrents it finds, classifies them (movies and TV shows among other types, with language and resolution) using data from The Movie Database, and lets you search the index in a web page, over GraphQL or through a Torznab endpoint for Sonarr, Radarr and the rest of the Servarr stack; it stores metadata and magnet links, never the files; replaces public torrent index sites.
- bitmagnet docs: Installation (minimal docker-compose.yml, ports 3333 and 3334, upgrading) checked 2026-10-09
- bitmagnet docs: FAQ (not a public service, VPN, system requirements) checked 2026-10-09
- bitmagnet docs: Backup, Restore & Merge (pg_dump --data-only, psql) checked 2026-10-09
-
13ft
Article reader that gets past paywalls and ads: paste a link, or put it after the address, and it fetches the page posing as Google's crawler, which many sites show the full text to, then displays it clean; replaces 12ft.io, the hosted service it copies.
- 13ft: docker-compose.yaml (ghcr.io/wasi-master/13ft, port 5000) checked 2026-10-09
- 13ft README (how it works: poses as GoogleBot; Docker; reverse proxy) checked 2026-10-09
-
Moodist
Ambient-sound mixer for focus and sleep: layer any of 84 sounds into your own mix, save it as a preset or share it as a link, fade out on a sleep timer, and use the built-in binaural beats, Pomodoro timer, breathing exercise and notepad; installable as an app that works offline; replaces paid ambient-noise apps.
- Moodist: docker-compose.yml (ghcr.io/remvze/moodist, port 8080) checked 2026-10-09
- Moodist README (features, Self-Hosting with Docker Compose) checked 2026-10-09
- Moodist: Dockerfile (static Astro build served by Caddy on 8080) checked 2026-10-09
-
OliveTin
Web page of buttons for shell commands you define in one config.yaml, such as restarting a service, waking a PC or running a backup script with a dropdown for its argument, so family members or junior admins can run them from a phone or a wall tablet; replaces handing out SSH access for routine jobs.
- OliveTin docs: Docker Compose install (jamesread/olivetin, port 1337, /config) checked 2026-10-09
- OliveTin docs: Container install (write config.yaml before the first start) checked 2026-10-09
- OliveTin docs: Local Users Login (authLocalUsers, Argon2id hashes, PasswordHash API) checked 2026-10-09
- OliveTin docs: Nginx (WebSocket on /websocket) checked 2026-10-09
- OliveTin docs: Caddy (plain reverse_proxy works for its WebSockets) checked 2026-10-09
- OliveTin docs: Upgrade notes checked 2026-10-09
-
AdventureLog
Travel log and trip planner: pin the places you have been or plan to go on a 2D or 3D map with dates, notes, photos and visit history, build multi-day trips with flights, lodging and checklists, track the countries, regions and cities you have seen, attach GPX hiking tracks, and share trips by link or with other users; replaces a travel spreadsheet and saved places in Google Maps.
- AdventureLog: docker-compose.yml (Standard Deployment: app, db) checked 2026-10-09
- AdventureLog: .env.example (POSTGRES_PASSWORD, SITE_URL, first-boot admin) checked 2026-10-09
- AdventureLog docs: Standard Deployment (one container, 2 GB RAM on first boot, updating) checked 2026-10-09
- AdventureLog docs: Advanced Deployment (ARM PostGIS image) checked 2026-10-09
- AdventureLog docs: Operations & Maintenance (backup.sh: database.sql and media) checked 2026-10-09
- AdventureLog docs: Admin Panel (/admin, Users, first-boot superuser) checked 2026-10-09
- AdventureLog docs: Installation with Caddy checked 2026-10-09