{"id":42037769,"url":"https://github.com/johnpc/karaoke-for-jellyfin","last_synced_at":"2026-01-26T05:11:16.137Z","repository":{"id":305426752,"uuid":"1022841795","full_name":"johnpc/karaoke-for-jellyfin","owner":"johnpc","description":null,"archived":false,"fork":false,"pushed_at":"2025-12-30T20:37:05.000Z","size":4140,"stargazers_count":116,"open_issues_count":4,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-01-03T18:33:38.706Z","etag":null,"topics":["supported"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/johnpc.png","metadata":{"files":{"readme":"README-DOCKERHUB.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-07-20T00:30:10.000Z","updated_at":"2025-12-30T20:37:08.000Z","dependencies_parsed_at":"2025-07-20T03:44:57.259Z","dependency_job_id":"8964bd96-c28b-4841-b27c-af4bc98dd45c","html_url":"https://github.com/johnpc/karaoke-for-jellyfin","commit_stats":null,"previous_names":["johnpc/karaoke-for-jellyfin"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/johnpc/karaoke-for-jellyfin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnpc%2Fkaraoke-for-jellyfin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnpc%2Fkaraoke-for-jellyfin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnpc%2Fkaraoke-for-jellyfin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnpc%2Fkaraoke-for-jellyfin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/johnpc","download_url":"https://codeload.github.com/johnpc/karaoke-for-jellyfin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnpc%2Fkaraoke-for-jellyfin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28767049,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T03:54:34.369Z","status":"ssl_error","status_checked_at":"2026-01-26T03:54:33.031Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["supported"],"created_at":"2026-01-26T05:11:15.585Z","updated_at":"2026-01-26T05:11:16.129Z","avatar_url":"https://github.com/johnpc.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Karaoke For Jellyfin\n\nA web-based karaoke system that integrates with Jellyfin media server to provide karaoke functionality.\n\n## Quick Start\n\n### Using Docker Compose (Recommended)\n\n1. **Create a docker-compose.yml file:**\n\n```yaml\nversion: \"3.8\"\n\nservices:\n  karaoke-app:\n    image: mrorbitman/karaoke-for-jellyfin:latest\n    ports:\n      - \"3000:3000\"\n    environment:\n      # Jellyfin Configuration\n      - JELLYFIN_SERVER_URL=http://your-jellyfin-server:8096\n      - JELLYFIN_API_KEY=your_jellyfin_api_key_here\n      - JELLYFIN_USERNAME=your_jellyfin_username_here\n\n      # Optional: Lyrics Configuration\n      - LYRICS_PATH=/app/lyrics\n      - JELLYFIN_MEDIA_PATH=/app/media\n    volumes:\n      # Optional: Mount lyrics directory\n      - ./lyrics:/app/lyrics:ro\n      # Optional: Mount Jellyfin media directory\n      - /path/to/jellyfin/media:/app/media:ro\n    restart: unless-stopped\n    extra_hosts:\n      # Allow container to access host services\n      - \"host.docker.internal:host-gateway\"\n```\n\n2. **Start the application:**\n\n   ```bash\n   docker-compose up -d\n   ```\n\n3. **Access the application:**\n   - Mobile interface: http://localhost:3000\n   - TV display: http://localhost:3000/tv\n\n### Using Docker Run\n\n```bash\ndocker run -d \\\n  --name karaoke-app \\\n  -p 3000:3000 \\\n  -e JELLYFIN_SERVER_URL=http://your-jellyfin-server:8096 \\\n  -e JELLYFIN_API_KEY=your_api_key \\\n  -e JELLYFIN_USERNAME=your_username \\\n  --add-host host.docker.internal:host-gateway \\\n  mrorbitman/karaoke-for-jellyfin:latest\n```\n\n## Features\n\n- **Mobile Interface**: Search and queue songs from your phone\n- **TV Display**: Full-screen lyrics display and playback control\n- **Jellyfin Integration**: Leverages your existing Jellyfin media library\n- **Real-time Sync**: WebSocket-based real-time updates between devices\n- **Multi-platform**: Supports AMD64 and ARM64 architectures\n\n## Environment Variables\n\n| Variable              | Description                 | Required | Default       |\n| --------------------- | --------------------------- | -------- | ------------- |\n| `JELLYFIN_SERVER_URL` | URL to your Jellyfin server | Yes      | -             |\n| `JELLYFIN_API_KEY`    | Jellyfin API key            | Yes      | -             |\n| `JELLYFIN_USERNAME`   | Jellyfin username           | Yes      | -             |\n| `LYRICS_PATH`         | Path to lyrics folder       | No       | `/app/lyrics` |\n| `JELLYFIN_MEDIA_PATH` | Path to Jellyfin media      | No       | `/app/media`  |\n\n## Getting Your Jellyfin API Key\n\n1. Log into your Jellyfin server as an administrator\n2. Go to **Dashboard** → **API Keys**\n3. Click **New API Key**\n4. Give it a name (e.g., \"Karaoke App\")\n5. Copy the generated API key\n\n## Volume Mounts\n\n- **Lyrics Directory**: Mount your lyrics folder to `/app/lyrics` (read-only)\n- **Media Directory**: Mount your Jellyfin media folder to `/app/media` (read-only)\n\n## Network Configuration\n\nThe application needs to communicate with your Jellyfin server:\n\n- **Host Gateway**: Use `host.docker.internal` in your Jellyfin URL for localhost servers\n- **External Server**: Use the full URL/IP of your Jellyfin server\n- **Docker Network**: If Jellyfin is in another container, use a shared network\n\n## Supported Architectures\n\nThis image supports multiple architectures:\n\n- `linux/amd64` (x86_64)\n- `linux/arm64` (ARM64/AArch64)\n\n## Tags\n\n- `latest` - Latest stable release from main branch\n- `v1.0.0`, `v1.0`, `v1` - Semantic version tags\n- `main` - Latest development build\n\n## Health Check\n\nThe application exposes a health endpoint at `/api/health` for monitoring.\n\n## Troubleshooting\n\n### Common Issues\n\n1. **Cannot connect to Jellyfin server**\n   - Ensure `JELLYFIN_SERVER_URL` is accessible from within the container\n   - Use `host.docker.internal` instead of `localhost` if Jellyfin is on the host\n   - Check firewall settings\n\n2. **WebSocket connection issues**\n   - Ensure port 3000 is properly exposed\n   - Check if reverse proxy is configured correctly for WebSocket upgrades\n\n3. **Permission denied errors**\n   - The container runs as a non-root user (nextjs:nodejs)\n   - Ensure mounted volumes have appropriate permissions\n\n### Logs\n\nView application logs:\n\n```bash\ndocker logs karaoke-app\n```\n\n## Source Code\n\n- **GitHub**: [https://github.com/your-username/karaoke-for-jellyfin](https://github.com/your-username/karaoke-for-jellyfin)\n- **Issues**: Report bugs and feature requests on GitHub\n\n## License\n\nThis project is open source. See the repository for license details.\n\n---\n\n**Note**: This application requires a running Jellyfin server with audio files in your media library. Make sure your Jellyfin server is accessible from the Docker container.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnpc%2Fkaraoke-for-jellyfin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohnpc%2Fkaraoke-for-jellyfin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnpc%2Fkaraoke-for-jellyfin/lists"}