{"id":16129499,"url":"https://github.com/klutchell/balena-mediaserver","last_synced_at":"2026-06-14T18:01:09.216Z","repository":{"id":97997981,"uuid":"166850232","full_name":"klutchell/balena-mediaserver","owner":"klutchell","description":"mediaserver stack for balenaCloud","archived":false,"fork":false,"pushed_at":"2026-06-07T06:57:34.000Z","size":3773,"stargazers_count":12,"open_issues_count":6,"forks_count":6,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-07T08:19:47.516Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"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/klutchell.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2019-01-21T17:04:50.000Z","updated_at":"2026-06-07T06:57:37.000Z","dependencies_parsed_at":"2023-12-09T01:25:22.654Z","dependency_job_id":"4cb2b467-59f4-4c94-90cd-90e7accf5f77","html_url":"https://github.com/klutchell/balena-mediaserver","commit_stats":{"total_commits":1937,"total_committers":4,"mean_commits":484.25,"dds":0.4703149199793495,"last_synced_commit":"c6b265c472849337dbbbf88eccdfaa2b4905a7dd"},"previous_names":[],"tags_count":1384,"template":false,"template_full_name":null,"purl":"pkg:github/klutchell/balena-mediaserver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klutchell%2Fbalena-mediaserver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klutchell%2Fbalena-mediaserver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klutchell%2Fbalena-mediaserver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klutchell%2Fbalena-mediaserver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/klutchell","download_url":"https://codeload.github.com/klutchell/balena-mediaserver/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klutchell%2Fbalena-mediaserver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34331812,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-14T02:00:07.365Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":"2024-10-09T22:11:04.623Z","updated_at":"2026-06-14T18:01:09.085Z","avatar_url":"https://github.com/klutchell.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# balena-mediaserver\n\nManage your media server on balena.io\n\n- [Prerequisites](#prerequisites)\n- [Deployment](#deployment)\n  - [One-Click Deployment](#one-click-deployment)\n  - [Manual Deployment](#manual-deployment)\n- [Configuration](#configuration)\n  - [Environment Variables](#environment-variables)\n  - [Remote Access](#remote-access)\n    - [Via Tailscale](#via-tailscale)\n    - [Via Nginx](#via-nginx)\n- [Services](#services)\n  - [Duplicati](#duplicati)\n  - [Jellyfin](#jellyfin)\n  - [Netdata](#netdata)\n  - [Nginx](#nginx)\n  - [Nzbhydra](#nzbhydra)\n  - [Plex](#plex)\n  - [Profilarr](#profilarr)\n  - [Prowlarr](#prowlarr)\n  - [Radarr](#radarr)\n  - [Sabnzbd](#sabnzbd)\n  - [Sonarr](#sonarr)\n  - [Syncthing](#syncthing)\n  - [Tautulli](#tautulli)\n- [Contributing](#contributing)\n\n## Prerequisites\n\n- A device running [balenaOS](https://balena.io/os) with sufficient processing power\n- Adequate storage space in the data partition for your media\n- A [balenaCloud account](https://dashboard.balena-cloud.com) (optional)\n- A [Tailscale account](https://tailscale.com/) for remote access (optional)\n- A custom domain name for HTTPS access (optional)\n\n## Deployment\n\n### One-Click Deployment\n\n[![deploy button](https://balena.io/deploy.svg)](https://dashboard.balena-cloud.com/deploy?repoUrl=https://github.com/klutchell/balena-mediaserver)\n\n### Manual Deployment\n\n1. Create a [balenaCloud account](https://dashboard.balena-cloud.com) and application\n2. Flash a device with balenaOS\n3. Clone this repository\n4. Push the project to your balena application using the [balena CLI](https://github.com/balena-io/balena-cli)\n\n## Configuration\n\n### Environment Variables\n\nEnvironment Variables can be applied to all services in an application, or only one service, and can be applied fleet-wide to apply to multiple devices.\n\n- `TZ`: Inform services of the [timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) in your location.\n\n### Remote Access\n\n#### Via Tailscale\n\n1. Provide the `TS_AUTHKEY` environment variable\n2. Access services via `https://${TS_CERT_DOMAIN}:${service_port}`\n\nRead more at \u003chttps://tailscale.com/blog/docker-tailscale-guide\u003e and \u003chttps://tailscale.com/kb/1282/docker\u003e\n\n#### Via Nginx\n\n1. Add proxy hosts via `http:${service-name}:${service-port}`\n2. Set up custom domains and SSL certificates as needed\n\nRead more at \u003chttps://nginxproxymanager.com/\u003e\n\n#### Via Docktail\n\nDocktail automatically exposes services via Tailscale based on Docker labels.\nBefore using Docktail, configure your Tailscale admin console at \u003chttps://login.tailscale.com/admin/services\u003e.\n\n1. Create service definitions (Services → Add service):\n\n   Create a service for each application you want to expose with port `443`:\n\n   - `duplicati-mediaserver`\n   - `jellyfin`\n   - `netdata-mediaserver`\n   - `nginx-mediaserver`\n   - `nzbhydra`\n   - `plex`\n   - `profilarr`\n   - `prowlarr`\n   - `radarr`\n   - `sabnzbd`\n   - `sonarr`\n   - `syncthing-mediaserver`\n   - `tautulli`\n\n2. (Optional) Configure service tags:\n\n   - Navigate to Access Controls\n   - Add tags for service identification (e.g., `tag:mediaserver-service`)\n   - Tag your Docker host (e.g., `tag:mediaserver`)\n\n3. (Recommended) Enable auto-approval:\n\n   - Navigate to Access Controls and edit your ACL policy\n   - Add auto-approvers to skip manual approval for service advertisements:\n\n   ```json\n   {\n     \"autoApprovers\": {\n       \"services\": {\n         \"tag:mediaserver-service\": [\"tag:mediaserver\"]\n       }\n     }\n   }\n   ```\n\n   - This allows devices tagged `tag:mediaserver` to automatically advertise services tagged `tag:mediaserver-service`\n\nRead more at \u003chttps://github.com/marvinvr/docktail\u003e and \u003chttps://tailscale.com/kb/1552/tailscale-services\u003e\n\n## Services\n\nEach service below includes its forward host and port, along with basic setup instructions.\\\nServices can be disabled by setting the `DISABLE` environment variable to a truthy value.\n\n### Duplicati\n\n- Forward host and port: `http://duplicati:8200`\n- Set a password with the `DUPLICATI__WEBSERVICE_PASSWORD` environment variable\n- Configure backups using sources from `/volumes/`\n\nRead more at \u003chttps://docs.linuxserver.io/images/docker-duplicati\u003e\n\n### Jellyfin\n\n- Forward host and port: `http://jellyfin:8096`\n- Set `JELLYFIN_PublishedServerUrl` to your public server URL\n- Create libraries using folders in `/downloads/`\n\nRead more at \u003chttps://docs.linuxserver.io/images/docker-jellyfin\u003e\n\n### Netdata\n\n- Forward host and port: `http://netdata:19999`\n- Set `PGID` environment variable (see README for details)\n\nRead more at \u003chttps://hub.docker.com/r/netdata/netdata\u003e\n\n### Nginx\n\n- Forward host and port: `http://nginx:81`\n- Default credentials:\n  - Email: `admin@example.com`\n  - Password: `changeme`\n\nRead more at \u003chttps://nginxproxymanager.com/\u003e\n\n### Nzbhydra\n\n- Forward host and port: `http://nzbhydra:5076`\n\nRead more at \u003chttps://docs.linuxserver.io/images/docker-nzbhydra\u003e\n\n### Plex\n\n- Forward host and port: `http://plex:32400`\n- Set `PLEX_CLAIM` environment variable (obtain from \u003chttps://plex.tv/claim\u003e)\n- Create libraries using folders in `/downloads/`\n\nRead more at \u003chttps://docs.linuxserver.io/images/docker-plex\u003e\n\n### Profilarr\n\n- Forward host and port: `http://profilarr:6868`\n- Configuration management tool for Radarr/Sonarr\n- Automates importing and version control of custom formats and quality profiles\n\nRead more at \u003chttps://dictionarry.dev/profilarr-setup/installation\u003e\n\n### Prowlarr\n\n- Forward host and port: `http://prowlarr:9696`\n\nRead more at \u003chttps://docs.linuxserver.io/images/docker-prowlarr\u003e\n\n### Radarr\n\n- Forward host and port: `http://radarr:7878`\n- Set base path to `/downloads/movies`\n\nRead more at \u003chttps://docs.linuxserver.io/images/docker-radarr\u003e\n\n### Sabnzbd\n\n- Forward host and port: `http://sabnzbd:8080`\n- Set download folders:\n  - Temporary: `/downloads/sabnzbd/incomplete`\n  - Completed: `/downloads/sabnzbd/complete`\n\nRead more at \u003chttps://docs.linuxserver.io/images/docker-sabnzbd\u003e\n\n### Sonarr\n\n- Forward host and port: `http://sonarr:8989`\n- Set base path to `/downloads/tv`\n\nRead more at \u003chttps://docs.linuxserver.io/images/docker-sonarr\u003e\n\n### Syncthing\n\n- Forward host and port: `http://syncthing:8384`\n- Configure syncs using sources from `/volumes/`\n\nRead more at \u003chttps://docs.linuxserver.io/images/docker-syncthing\u003e\n\n### Tautulli\n\n- Forward host and port: `http://tautulli:8181`\n- Set Plex IP Address/Hostname to `plex` and port to `32400`\n\nRead more at \u003chttps://docs.linuxserver.io/images/docker-tautulli\u003e\n\n## Contributing\n\nPlease open an issue or submit a pull request with any features, fixes, or changes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fklutchell%2Fbalena-mediaserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fklutchell%2Fbalena-mediaserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fklutchell%2Fbalena-mediaserver/lists"}