{"id":20499889,"url":"https://github.com/sgeri/homemedia","last_synced_at":"2026-02-19T12:03:05.638Z","repository":{"id":161189445,"uuid":"561500918","full_name":"SGeri/homemedia","owner":"SGeri","description":"The complete solution for ones home media needs","archived":false,"fork":false,"pushed_at":"2022-12-13T19:50:39.000Z","size":73,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-16T08:47:55.902Z","etag":null,"topics":["discord","discord-bot","home","homelab","jellyfin","media","ncore","torrent"],"latest_commit_sha":null,"homepage":"https://github.com/SGeri/homemedia","language":"JavaScript","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/SGeri.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}},"created_at":"2022-11-03T20:39:07.000Z","updated_at":"2025-03-19T12:51:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"c7830879-d3d3-4f84-b881-8ad9ac5ca3a3","html_url":"https://github.com/SGeri/homemedia","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SGeri/homemedia","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SGeri%2Fhomemedia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SGeri%2Fhomemedia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SGeri%2Fhomemedia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SGeri%2Fhomemedia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SGeri","download_url":"https://codeload.github.com/SGeri/homemedia/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SGeri%2Fhomemedia/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29612510,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T10:52:55.328Z","status":"ssl_error","status_checked_at":"2026-02-19T10:52:26.323Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["discord","discord-bot","home","homelab","jellyfin","media","ncore","torrent"],"created_at":"2024-11-15T18:18:59.766Z","updated_at":"2026-02-19T12:03:05.583Z","avatar_url":"https://github.com/SGeri.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cbr/\u003e\n    \u003ca href=\"https://github.com/SGeri/homemedia\" target=\"_blank\"\u003e\u003cimg width=\"800px\" src=\"https://i.imgur.com/3b962uD.png\" /\u003e\u003c/a\u003e\n    \u003ch2 align=\"center\"\u003eHomeMedia\u003c/h2\u003e\n    \u003cp align=\"center\"\u003e\n        A complete solution for your home media needs.\n    \u003c/p\u003e\n    \u003cp align=\"center\" style=\"align: center;\"\u003e\n        \u003ca href=\"https://github.com/SGeri/homemedia\"\u003e\n            \u003cimg alt=\"stars\" src=\"https://img.shields.io/github/stars/SGeri/homemedia?style=for-the-badge\"\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://github.com/SGeri/homemedia\"\u003e\n            \u003cimg src=\"https://img.shields.io/badge/version-1.0.0-\u003cCOLOR\u003e?style=for-the-badge\" alt=\"Bundle Size\"/\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://github.com/SGeri/homemedia\"\u003e\n            \u003cimg src=\"https://img.shields.io/badge/node-16+-blue?style=for-the-badge\" alt=\"Downloads\" /\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://github.com/SGeri/homemedia\"\u003e\n            \u003cimg src=\"https://img.shields.io/github/license/SGeri/homemedia?style=for-the-badge\" alt=\"ISC\" /\u003e\n        \u003c/a\u003e\n   \u003c/p\u003e\n\u003c/p\u003e\n\n## Overview\n\nThis project utilizes a few packages and services in order to create the best home media experience. Even for everyday users it allows to use a very simple slash command based system on Discord to download movies and shows, categorized them using a special media management system called Jellyfin.\n\n### Used technologies\n\nThe Media Server is made using [Jellyfin](https://jellyfin.org) with [Docker](https://www.docker.com) and for easy container management [Portainer](https://www.portainer.io). There is also a Discord client for easy communcation with the torrent provider.\n\n## Installation\n\n### 0. Prerequisites\n\n- Server machine for deploying Jellyfin and hosting the Discord application (Linux is advised)\n\n### 1. Installation of Portainer\n\nPortainer is a great service for running multiple docker containers and organizing them into stacks.\nA short guide of installation can be found [here](https://docs.portainer.io/start/install/server/docker/linux).\n\n### 2. Installation of Jellyfin using docker-compose.yml\n\nJellyfin is the core of this project and it serves as a Media Management System for the users.\nThe docker-compose.yml file for my Jellyfin setup is located in the [docs/docker-compose.yml](https://github.com/SGeri/homemedia/blob/main/docs/docker-compose.yml).\n\n### 3. Setup the Discord application\n\nCreate a Discord Application on the [Discord Developer Portal](https://discord.com/developers/applications) then add Bot features and copy the authentication token. It will be needed later so save it! Also don't forget to store the application's app id! ;)\n\n### 4. Create local Discord application\n\n```\ngit clone https://github.com/SGeri/homemedia.git\ncd homemedia\nnpm install\n```\n\n#### 5. Configure environment variables\n\nIn the root directory copy the .env.example file:\n\n```\ncp .env.example .env\n```\n\nFill out the new newly created environmental file with your nCore credentials ([here](https://www.npmjs.com/package/ncore-scraper) is a guide for generating nCore \"unsafe mode\" password, just scroll down to the \"_Get hashed nCore password_\" section), Discord application token, ID and a channel ID which is used for displaying global errors. Also you can specify the path of the downloaded media using the _MEDIA_LOCATION_ variable. There is an opitonal variable _SCRAPER_DEBUG_ if you want to enable advanced logging for scraping nCore torrents.\n\n### 6. Deploying the application\n\nI advise you to use PM2 for deploying NodeJS applications because of how reliable and easy-to-use it is. [Here](https://pm2.keymetrics.io/docs/usage/quick-start/) is a short guide for installing it, and a [StackOverFlow answer](https://stackoverflow.com/a/37775318) for quickly setting up a the project.\n\n### 7. Have fun!\n\n## Final words\n\nIf you have any questions or ideas let me know! You can reach me out on Discord (SGeri#0731) or by creating an issue here on Github. I'm not planning on actively continuing any of my side projects but I'll answer as soon as I can!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsgeri%2Fhomemedia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsgeri%2Fhomemedia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsgeri%2Fhomemedia/lists"}