{"id":13466970,"url":"https://github.com/jellyfin/jellyfin","last_synced_at":"2026-10-10T10:04:22.329Z","repository":{"id":37318589,"uuid":"161012019","full_name":"jellyfin/jellyfin","owner":"jellyfin","description":"The Free Software Media System - Server Backend \u0026 API","archived":false,"fork":false,"pushed_at":"2026-10-02T20:30:19.000Z","size":78521,"stargazers_count":57750,"open_issues_count":734,"forks_count":5576,"subscribers_count":375,"default_branch":"master","last_synced_at":"2026-10-04T04:25:52.565Z","etag":null,"topics":["csharp","dotnet","hacktoberfest","jellyfin"],"latest_commit_sha":null,"homepage":"https://jellyfin.org","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jellyfin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","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,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null},"funding":{"open_collective":"jellyfin"}},"created_at":"2018-12-09T06:36:45.000Z","updated_at":"2026-10-04T03:44:07.000Z","dependencies_parsed_at":"2026-09-25T02:18:29.251Z","dependency_job_id":null,"html_url":"https://github.com/jellyfin/jellyfin","commit_stats":{"total_commits":20282,"total_committers":1401,"mean_commits":"14.476802284082797","dds":0.5886500345133616,"last_synced_commit":"282784cbb6fe203b87a6f2c673454ac8d3da82fa"},"previous_names":[],"tags_count":117,"template":false,"template_full_name":null,"purl":"pkg:github/jellyfin/jellyfin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jellyfin%2Fjellyfin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jellyfin%2Fjellyfin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jellyfin%2Fjellyfin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jellyfin%2Fjellyfin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jellyfin","download_url":"https://codeload.github.com/jellyfin/jellyfin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jellyfin%2Fjellyfin/sbom","scorecard":{"id":514729,"data":{"date":"2025-08-11","repo":{"name":"github.com/jellyfin/jellyfin","commit":"84cde7383fa81ca717d0a5b8305ee7eda28f7a8b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.9,"checks":[{"name":"Code-Review","score":5,"reason":"Found 5/9 approved changesets -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 10 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Dangerous-Workflow","score":0,"reason":"dangerous workflow patterns detected","details":["Warn: untrusted code checkout '${{ github.event.pull_request.head.sha }}': .github/workflows/ci-compat.yml:42","Warn: untrusted code checkout '${{ github.event.pull_request.head.sha }}': .github/workflows/ci-compat.yml:13","Warn: untrusted code checkout '${{ github.event.pull_request.head.sha }}': .github/workflows/ci-openapi.yml:18","Warn: untrusted code checkout '${{ github.event.pull_request.head.sha }}': .github/workflows/ci-openapi.yml:43"],"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel permissions set to 'read-all': .github/workflows/ci-compat.yml:11","Info: jobLevel permissions set to 'read-all': .github/workflows/ci-compat.yml:40","Info: jobLevel permissions set to 'read-all': .github/workflows/ci-openapi.yml:16","Info: jobLevel permissions set to 'read-all': .github/workflows/ci-openapi.yml:41","Warn: no topLevel permission defined: .github/workflows/ci-codeql-analysis.yml:1","Info: found token with 'none' permissions: .github/workflows/ci-compat.yml:1","Info: found token with 'none' permissions: .github/workflows/ci-openapi.yml:1","Warn: no topLevel permission defined: .github/workflows/ci-tests.yml:1","Info: found token with 'none' permissions: .github/workflows/commands.yml:1","Warn: topLevel 'actions' permission set to 'write': .github/workflows/issue-stale.yml:11","Warn: no topLevel permission defined: .github/workflows/issue-template-check.yml:1","Info: found token with 'none' permissions: .github/workflows/project-automation.yml:1","Info: found token with 'none' permissions: .github/workflows/pull-request-conflict.yml:1","Warn: topLevel 'actions' permission set to 'write': .github/workflows/pull-request-stale.yaml:10","Warn: no topLevel permission defined: .github/workflows/release-bump-version.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/jellyfin/.github/SECURITY.md:1","Info: Found linked content: github.com/jellyfin/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/jellyfin/.github/SECURITY.md:1","Info: Found text in security policy: github.com/jellyfin/.github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":8,"reason":"dependency not pinned by hash detected -- score normalized to 8","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci-openapi.yml:97: update your workflow using https://app.stepsecurity.io/secureworkflow/jellyfin/jellyfin/ci-openapi.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release-bump-version.yaml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/jellyfin/jellyfin/release-bump-version.yaml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/commands.yml:53","Warn: pipCommand not pinned by hash: .github/workflows/issue-template-check.yml:23","Info:  34 out of  34 GitHub-owned GitHubAction dependencies pinned","Info:  20 out of  22 third-party GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (26) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T01:31:53.108Z","repository_id":37318589,"created_at":"2025-08-20T01:31:53.108Z","updated_at":"2025-08-20T01:31:53.108Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":343072799,"owners_count":38003864,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-04T02:00:06.888Z","response_time":127,"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":["csharp","dotnet","hacktoberfest","jellyfin"],"created_at":"2024-07-31T15:00:51.861Z","updated_at":"2026-10-10T10:04:22.323Z","avatar_url":"https://github.com/jellyfin.png","language":"C#","funding_links":["https://opencollective.com/jellyfin"],"categories":["Movie \u0026 TV","C#","C# #","Multimedia","Uncategorized","By Industry","C\\#","其他","Apps","hacktoberfest","HarmonyOS","Application Recommendation","Media","置顶","Audio and Video Tools","C#（1885）","dotnet","By Language","csharp","🎬 Video Processing","オーディオ・ビデオツール","Table of Contents","User Interface","Video \u0026 Media Players"],"sub_categories":["Video Server","Media Servers","Uncategorized","Web Development","网络服务_其他","MediaManagement","Windows Manager","📽️ Media Management","08、家庭与物联网","Other","File Sharing","Business \u0026 Enterprise","ファイル共有","Media Management","Applications and End User Tools"],"readme":"\u003ch1 align=\"center\"\u003eJellyfin\u003c/h1\u003e\n\u003ch3 align=\"center\"\u003eThe Free Software Media System\u003c/h3\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n\u003cimg alt=\"Logo Banner\" src=\"https://raw.githubusercontent.com/jellyfin/jellyfin-ux/master/branding/SVG/banner-logo-solid.svg?sanitize=true\"/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003ca href=\"https://github.com/jellyfin/jellyfin\"\u003e\u003cimg alt=\"GPL 2.0 License\" src=\"https://img.shields.io/github/license/jellyfin/jellyfin.svg\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/jellyfin/jellyfin/releases\"\u003e\u003cimg alt=\"Current Release\" src=\"https://img.shields.io/github/release/jellyfin/jellyfin.svg\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/?utm_source=widget\"\u003e\u003cimg alt=\"Translation Status\" src=\"https://translate.jellyfin.org/widgets/jellyfin/-/jellyfin-core/svg-badge.svg\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://hub.docker.com/r/jellyfin/jellyfin\"\u003e\u003cimg alt=\"Docker Pull Count\" src=\"https://img.shields.io/docker/pulls/jellyfin/jellyfin.svg\"/\u003e\u003c/a\u003e\n\u003cbr/\u003e\n\u003ca href=\"https://opencollective.com/jellyfin\"\u003e\u003cimg alt=\"Donate\" src=\"https://img.shields.io/opencollective/all/jellyfin.svg?label=backers\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://features.jellyfin.org\"\u003e\u003cimg alt=\"Submit Feature Requests\" src=\"https://img.shields.io/badge/fider-vote%20on%20features-success.svg\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://matrix.to/#/#jellyfinorg:matrix.org\"\u003e\u003cimg alt=\"Chat on Matrix\" src=\"https://img.shields.io/matrix/jellyfinorg:matrix.org.svg?logo=matrix\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/jellyfin/jellyfin/releases.atom\"\u003e\u003cimg alt=\"Release RSS Feed\" src=\"https://img.shields.io/badge/rss-releases-ffa500?logo=rss\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/jellyfin/jellyfin/commits/master.atom\"\u003e\u003cimg alt=\"Master Commits RSS Feed\" src=\"https://img.shields.io/badge/rss-commits-ffa500?logo=rss\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\nJellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET platform to enable full cross-platform support.\n\nThere are no strings attached, no premium licenses or features, and no hidden agendas: just a team that wants to build something better and work together to achieve it. We welcome anyone who is interested in joining us in our quest!\n\nFor further details, please see [our documentation page](https://jellyfin.org/docs/). To receive the latest updates, get help with Jellyfin, and join the community, please visit [one of our communication channels](https://jellyfin.org/docs/general/getting-help). For more information about the project, please see our [about page](https://jellyfin.org/docs/general/about).\n\n\u003cstrong\u003eWant to get started?\u003c/strong\u003e\u003cbr/\u003e\nCheck out our \u003ca href=\"https://jellyfin.org/downloads\"\u003edownloads page\u003c/a\u003e or our \u003ca href=\"https://jellyfin.org/docs/general/installation/\"\u003einstallation guide\u003c/a\u003e, then see our \u003ca href=\"https://jellyfin.org/docs/general/quick-start\"\u003equick start guide\u003c/a\u003e. You can also \u003ca href=\"https://jellyfin.org/docs/general/installation/source\"\u003ebuild from source\u003c/a\u003e.\u003cbr/\u003e\n\n\u003cstrong\u003eSomething not working right?\u003c/strong\u003e\u003cbr/\u003e\nOpen an \u003ca href=\"https://jellyfin.org/docs/general/contributing/issues\"\u003eIssue\u003c/a\u003e on GitHub.\u003cbr/\u003e\n\n\u003cstrong\u003eWant to contribute?\u003c/strong\u003e\u003cbr/\u003e\nCheck out our \u003ca href=\"https://jellyfin.org/contribute\"\u003econtributing choose-your-own-adventure\u003c/a\u003e to see where you can help, then see our \u003ca href=\"https://jellyfin.org/docs/general/contributing/\"\u003econtributing guide\u003c/a\u003e and our \u003ca href=\"https://jellyfin.org/docs/general/community-standards\"\u003ecommunity standards\u003c/a\u003e.\u003cbr/\u003e\n\n\u003cstrong\u003eNew idea or improvement?\u003c/strong\u003e\u003cbr/\u003e\nCheck out our \u003ca href=\"https://features.jellyfin.org/?view=most-wanted\"\u003efeature request hub\u003c/a\u003e.\u003cbr/\u003e\n\n\u003cstrong\u003eDon't see Jellyfin in your language?\u003c/strong\u003e\u003cbr/\u003e\nCheck out our \u003ca href=\"https://translate.jellyfin.org\"\u003eWeblate instance\u003c/a\u003e to help translate Jellyfin and its subprojects.\u003cbr/\u003e\n\n\u003ca href=\"https://translate.jellyfin.org/engage/jellyfin/?utm_source=widget\"\u003e\n\u003cimg src=\"https://translate.jellyfin.org/widgets/jellyfin/-/jellyfin-web/multi-auto.svg\" alt=\"Detailed Translation Status\"/\u003e\n\u003c/a\u003e\n\n---\n\n## Jellyfin Server\n\nThis repository contains the code for Jellyfin's backend server. Note that this is only one of many projects under the Jellyfin GitHub [organization](https://github.com/jellyfin/) on GitHub. If you want to contribute, you can start by checking out our [documentation](https://jellyfin.org/docs/general/contributing/index.html) to see what to work on.\n\n## Server Development\n\nThese instructions will help you get set up with a local development environment in order to contribute to this repository. Before you start, please be sure to completely read our [guidelines on development contributions](https://jellyfin.org/docs/general/contributing/development.html). Note that this project is supported on all major operating systems except FreeBSD, which is still incompatible.\n\n### Prerequisites\n\nBefore the project can be built, you must first install the [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet) on your system.\n\nInstructions to run this project from the command line are included here, but you will also need to install an IDE if you want to debug the server while it is running. Any IDE that supports .NET 6 development will work, but two options are recent versions of [Visual Studio](https://visualstudio.microsoft.com/downloads/) (at least 2022) and [Visual Studio Code](https://code.visualstudio.com/Download).\n\n[ffmpeg](https://github.com/jellyfin/jellyfin-ffmpeg) will also need to be installed.\n\n### Cloning the Repository\n\nAfter dependencies have been installed you will need to clone a local copy of this repository. If you just want to run the server from source you can clone this repository directly, but if you are intending to contribute code changes to the project, you should [set up your own fork](https://jellyfin.org/docs/general/contributing/development.html#set-up-your-copy-of-the-repo) of the repository. The following example shows how you can clone the repository directly over HTTPS.\n\n```bash\ngit clone https://github.com/jellyfin/jellyfin.git\n```\n\n### Installing the Web Client\n\nThe server is configured to host the static files required for the [web client](https://github.com/jellyfin/jellyfin-web) in addition to serving the backend by default. Before you can run the server, you will need to get a copy of the web client since they are not included in this repository directly.\n\nNote that it is recommended for development to [host the web client separately](#hosting-the-web-client-separately) from the web server with some additional configuration, in which case you can skip this step.\n\nThere are two options to get the files for the web client.\n\n1. Build them from source following the instructions on the [jellyfin-web repository](https://github.com/jellyfin/jellyfin-web)\n2. Get the pre-built files from an existing installation of the server. For example, with a Windows server installation the client files are located at `C:\\Program Files\\Jellyfin\\Server\\jellyfin-web`\n\n### Running The Server\n\nThe following instructions will help you get the project up and running via the command line, or your preferred IDE.\n\n#### Running With Visual Studio\n\nTo run the project with Visual Studio you can open the Solution (`.sln`) file and then press `F5` to run the server.\n\n#### Running With Visual Studio Code\n\nTo run the project with Visual Studio Code you will first need to open the repository directory with Visual Studio Code using the `Open Folder...` option.\n\nSecond, you need to [install the recommended extensions for the workspace](https://code.visualstudio.com/docs/editor/extension-gallery#_recommended-extensions). Note that extension recommendations are classified as either \"Workspace Recommendations\" or \"Other Recommendations\", but only the \"Workspace Recommendations\" are required.\n\nAfter the required extensions are installed, you can run the server by pressing `F5`.\n\n#### Running From the Command Line\n\nTo run the server from the command line you can use the `dotnet run` command. The example below shows how to do this if you have cloned the repository into a directory named `jellyfin` (the default directory name) and should work on all operating systems.\n\n```bash\ncd jellyfin                          # Move into the repository directory\ndotnet run --project Jellyfin.Server --webdir /absolute/path/to/jellyfin-web/dist # Run the server startup project\n```\n\nA second option is to build the project and then run the resulting executable file directly. When running the executable directly you can easily add command line options. Add the `--help` flag to list details on all the supported command line options.\n\n1. Build the project\n\n```bash\ndotnet build                       # Build the project\ncd Jellyfin.Server/bin/Debug/net10.0 # Change into the build output directory\n```\n\n2. Execute the build output. On Linux, Mac, etc. use `./jellyfin` and on Windows use `jellyfin.exe`.\n\n#### Accessing the Hosted Web Client\n\nIf the Server is configured to host the Web Client, and the Server is running, the Web Client can be accessed at `http://localhost:8096` by default.\n\nAPI documentation can be viewed at `http://localhost:8096/api-docs/swagger/index.html`\n\n\n### Running from GitHub Codespaces\n\nAs Jellyfin will run on a container on a GitHub hosted server, JF needs to handle some things differently.\n\n**NOTE:** Depending on the selected configuration (if you just click 'create codespace' it will create a default configuration one) it might take 20-30 seconds to load all extensions and prepare the environment while VS Code is already open. Just give it some time and wait until you see `Downloading .NET version(s) 7.0.15~x64 ...... Done!` in the output tab.\n\n**NOTE:** If you want to access the JF instance from outside, like with a WebClient on another PC, remember to set the \"ports\" in the lower VS Code window to public.\n\n**NOTE:** When first opening the server instance with any WebUI, you will be sent to the login instead of the setup page. Refresh the login page once and you should be redirected to the Setup.\n\nThere are two configurations for you to choose from.\n#### Default - Development Jellyfin Server\nThis creates a container that has everything to run and debug the Jellyfin Media server but does not setup anything else. Each time you create a new container you have to run through the whole setup again. There is also no ffmpeg, webclient or media preloaded. Use the `.NET Launch (nowebclient)` launch config to start the server.\n\n\u003e Keep in mind that as this has no web client you have to connect to it via an external client. This can be just another codespace container running the WebUI. vuejs does not work from the get-go as it does not support the setup steps.\n\n#### Development Jellyfin Server ffmpeg\nthis extends the default server with a default installation of ffmpeg6 though the means described here: https://jellyfin.org/docs/general/installation/linux#repository-manual\nIf you want to install a specific ffmpeg version, follow the comments embedded in the `.devcontainer/Dev - Server Ffmpeg/install.ffmpeg.sh` file.\n\nUse the `ghcs .NET Launch (nowebclient, ffmpeg)` launch config to run with the jellyfin-ffmpeg enabled.\n\n\n### Running The Tests\n\nThis repository also includes unit tests that are used to validate functionality as part of a CI pipeline on Azure. There are several ways to run these tests.\n\n1. Run tests from the command line using `dotnet test`\n2. Run tests in Visual Studio using the [Test Explorer](https://docs.microsoft.com/en-us/visualstudio/test/run-unit-tests-with-test-explorer)\n3. Run individual tests in Visual Studio Code using the associated [CodeLens annotation](https://github.com/OmniSharp/omnisharp-vscode/wiki/How-to-run-and-debug-unit-tests)\n\n### Advanced Configuration\n\nThe following sections describe some more advanced scenarios for running the server from source that build upon the standard instructions above.\n\n#### Hosting The Web Client Separately\n\nIt is not necessary to host the frontend web client as part of the backend server. Hosting these two components separately may be useful for frontend developers who would prefer to host the client in a separate webpack development server for a tighter development loop. See the [jellyfin-web](https://github.com/jellyfin/jellyfin-web#getting-started) repo for instructions on how to do this.\n\nTo instruct the server not to host the web content, there is a `nowebclient` configuration flag that must be set. This can be specified using the command line\nswitch `--nowebclient` or the environment variable `JELLYFIN_NOWEBCONTENT=true`.\n\nSince this is a common scenario, there is also a separate launch profile defined for Visual Studio called `Jellyfin.Server (nowebcontent)` that can be selected from the 'Start Debugging' dropdown in the main toolbar.\n\n**NOTE:** The setup wizard cannot be run if the web client is hosted separately.\n\n---\n\u003cp align=\"center\"\u003e\nThis project is supported by:\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003ca href=\"https://www.jetbrains.com\"\u003e\u003cimg src=\"https://gist.githubusercontent.com/anthonylavado/e8b2403deee9581e0b4cb8cd675af7db/raw/199ae22980ef5da64882ec2de3e8e5c03fe535b8/jetbrains.svg\" height=\"50px\" alt=\"JetBrains logo\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjellyfin%2Fjellyfin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjellyfin%2Fjellyfin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjellyfin%2Fjellyfin/lists"}