Source for OpenRTMP.org, the public website for the OpenRTMP ecosystem.
OpenRTMP includes:
librtmp2— Rust RTMP/RTMPS and Enhanced RTMP protocol library with a C-compatible FFIlibrtmp2-server— self-hosted RTMP/RTMPS server with SQLite, stream keys, REST API, statistics, and optional HA clusteringlibrtmp2-server-panel— web UI for stream lifecycle, live monitoring, and cluster-aware operationscommunity— central issue tracker and discussion hub for all OpenRTMP projects
All projects are under active development and remain pre-1.0. Interfaces and configuration may still evolve; the website intentionally avoids hard-coded current release numbers where a package registry or GitHub release page can remain the source of truth.
- Issues, bug reports, feature requests, and interoperability reports: OpenRTMP Community Issues
- Questions, setup help, ideas, and design discussion: OpenRTMP Community Discussions
- Source-code pull requests stay in the repository that owns the implementation.
The site is a static-ish PHP/HTML/CSS/JavaScript project with no framework, build step, or database. It requires PHP 7.4 or newer.
php -S localhost:8090Open http://localhost:8090.
Validate PHP files before publishing:
find . -name '*.php' -print0 | xargs -0 -n1 php -lindex.php Homepage and audience paths
quickstart/index.php Five-minute Docker + OBS setup
docs/index.php Reference documentation
download/index.php Crate, source, and Docker downloads
guides/index.php Guide landing page
guides/*/index.php Search-focused technical guides
legal/index.php Contact and legal notice
includes/ Shared header and footer
assets/css/style.css Core design system
assets/css/content.css Article and quickstart styles
assets/js/ Navigation, copy, and docs behavior
assets/img/ Logo and favicon
robots.txt Crawler policy
sitemap.xml Indexable public pages (generated)
scripts/generate-sitemap.sh Rebuilds sitemap.xml from git history
sitemap.xml is generated, not hand-edited. Each <lastmod> is the date of the
most recent commit that touched that page's index.php, so the sitemap cannot
drift away from the content it describes.
scripts/generate-sitemap.sh # rewrite sitemap.xml
scripts/generate-sitemap.sh -o - # preview on stdoutThe URL list, changefreq, and priority live in the PAGES table at the top
of the script. The script fails if an index.php exists on disk but is missing
from that table, and it needs full git history — a shallow clone is rejected
rather than silently producing wrong dates.
CI enforces both ends of this: Website checks fails when the committed
sitemap.xml differs from what the script produces, and the production deploy
regenerates it just before upload.
- Separate the developer/library path from the operator/server path.
- State the pre-1.0 status and implementation boundaries consistently.
- Link to repository implementation-status tables for code-accurate claims.
- Route issues to
OpenRTMP/community/issuesand discussions toOpenRTMP/community/discussions, rather than to an individual source repository. - Prefer package registries and release pages over manually copied latest-version strings.
- Create one canonical page for each major search intent instead of duplicating setup text.
- Keep guides task-focused, honest about missing features, and useful without marketing language.
- Create
guides/<slug>/index.php. - Set a unique
$pageTitle,$pageDescription, and$canonicalPath. - Add
TechArticlestructured data when appropriate. - Link the guide from
guides/index.phpand relevant existing pages. - Add the page to the
PAGEStable inscripts/generate-sitemap.sh, then runscripts/generate-sitemap.shand commit the regeneratedsitemap.xml. - Run PHP lint and review mobile table/code overflow.
Deploy the repository contents to a PHP-capable web root. The server should route directory requests such as /quickstart/ to the corresponding index.php and serve XML/TXT/CSS/JS/image files directly.