{"id":15510107,"url":"https://github.com/hashworks/sbf-for-srs","last_synced_at":"2026-05-07T23:31:04.793Z","repository":{"id":79513017,"uuid":"464617872","full_name":"hashworks/sbf-for-srs","owner":"hashworks","description":"Simple back- and frontend for Simple Realtime Server (SRS)","archived":false,"fork":false,"pushed_at":"2024-07-13T12:47:10.000Z","size":25,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-03T11:16:49.723Z","etag":null,"topics":["authentication","backend","frontend","mpegts","obs","rtmp","srs"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hashworks.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":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-28T19:34:17.000Z","updated_at":"2024-07-13T12:47:13.000Z","dependencies_parsed_at":"2023-02-27T19:46:32.527Z","dependency_job_id":null,"html_url":"https://github.com/hashworks/sbf-for-srs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hashworks/sbf-for-srs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashworks%2Fsbf-for-srs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashworks%2Fsbf-for-srs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashworks%2Fsbf-for-srs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashworks%2Fsbf-for-srs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hashworks","download_url":"https://codeload.github.com/hashworks/sbf-for-srs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashworks%2Fsbf-for-srs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32759871,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-07T02:14:30.463Z","status":"ssl_error","status_checked_at":"2026-05-07T02:14:29.405Z","response_time":62,"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":["authentication","backend","frontend","mpegts","obs","rtmp","srs"],"created_at":"2024-10-02T09:46:14.916Z","updated_at":"2026-05-07T23:31:04.775Z","avatar_url":"https://github.com/hashworks.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SBF(Simple back- and frontend) for SRS\n\nSBF provides a simple configuration, authentication backend server and frontend for [SRS](https://github.com/ossrs/srs).\n\n## Installation\n\nSRSv3, nginx, python, pip and NPM need to be installed on the system.\n\nThe AUR provides a [PKGBUILD for Arch Linux](https://aur.archlinux.org/packages/srs): `yay -Syu srs`\n\n```bash\nmkdir -p /usr/local/src\ncd /usr/local/src\ngit clone https://github.com/hashworks/sbf-for-srs.git\ncd sbf-for-srs\n\ncp srs{,-backend-server}.service /etc/systemd/system\n\nmkdir -p /etc/srs\ncp srs{,-backend-server}.conf /etc/srs\n\ncp nginx_vhosts.conf /etc/nginx/sites-available/stream.example.net.conf\n\ncd srs-frontend\nnpm install\n\ncd ../srs-backend-server\npip install -r requirements.txt\n```\n\nAdjust `/etc/srs/srs-backend-server.conf` and `/etc/nginx/sites-available/stream.example.net.conf` according to your liking.\n\n## Components\n\n### Frontend\n\n`srs-frontend` is a HTML5 web-frontend with an MPEG-TS player and a stream key that is adjustable by the URL fragment/hash (f.e. `https://stream.example.net#customkey`, defaults to `public`).\n\nIt also provides the direct link to the user (`https://stream.example.net/live/customkey.flv`).\n\n![frontend_with_custom_key](.images/frontend_with_custom_key.png)\n\n### Authentication Backend Server\n\n`srs-backend-server` provides a backend server for SRS that answers the `on-publish` http hook and accepts or denies streams using a provided subnet mask or a list of possible tokens, which can be provided by adding `?token=password` in OBS.\n\nPlease note that a VPN network and a subnet mask check should be preferred over tokens since RTMP is unencrypted.\n\n### SRS configuration\n\n`srs.conf` shows an exemplary SRS config. It hosts the frontend in `/usr/local/src/sbf/srs-frontend` on port `57643` and RTMP on its default `1935` and talks to the `srs-backend-server` on `http://127.0.0.1:59354`. It is configured for low latency (2-3s).\n\n`nginx_vhost.conf` shows how to configure a nginx vHost towards SRS.\n\n![obs setting with public key](.images/public_key_with_allowed_ip.png)\n\n![obs setting with custom key and token](.images/custom_key_with_allowed_token.png)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhashworks%2Fsbf-for-srs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhashworks%2Fsbf-for-srs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhashworks%2Fsbf-for-srs/lists"}