An extensive and hackable collection of containerized services to set up a seedbox and personal media server.
- Easy to configure personal media server without needing too much technical skills
- Compatible with multiple systems (Linux servers, desktops, Synology NAS...)
- Automatic HTTPS ceritificates management and renewal
- Support for HTTP only too if required for your use-case
- Everything is hackable
- Add your own services
- Disable the ones you do not want
- Customize or add your own routing rules to integrate with existing services
- Tweak any service to your need with an override file, without touching the bundled one
- Everything you change lives in your own files, ignored by git: updates never conflict with your changes (see Your files and the files of the project)
- VPN support with multiple providers
- Hide the service(s) of your choice behind a VPN tunnel
- Non mandatory
- Declarative configuration
- Persistent data for your media
- Install & update using the same script
- Start with the Configuration Guide
Version 3 is released: a much shorter configuration and all your customizations in your own files, safe from updates. Migration is automatic, but please read this V3 Migration Guide as there are breaking changes!
Still on version 1? Upgrade to v2.2.2 first (git checkout v2.2.2), with the V2 Migration Guide.
| Application | Web Interface | Docker image | Version (image tag) | Notes |
|---|---|---|---|---|
| Plex | - (port 32400 of the host) | linuxserver/plex | latest | Media Streaming, see documentation |
| Deluge | deluge.yourdomain.com | linuxserver/deluge | latest | Torrents downloader |
| Flood | flood.yourdomain.com | jesec/flood | latest | Web client for Deluge (experimental) |
| qBitTorrent | qbittorrent.yourdomain.com | hotio/qbittorrent | latest | Torrents downloader + VuTorrent alternative WebUI built-in |
| Sonarr | sonarr.yourdomain.com | linuxserver/sonarr | develop | TV Shows monitor |
| Radarr | radarr.yourdomain.com | linuxserver/radarr | develop | Movies monitor |
| Bazarr | bazarr.yourdomain.com | linuxserver/bazarr | latest | Subtitles monitor |
| Lidarr | lidarr.yourdomain.com | linuxserver/lidarr | develop | Music monitor |
| Calibre | calibre-admin.yourdomain.com | linuxserver/calibre | latest | eBook management |
| Calibre-web | calibre.yourdomain.com | linuxserver/calibre-web | nightly | Book management UI |
| Komga | komga.yourdomain.com | gotson/komga | latest | Comic Book Manager |
| Kavita | Kavita.yourdomain.com | linuxserver/kavita | latest | Comic Book Manager |
| Seerr | seerr.yourdomain.com | seerr-team/seerr | latest | Plex content requests |
| Jackett | jackett.yourdomain.com | linuxserver/jackett | latest | Tracker indexer |
| FlareSolverr | - | flaresolverr/flaresolverr | latest | Proxy to bypass Cloudflare protection for Jackett / Prowlarr indexers |
| Prowlarr | prowlarr.yourdomain.com | linuxserver/prowlarr | develop | Tracker indexer |
| JDownloader | jdownloader.yourdomain.com | jlesage/jdownloader-2 | latest | Direct downloader |
| Mylar3 | mylar.yourdomain.com | linuxserver/mylar3 | latest | Comics manager |
| Tautulli (plexPy) | tautulli.yourdomain.com | linuxserver/tautulli | latest | Plex stats and admin |
| ntfy | ntfy.yourdomain.com | binwiederhier/ntfy | latest | Notifications manager |
| Tdarr | tdarr.yourdomain.com | haveagitgat/tdarr | latest | Re-encode files |
| NextCloud | nextcloud.yourdomain.com | linuxserver/nextcloud | latest | Files management |
| NextCloud-db (MariaDB) | not reachable | mariadb | 10 | DB for Nextcloud |
| FileBrowser Quantum | files.yourdomain.com | gtsteffaniak/filebrowser | stable | Files explorer, see documentation |
| Paperless-ngx | paperless.yourdomain.com | paperless-ngx/paperless-ngx | latest | Documents management and archiving (BETA) |
| Netdata | - (port 19999 of the host) | netdata/netdata | latest | Server monitoring |
| Duplicati | duplicati.yourdomain.com | linuxserver/duplicati | latest | Backups |
| Heimdall | yourdomain.com | linuxserver/heimdall | latest | Main dashboard |
| Homepage | homepage.yourdomain.com | gethomepage/homepage | latest | Main dashboard (alt) |
| Syncthing | syncthing.yourdomain.com | linuxserver/syncthing | latest | P2P files sharing |
| Jellyfin | jellyfin.yourdomain.com | linuxserver/jellyfin | latest | Media Streaming |
| Actual Budget | budget.yourdomain.com | actualbudget/actual-server | latest | Personal finance |
| Mealie | mealie.yourdomain.com | mealie-recipes/mealie | latest | Recipes manager |
| Stirling PDF | pdf.yourdomain.com | stirlingtools/stirling-pdf | latest | PDF tools |
| BentoPDF | bentopdf.yourdomain.com | alam00000/bentopdf-simple | latest | PDF tools |
| Vaultwarden | vault.yourdomain.com | dani-garcia/vaultwarden | latest | Passwords manager |
| VaulTLS | vaultls.yourdomain.com | 7ritn/vaultls | latest | Client certificates (mTLS) management, see documentation |
| Dockhand | dockhand.yourdomain.com | fnsys/dockhand | latest | Container management, see documentation |
| Wireguard | - | linuxserver/wireguard | latest | VPN server |
| Netbird | netbird.yourdomain.com | netbirdio/netbird-server | latest | Mesh VPN and public reverse proxy with access control (experimental, see documentation) |
| Traefik | traefik.yourdomain.com | traefik | latest | Traefik reverse proxy (access to admin dashboard) |
| Gluetun | - | qdm12/gluetun | latest | VPN client |
| Any application you want! | whatever.yourdomain.com | Any image | Any tag | Any service - See the Configuration Guide |
The front-end reverse proxy (Traefik) routes based on the lowest level subdomain (e.g. deluge.example.com would route to deluge). Since this is how the router works, it is recommended for you to get a top level domain. If you do not have one, you can edit your domains locally by changing your hosts file or use a browser plugin that changes the host header.
Traefik takes care of valid Let's Encrypt certificates and auto-renewal.
Note: Plex runs on the network of the host and is available directly through the 32400 port, without going through the reverse proxy. See Plex documentation to publish it on plex.yourdomain.com.
You can also add your own Traefik rules to integrate with other services (deployed wihthin docker or somewhere else on your LAN, or even on the Internet). Check the Configuration Guide.
- Docker >= 20.10
- Docker Compose >= 2.27.2, as a Docker plugin (
docker composecommand). The olddocker-composebinary is not supported anymore. - jq >= 1.5
- yq >= 4
Before running, create the directories which will hold your data (configuration of the services and media), and give them to your user. For example:
sudo mkdir -p /data/config /data/torrents && sudo chown -R $USER: /data
./init.shEdit the .env file and change the variables as desired. Some services also have their own variables (passwords...) in services/<name>/custom/service.env: the script tells you which ones you have to set.
The variables are all self-explanatory.
The configuration lives in the config.yaml file: list the services you want, and change their default values only if you need to.
All you need to know is located in the Configuration Guide.
./run-seedbox.shAll services and dynamic configuration will be automatically created without further action from your part.
Make sure you install the dependencies and finish configuration before doing this.
Old Docker images pile up after updates. Set DOCKER_PRUNE_AFTER_UPDATE=true in your .env to remove unused images and volumes after each run. It is disabled by default because it applies to the whole host: images and volumes which do not belong to the seedbox are removed too.
Everything is stored in plain directories of your host, set in your .env file:
HOST_CONFIG_PATH(/data/configby default): the configuration and the data of each service, one directory per service (/data/config/sonarr,/data/config/Plex...). This is what you want to back up.HOST_MEDIA_PATH(/data/torrentsby default): your media and downloads. It can also be a NFS share.
These directories are mounted as they are in the containers: Docker never deletes their content, whatever you do with the containers (docker compose down, docker volume prune...). No Docker plugin is needed.
- Some indications here (more to come): Apps Configuration
- TRaSH Guides