{"id":32374790,"url":"https://github.com/falleng0d/media-server","last_synced_at":"2026-02-23T08:01:30.495Z","repository":{"id":311897780,"uuid":"1043664787","full_name":"falleng0d/media-server","owner":"falleng0d","description":"Docker-based media server solution featuring automated downloading, management, and streaming of movies, TV shows, and Anime. Plex media streaming server, Automated TV/movie downloading (Sonarr/Radarr), Multi-indexer support (Prowlarr/Jackett), User request management (Jellyseerr), Anime collection management (Shoko)","archived":false,"fork":false,"pushed_at":"2026-02-22T18:11:34.000Z","size":64,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-22T23:15:44.212Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jinja","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/falleng0d.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-24T11:06:14.000Z","updated_at":"2026-02-22T18:11:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"dcbe5f56-3d6d-4df3-b646-d01371d6d354","html_url":"https://github.com/falleng0d/media-server","commit_stats":null,"previous_names":["falleng0d/media-server"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/falleng0d/media-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/falleng0d%2Fmedia-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/falleng0d%2Fmedia-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/falleng0d%2Fmedia-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/falleng0d%2Fmedia-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/falleng0d","download_url":"https://codeload.github.com/falleng0d/media-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/falleng0d%2Fmedia-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29739753,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T07:44:07.782Z","status":"ssl_error","status_checked_at":"2026-02-23T07:44:07.432Z","response_time":90,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-24T22:42:54.467Z","updated_at":"2026-02-23T08:01:30.483Z","avatar_url":"https://github.com/falleng0d.png","language":"Jinja","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Media Server Automation\n\n## Setup Ansible (Host)\n\n### Install\n\n```bash\nsudo apt update\nsudo apt install software-properties-common\nsudo add-apt-repository --yes --update ppa:ansible/ansible\nsudo apt install ansible\n```\n\n### Config\n\n```bash\nansible-config init --disabled -t all \u003e ansible.cfg\nmv ansible.cfg /etc/ansible/ansible.cfg\ncat /etc/ansible/ansible.cfg\n```\n\n# Execute Playbook\n\n```bash\nansible-playbook -i hostname, -K playbook.yml\n```\n\n# Dry Run\n\n```bash\nansible-playbook -i hostname, -K playbook.yml --check\n```\n\n# Test Connection\n\n```bash\nansible -i hostname, -m ping all\n```\n\n# Services Overview\n\n## Service Architecture\n\nThe stack consists of media management, indexing, and streaming services connected through Docker networks:\n- **mediarr**: Main network for media automation services\n- **transmission**: External network for torrent client connectivity\n- **firefox**: Bridge network for Firefox container\n\n## Services Overview\n\n### 🎬 Media Streaming\n\n#### Jellyfin\n- **Purpose**: Media server for streaming movies, TV shows, and anime\n- **Access**: `http://127.0.0.1:8080` (default Jellyfin port)\n- **Image**: `jellyfin/jellyfin`\n- **Configuration**: `/docker/jellyfin/etc` → `/etc/jellyfin`\n- **Data Directories**:\n  - Cache: `/docker/jellyfin/var-cache` → `/var/cache/jellyfin`\n  - Library: `/docker/jellyfin/var-lib` → `/var/lib/jellyfin`\n  - Logs: `/docker/jellyfin/var-log` → `/var/log/jellyfin`\n- **Media Access**: `media` volume → `/mnt/media`\n- **Hardware Acceleration**: Intel GPU (`/dev/dri/renderD128`)\n\n### 📺 Media Management\n\n#### Sonarr (TV Shows)\n- **Purpose**: Automated TV show downloading and management\n- **Access**: `http://127.0.0.1:8989`\n- **Image**: `lscr.io/linuxserver/sonarr:latest`\n- **Configuration**: `/docker/sonarr` → `/config`\n- **Media Access**: \n  - Library: `media` volume → `/mnt/media`\n  - Downloads: `completed` volume → `/mnt/downloads`\n- **Networks**: `mediarr`, `transmission`\n- **Dependencies**: Prowlarr, Jackett, Jellyfin\n\n#### Radarr (Movies)\n- **Purpose**: Automated movie downloading and management\n- **Access**: `http://127.0.0.1:7878`\n- **Image**: `lscr.io/linuxserver/radarr:latest`\n- **Configuration**: `/docker/radarr` → `/config`\n- **Media Access**:\n  - Library: `media` volume → `/mnt/media`\n  - Downloads: `completed` volume → `/mnt/downloads`\n- **Networks**: `mediarr`, `transmission`\n- **Dependencies**: Prowlarr, Jackett, Jellyfin\n\n#### Bazarr (Subtitles)\n- **Purpose**: Automated subtitle downloading for movies and TV shows\n- **Access**: `http://127.0.0.1:6767`\n- **Image**: `lscr.io/linuxserver/bazarr:latest`\n- **Configuration**: `/docker/bazarr` → `/config`\n- **Media Access**: `media` volume → `/mnt/media`\n- **Networks**: `mediarr`\n- **Dependencies**: Sonarr, Radarr\n\n### 🔍 Indexers \u0026 Search\n\n#### Prowlarr\n- **Purpose**: Indexer manager for torrent and usenet sites\n- **Access**: `http://127.0.0.1:9696`\n- **Image**: `linuxserver/prowlarr:latest`\n- **Configuration**: `/docker/prowlarr` → `/config`\n- **Networks**: `mediarr`\n- **Dependencies**: Flaresolverr\n\n#### Jackett\n- **Purpose**: Additional torrent indexer proxy\n- **Access**: `http://127.0.0.1:9117`\n- **Image**: `lscr.io/linuxserver/jackett:latest`\n- **Configuration**: `/docker/jackett` → `/config`\n- **Downloads**: `completed` volume → `/downloads`\n- **Networks**: `mediarr`\n- **Dependencies**: Flaresolverr\n- **Environment**:\n  - Auto-update enabled\n  - Timezone: UTC\n\n#### Flaresolverr\n- **Purpose**: Cloudflare bypass proxy for indexers\n- **Access**: Internal service (no web UI)\n- **Image**: `ghcr.io/flaresolverr/flaresolverr:latest`\n- **Networks**: `mediarr`\n- **Environment Variables**:\n  - `LOG_LEVEL`: Configurable (default: info)\n  - `LOG_HTML`: Configurable (default: false)\n  - `CAPTCHA_SOLVER`: Configurable (default: none)\n\n### 🎯 Request Management\n\n#### Jellyseerr\n- **Purpose**: Media request management for users\n- **Access**: `http://127.0.0.1:5055`\n- **Image**: `fallenbagel/jellyseerr:latest`\n- **Configuration**: `/docker/jellyseerr` → `/app/config`\n- **Networks**: `mediarr`\n- **Dependencies**: Sonarr, Radarr\n\n### 🎌 Anime Management\n\n#### Shoko Server\n- **Purpose**: Anime collection management and metadata\n- **Access**: `http://127.0.0.1:8111`\n- **Image**: `ghcr.io/shokoanime/server:latest`\n- **Configuration**: `/docker/shoko` → `/home/shoko/.shoko`\n- **Media Access**:\n  - Anime Library: `animes` volume → `/mnt/anime`\n  - Import Directory: `media` volume → `/mnt/import`\n- **Networks**: `mediarr`\n- **Memory**: 256MB shared memory\n\n#### Plex\n- **Note**: Plex is not running on Docker. It is installed directly on the host.\n- **Purpose**: Media server for anime streaming\n- **Access**: `http://127.0.0.1:32400`\n- **Configuration**: `/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/`\n\n## Volume Mappings\n\n### Named Volumes\n- **media**: `${MEDIA_DRIVE}` → Main media storage\n- **completed**: `${MEDIA_DRIVE}/completed` → Download completion directory\n- **animes**: `${MEDIA_DRIVE}/Animes` → Anime-specific storage\n- **movies**: `${MEDIA_DRIVE}/Movies` → Movie-specific storage\n\n### Configuration Directories\nAll service configurations are stored under `/docker/[service-name]` on the host:\n\n```\n/docker/\n├── bazarr/          # Bazarr configuration\n├── jellyfin/        # Jellyfin configuration and data\n│   ├── etc/         # Jellyfin config files\n│   ├── var-cache/   # Jellyfin cache\n│   ├── var-lib/     # Jellyfin library database\n│   └── var-log/     # Jellyfin logs\n├── jellyseerr/      # Jellyseerr configuration\n├── jackett/         # Jackett configuration\n├── prowlarr/        # Prowlarr configuration\n├── radarr/          # Radarr configuration\n├── shoko/           # Shoko Server configuration\n└── sonarr/          # Sonarr configuration\n```\n\n## Network Architecture\n\n- **mediarr**: Primary network for media services communication\n- **transmission**: External network for torrent client integration\n- **firefox**: Isolated network for browser container\n\n## Service Dependencies\n\n```\nJellyfin (Media Server)\n├── Sonarr (TV) → Prowlarr, Jackett\n├── Radarr (Movies) → Prowlarr, Jackett\n└── Bazarr (Subtitles) → Sonarr, Radarr\n\nIndexers\n├── Prowlarr → Flaresolverr\n└── Jackett → Flaresolverr\n\nRequest Management\n└── Jellyseerr → Sonarr, Radarr\n\nAnime Management\n└── Shoko Server (Standalone)\n```\n\n## Environment Variables\n\nThe stack uses the following environment variable:\n- **MEDIA_DRIVE**: Base path for media storage (used in volume definitions)\n\nAdditional environment variables for Flaresolverr:\n- **LOG_LEVEL**: Logging verbosity (default: info)\n- **LOG_HTML**: HTML logging (default: false)\n- **CAPTCHA_SOLVER**: Captcha solving method (default: none)\n\n## Backup Considerations\n\n### Critical Configuration Directories\n- `/docker/` - All service configurations\n- Database files within each service's config directory\n\n### Media Content\n- `${MEDIA_DRIVE}` - All media files and downloads\n- Consider the size and backup strategy for large media collections\n\n## Maintenance Notes\n\n- All services use `restart: unless-stopped` for automatic recovery\n- Jackett has auto-update enabled\n- Hardware acceleration is configured for Jellyfin (Intel GPU)\n- Services are configured to run without explicit user mapping (using container defaults)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffalleng0d%2Fmedia-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffalleng0d%2Fmedia-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffalleng0d%2Fmedia-server/lists"}