Create Your Own Broadcast Network With AVideo Platform Open-Source. OAVP OVP
See the codeI thank God for graciously, through His mercy, giving me all the necessary knowledge acquired throughout my life and throughout the development of this project. It is only through His grace and provision that this was possible, and I am truly grateful for His presence every step of the way.
For of Him, and through Him, and to Him, are all things: to whom be glory forever. Amen.
Apostle Paul in Romans 11:36
Our previous domains — youphptube.com and youphp.tube — are being retired following a dispute initiated by Google LLC (YouTube).
Although we firmly believe that YouPHPTube has always been an independent, open-source project, created to empower developers and organizations to host their own video platforms, we have decided to respect the process and move forward peacefully.
🆕 Please update your bookmarks and references to the new official domain:
Thank you for your continued support and for standing with open-source freedom.
AVideo is a self-hosted video platform for publishing, managing, and monetizing on-demand videos and live broadcasts on your own infrastructure.
Try the live demo · Use cases · White label and layouts · Monetization · Content tools · Quickstart · Installation · How it works · Wiki · Website · Releases
The video gallery on AVideo Tutorials, a running AVideo installation.
| Use case | How you can use AVideo |
|---|---|
| Community video portal | Let creators publish videos and organize discovery around Gallery sections and channels. |
| Education and staff training | Publish recorded lessons and tutorials, with user groups controlling access for students, teams, or members. |
| Premium video catalog | Present films, series, or lessons in a Flix layout, and sell memberships or individual video access. |
| Live events | Broadcast conferences, concerts, or sports, with optional paid event tickets. |
| Churches and nonprofit communities | Share recorded talks and live broadcasts, with optional donation links or wallet donations to support creators. |
AVideo can run as a video website under your own brand. Start with Site Design and Templates:
Choose a presentation that fits your content:
| Layout | Presentation | Guide |
|---|---|---|
| Gallery | A video portal with sections for categories, trending videos, playlists, and channels. | Gallery plugin |
| Flix | A movie or series catalog with featured artwork and horizontal content rows. | Configure the Flix layout |
| Channels | Put creators and their channels at the center of browsing. | FirstPageChannelList plugin |
| Player first page | Open directly to a video player and related content. | Homepage Layout Options |
| React frontend | Develop your own viewer interface as a separate application using the API and embed player. | Build Your Own Frontend |
The built-in homepage layouts are free and selected in Admin Panel → Design → First Page Style. The React frontend is deployed separately. See layout options for the differences.
You can also choose light and dark themes, change the player appearance, and adjust menus, buttons, and extra HTML with the free CustomizeAdvanced plugin.
You can combine several revenue models on the same site. See the monetization overview for setup and payment flows.
| Model | How it works | Guide |
|---|---|---|
| Subscriptions | Sell membership plans that unlock a premium video library for the subscription period. | Subscription |
| Pay-per-view | Charge for time-limited access to individual videos or tickets to live events. | Video PPV · Live PPV |
| Advertising | Show banner, overlay, or video ads; run your own campaigns or connect a VAST/VMAP ad provider. | Advertising options |
| Fan memberships | Creators sell access to their own fans-only videos and broadcasts, with an optional share for the site owner. | FansSubscriptions |
| Creator donations | Let viewers support creators through external donation links or transfers from their site wallet. | Donation options |
Subscription, PayPerView, PayPerView Live, and FansSubscriptions are paid add-ons. Advertising includes free plugins and the paid GoogleAds IMA integration; see each guide for requirements.
Wallet-based purchases require YPTWallet and a configured payment gateway, such as PayPal or Stripe. Payment-provider fees and infrastructure costs apply; configure prices and creator shares for your business model.
For sites with multiple creators, see creator payment options for sales commissions, wallet withdrawals, and direct creator payments through the supported Stripe PPV configuration.
Start with the website and the features you want to offer:
| What you want to do | What you need | What it does for you |
|---|---|---|
| Run your video website | Streamer — this repository — with its database and media storage. | Provides the home page, video pages, search, channels, user accounts, and administration. |
| Upload videos that need conversion | Encoder. | Prepares video files for browser playback. It can run on the same server as your site. |
| Broadcast live | Live server. | Receives your broadcast and delivers it to visitors watching on your site. |
| Use remote media storage | An optional storage plugin and provider, such as S3 or B2. | Keeps media on a storage provider; local disk is the default starting option. |
The Docker Compose option below installs the bundled components together. You can begin with recorded videos and configure live broadcasting or remote storage as you need them.
A public Encoder is an option for a publicly reachable site. Install a private Encoder when you need:
localhost or a home or office network. Your own Encoder must be able to reach the site.The Encoder can share the website's server for a small installation, or run on another server as uploads grow. Docker Compose already includes an Encoder.
The included Compose stack runs the Streamer, Encoder, live server, databases, and cache. You need a Linux server with Docker and the Docker Compose plugin.
git clone https://github.com/WWBN/AVideo.git
cd AVideo
cp -n env.example .env
Edit .env before the first start:
SERVER_NAME to your domain, without https:// or a path.CONTACT_EMAIL and WEBSITE_TITLE.SYSTEM_ADMIN_PASSWORD and DB_MYSQL_PASSWORD.CPUS_LIMIT and MEMORY_LIMIT to your server's capacity.Your domain must point to the server, with ports 80 and 443 open for HTTPS certificate setup. Then start the stack:
docker compose up -d --build
docker compose ps
docker compose logs -f avideo
Wait for the initial installation to finish, open https://your-domain.com/, and sign in as admin with your SYSTEM_ADMIN_PASSWORD. Press Ctrl+C to stop watching the logs; the containers keep running.
See the Docker guide for certificates, persistent data, backups, updates, and troubleshooting.
Each diagram answers a different question:
| Diagram | What it explains |
|---|---|
| 1. Visitor navigation | How visitors find and watch content on your site. |
| 2. Video publication | How an upload becomes a published video, with or without conversion. |
| 3. Video processing | What happens while the Encoder prepares an uploaded video. |
| 4. System components | How the website, Encoder, live server, database, and storage connect. Optional technical detail. |
Purpose: Shows the steps a visitor takes to find and watch a video or live broadcast. Your theme, settings, and enabled plugins determine the exact layout and available features.
flowchart LR
Home["Open your site"] --> Browse["Browse or search<br/>videos, categories, channels"]
Browse --> Choose["Choose a video<br/>or an available live broadcast"]
Choose --> Watch["Watch on a computer<br/>or phone"]
Watch -.->|optional| Account["Sign in and interact"]
When enabled and permitted by your settings, signed-in visitors can comment and use playlists.
Purpose: Shows the overall path from uploading a file to making the video available on your site. The Encoder prepares files that need conversion; already compatible files can use direct upload.
flowchart LR
Upload["Upload a video"] --> Convert{"Needs conversion?"}
Convert -->|Yes| Encoder["Encoder prepares<br/>the video"]
Convert -->|Already compatible| Ready["Video ready<br/>on your site"]
Encoder --> Ready
Ready --> Publish["Publication follows<br/>your site settings"]
Publish --> Watch["Visitors watch<br/>the published video"]
Choose the title, category, and publication options for your content, and allow processing to finish before checking playback. Embedded videos remain hosted by their external provider. See upload options for the available methods.
Purpose: Shows what happens behind the scenes when you choose an upload method that uses the Encoder. The Encoder is the service that prepares video files for playback on your website.
flowchart TB
Upload["Video uploaded<br/>for conversion"] --> Queue["Wait for its turn<br/>in the Encoder queue"]
Queue --> Prepare["Prepare playback versions<br/>and preview images"]
Prepare --> Transfer["Transfer prepared media<br/>back to your website"]
Transfer --> Storage["Save media in<br/>the configured storage"]
Storage --> Ready["Website updates the video<br/>and applies publication settings"]
Ready --> Watch["Visitors watch through<br/>the website player"]
Preparation can produce different video qualities and cover or preview images. The exact formats, qualities, and images depend on your Encoder settings and enabled features. Media can stay on the server or use a supported remote storage plugin.
After the file upload finishes, the video can still be waiting in the queue or undergoing conversion and transfer. Wait for the job to finish, then check playback on your site. Direct uploads of already compatible files and external embeds follow their own paths; they skip this conversion workflow. See upload methods for the differences.
For live broadcasts, you send a live feed to the live server, and visitors open the broadcast on your website. Follow the live setup guide when you are ready to add this feature.
Purpose: Shows how the installed services connect, including recorded video and live broadcasting. This is a component overview for server administrators.
The Streamer handles the website and application data; the Encoder processes uploads; the live server handles broadcast ingest and delivery. Socket carries real-time application messages.
flowchart TB
Browser["Browser / player"] <-->|HTTPS| Streamer["Streamer<br/>PHP + Apache"]
Streamer -->|conversion jobs| Encoder["Encoder<br/>FFmpeg / FFprobe"]
Encoder -->|processed media| Streamer
Streamer -->|site data| Database[("MariaDB / MySQL<br/>Site and Encoder databases")]
Encoder -->|encoding queue| Database
Streamer <-->|application events| Socket["Socket<br/>YPTSocket"]
Socket <-->|WebSocket messages| Browser
Publisher["OBS / broadcaster"] -->|RTMP| Live["Live server<br/>nginx-rtmp"]
Live -->|publish / play callbacks| Streamer
Live -->|HLS playback| Browser
Streamer -->|media files| Local[("Local storage")]
Streamer -.->|optional storage plugins| Cloud[("S3 / Backblaze B2")]
Cloud -.->|video playback| Browser
This diagram shows logical components. In the included Compose stack, Streamer, Encoder, and Socket run inside the avideo container; live, database, database_encoder, and memcached run as separate services. S3/B2 is optional and requires a provider account and the corresponding storage plugin.
| Component | Purpose | When you need it |
|---|---|---|
| Streamer — this repository | The website, player, video library, user accounts, and administration. | Every AVideo installation. |
| Encoder | Converts uploaded video and audio into formats suitable for browser playback. | When uploads need conversion. It can run on the same server or a separate server. |
| Live server | Receives live broadcasts and delivers them to viewers, typically using NGINX with RTMP and HLS. | When you want live streaming. |
| Socket | Delivers real-time application messages through YPTSocket. | Features that use real-time updates; it runs as a long-lived PHP process. |
| MariaDB / MySQL | Stores users, video metadata, settings, and the Encoder queue in their respective databases. | Every Streamer installation; the Encoder also has its own database. |
| Storage | Stores media on local disk or through providers such as S3 and Backblaze B2. | Local disk by default; remote storage depends on your deployment and plugins. |
| Choice | What it enables | Operational trade-off |
|---|---|---|
| PHP + Apache for the Streamer | Deployment on a LAMP stack, using the supplied .htaccess routing rules. | The server must provide compatible PHP extensions and Apache configuration. |
| A separate Encoder component | Video conversion can run on a different server, keeping encoding CPU load away from the website. | The Encoder and Streamer must communicate and transfer the processed media. |
| nginx-rtmp + HLS for live video | Broadcasters publish with RTMP; viewers play HLS in the browser. | A live server, its callbacks, and sufficient bandwidth must be configured. |
| WebSocket messages through YPTSocket | Real-time application events can reach browsers independently of video delivery. | Requires a running Socket process and a browser-accessible WebSocket endpoint. |
| Relational data separate from media files | MySQL/MariaDB stores application data while local disk or storage plugins hold the media. | Backups must cover both the databases and media; cloud providers add configuration and usage costs. |
| Plugins for optional features | Add monetization, storage, and integrations to suit each installation. | Feature availability depends on installed plugins; some are distributed separately and require purchase. |
For Docker, use the quickstart and Docker installation guide. For an installation directly on a server, follow the Ubuntu steps below.
Use a fresh Ubuntu Server with sudo access and no hosting control panel such as cPanel, Plesk, or Webmin. The installation guide assumes direct control of Apache, PHP, the database, and system packages.
https://your-domain.com/install/. Resolve any failed required checks, enter the database and site settings, and choose your administrator password. See the installation setup page for each field.admin with the password you chose.For a video walkthrough, watch Installing AVideo for Ubuntu 24. Follow the written installation guide for the current commands.
These pages describe older Ubuntu and AVideo setups and may be archived or superseded. For a new installation, use the guide above. For an existing site, start with the backup and update guides.
After either installation:
| Requirement | Details |
|---|---|
| PHP | 8.1 or later, as required by Composer and the installer. Use a maintained PHP release compatible with your installation. |
| PHP extensions | mysqli, curl, gd, mbstring, zip, zlib, and openssl are checked by the installer. Additional features may need other extensions. |
| Database | MySQL or MariaDB. Follow the installation guide for the database setup. |
| Web server | Apache 2.x with mod_rewrite and support for the supplied .htaccess rules. |
| Application dependencies | The supplied vendor/ and node_modules/ assets. The installer checks for missing dependencies. |
| Media tools | FFmpeg, FFprobe, and ExifTool for media processing; requirements vary by component and feature. |
| Capacity | Disk space for media and processing, CPU for encoding, and bandwidth for viewers. |
For sizing and deployment planning, see hardware and server requirements.
Availability depends on the plugins installed and enabled. Some plugins are distributed separately and require purchase; review their documentation and the marketplace before planning your deployment.
Open a demo and sign in with one of the public test accounts below:
| Demo | Access | Username | Password |
|---|---|---|---|
| Platform demo | Administrator — explore the admin panel | admin | 123 |
| Platform demo | Non-admin test account — commenting | test | test |
| Flix demo | Test user — explore the Flix layout | test | test |
These are shared, public demo accounts. Choose your own administrator password when installing your site.
Flix demo payments are real: paid subscriptions use real money. Review the price, billing period, and renewal terms on the Flix subscription plans before paying.
Tutorials / Gallery demo — videos about setup and features, with likes, channel subscriptions, and comments for signed-in users. Video uploads are disabled on this demo.
| Resource | Use it for |
|---|---|
| Wiki | Installation, configuration, and plugin documentation. |
| Admin Manual | Managing users, videos, settings, and plugins. |
| Updates and releases | Keeping an existing installation current. |
| Backups | Saving and restoring site data. |
| Troubleshooting | Finding logs and diagnosing errors. |
| GitHub Issues | Reporting bugs with reproduction steps, versions, and relevant logs. Remove passwords and other secrets before posting. |
| Professional support | Paid installation, plugins, and consulting from Daniel Neto. |
See LICENSE for the software license, including its requirement that the software be used for Good, not Evil.
The project's installation agreement prohibits using this software to create sexually explicit material, pornography, or adult-themed content.
342 followers · starred Aug 2020
106 followers · starred Aug 2021
89 followers · starred Oct 2018
207 followers · starred May 2020
Create Your Own Broadcast Network With AVideo Platform Open-Source. OAVP OVP
See the codeI thank God for graciously, through His mercy, giving me all the necessary knowledge acquired throughout my life and throughout the development of this project. It is only through His grace and provision that this was possible, and I am truly grateful for His presence every step of the way.
For of Him, and through Him, and to Him, are all things: to whom be glory forever. Amen.
Apostle Paul in Romans 11:36
Our previous domains — youphptube.com and youphp.tube — are being retired following a dispute initiated by Google LLC (YouTube).
Although we firmly believe that YouPHPTube has always been an independent, open-source project, created to empower developers and organizations to host their own video platforms, we have decided to respect the process and move forward peacefully.
🆕 Please update your bookmarks and references to the new official domain:
Thank you for your continued support and for standing with open-source freedom.
AVideo is a self-hosted video platform for publishing, managing, and monetizing on-demand videos and live broadcasts on your own infrastructure.
Try the live demo · Use cases · White label and layouts · Monetization · Content tools · Quickstart · Installation · How it works · Wiki · Website · Releases
The video gallery on AVideo Tutorials, a running AVideo installation.
| Use case | How you can use AVideo |
|---|---|
| Community video portal | Let creators publish videos and organize discovery around Gallery sections and channels. |
| Education and staff training | Publish recorded lessons and tutorials, with user groups controlling access for students, teams, or members. |
| Premium video catalog | Present films, series, or lessons in a Flix layout, and sell memberships or individual video access. |
| Live events | Broadcast conferences, concerts, or sports, with optional paid event tickets. |
| Churches and nonprofit communities | Share recorded talks and live broadcasts, with optional donation links or wallet donations to support creators. |
AVideo can run as a video website under your own brand. Start with Site Design and Templates:
Choose a presentation that fits your content:
| Layout | Presentation | Guide |
|---|---|---|
| Gallery | A video portal with sections for categories, trending videos, playlists, and channels. | Gallery plugin |
| Flix | A movie or series catalog with featured artwork and horizontal content rows. | Configure the Flix layout |
| Channels | Put creators and their channels at the center of browsing. | FirstPageChannelList plugin |
| Player first page | Open directly to a video player and related content. | Homepage Layout Options |
| React frontend | Develop your own viewer interface as a separate application using the API and embed player. | Build Your Own Frontend |
The built-in homepage layouts are free and selected in Admin Panel → Design → First Page Style. The React frontend is deployed separately. See layout options for the differences.
You can also choose light and dark themes, change the player appearance, and adjust menus, buttons, and extra HTML with the free CustomizeAdvanced plugin.
You can combine several revenue models on the same site. See the monetization overview for setup and payment flows.
| Model | How it works | Guide |
|---|---|---|
| Subscriptions | Sell membership plans that unlock a premium video library for the subscription period. | Subscription |
| Pay-per-view | Charge for time-limited access to individual videos or tickets to live events. | Video PPV · Live PPV |
| Advertising | Show banner, overlay, or video ads; run your own campaigns or connect a VAST/VMAP ad provider. | Advertising options |
| Fan memberships | Creators sell access to their own fans-only videos and broadcasts, with an optional share for the site owner. | FansSubscriptions |
| Creator donations | Let viewers support creators through external donation links or transfers from their site wallet. | Donation options |
Subscription, PayPerView, PayPerView Live, and FansSubscriptions are paid add-ons. Advertising includes free plugins and the paid GoogleAds IMA integration; see each guide for requirements.
Wallet-based purchases require YPTWallet and a configured payment gateway, such as PayPal or Stripe. Payment-provider fees and infrastructure costs apply; configure prices and creator shares for your business model.
For sites with multiple creators, see creator payment options for sales commissions, wallet withdrawals, and direct creator payments through the supported Stripe PPV configuration.
Start with the website and the features you want to offer:
| What you want to do | What you need | What it does for you |
|---|---|---|
| Run your video website | Streamer — this repository — with its database and media storage. | Provides the home page, video pages, search, channels, user accounts, and administration. |
| Upload videos that need conversion | Encoder. | Prepares video files for browser playback. It can run on the same server as your site. |
| Broadcast live | Live server. | Receives your broadcast and delivers it to visitors watching on your site. |
| Use remote media storage | An optional storage plugin and provider, such as S3 or B2. | Keeps media on a storage provider; local disk is the default starting option. |
The Docker Compose option below installs the bundled components together. You can begin with recorded videos and configure live broadcasting or remote storage as you need them.
A public Encoder is an option for a publicly reachable site. Install a private Encoder when you need:
localhost or a home or office network. Your own Encoder must be able to reach the site.The Encoder can share the website's server for a small installation, or run on another server as uploads grow. Docker Compose already includes an Encoder.
The included Compose stack runs the Streamer, Encoder, live server, databases, and cache. You need a Linux server with Docker and the Docker Compose plugin.
git clone https://github.com/WWBN/AVideo.git
cd AVideo
cp -n env.example .env
Edit .env before the first start:
SERVER_NAME to your domain, without https:// or a path.CONTACT_EMAIL and WEBSITE_TITLE.SYSTEM_ADMIN_PASSWORD and DB_MYSQL_PASSWORD.CPUS_LIMIT and MEMORY_LIMIT to your server's capacity.Your domain must point to the server, with ports 80 and 443 open for HTTPS certificate setup. Then start the stack:
docker compose up -d --build
docker compose ps
docker compose logs -f avideo
Wait for the initial installation to finish, open https://your-domain.com/, and sign in as admin with your SYSTEM_ADMIN_PASSWORD. Press Ctrl+C to stop watching the logs; the containers keep running.
See the Docker guide for certificates, persistent data, backups, updates, and troubleshooting.
Each diagram answers a different question:
| Diagram | What it explains |
|---|---|
| 1. Visitor navigation | How visitors find and watch content on your site. |
| 2. Video publication | How an upload becomes a published video, with or without conversion. |
| 3. Video processing | What happens while the Encoder prepares an uploaded video. |
| 4. System components | How the website, Encoder, live server, database, and storage connect. Optional technical detail. |
Purpose: Shows the steps a visitor takes to find and watch a video or live broadcast. Your theme, settings, and enabled plugins determine the exact layout and available features.
flowchart LR
Home["Open your site"] --> Browse["Browse or search<br/>videos, categories, channels"]
Browse --> Choose["Choose a video<br/>or an available live broadcast"]
Choose --> Watch["Watch on a computer<br/>or phone"]
Watch -.->|optional| Account["Sign in and interact"]
When enabled and permitted by your settings, signed-in visitors can comment and use playlists.
Purpose: Shows the overall path from uploading a file to making the video available on your site. The Encoder prepares files that need conversion; already compatible files can use direct upload.
flowchart LR
Upload["Upload a video"] --> Convert{"Needs conversion?"}
Convert -->|Yes| Encoder["Encoder prepares<br/>the video"]
Convert -->|Already compatible| Ready["Video ready<br/>on your site"]
Encoder --> Ready
Ready --> Publish["Publication follows<br/>your site settings"]
Publish --> Watch["Visitors watch<br/>the published video"]
Choose the title, category, and publication options for your content, and allow processing to finish before checking playback. Embedded videos remain hosted by their external provider. See upload options for the available methods.
Purpose: Shows what happens behind the scenes when you choose an upload method that uses the Encoder. The Encoder is the service that prepares video files for playback on your website.
flowchart TB
Upload["Video uploaded<br/>for conversion"] --> Queue["Wait for its turn<br/>in the Encoder queue"]
Queue --> Prepare["Prepare playback versions<br/>and preview images"]
Prepare --> Transfer["Transfer prepared media<br/>back to your website"]
Transfer --> Storage["Save media in<br/>the configured storage"]
Storage --> Ready["Website updates the video<br/>and applies publication settings"]
Ready --> Watch["Visitors watch through<br/>the website player"]
Preparation can produce different video qualities and cover or preview images. The exact formats, qualities, and images depend on your Encoder settings and enabled features. Media can stay on the server or use a supported remote storage plugin.
After the file upload finishes, the video can still be waiting in the queue or undergoing conversion and transfer. Wait for the job to finish, then check playback on your site. Direct uploads of already compatible files and external embeds follow their own paths; they skip this conversion workflow. See upload methods for the differences.
For live broadcasts, you send a live feed to the live server, and visitors open the broadcast on your website. Follow the live setup guide when you are ready to add this feature.
Purpose: Shows how the installed services connect, including recorded video and live broadcasting. This is a component overview for server administrators.
The Streamer handles the website and application data; the Encoder processes uploads; the live server handles broadcast ingest and delivery. Socket carries real-time application messages.
flowchart TB
Browser["Browser / player"] <-->|HTTPS| Streamer["Streamer<br/>PHP + Apache"]
Streamer -->|conversion jobs| Encoder["Encoder<br/>FFmpeg / FFprobe"]
Encoder -->|processed media| Streamer
Streamer -->|site data| Database[("MariaDB / MySQL<br/>Site and Encoder databases")]
Encoder -->|encoding queue| Database
Streamer <-->|application events| Socket["Socket<br/>YPTSocket"]
Socket <-->|WebSocket messages| Browser
Publisher["OBS / broadcaster"] -->|RTMP| Live["Live server<br/>nginx-rtmp"]
Live -->|publish / play callbacks| Streamer
Live -->|HLS playback| Browser
Streamer -->|media files| Local[("Local storage")]
Streamer -.->|optional storage plugins| Cloud[("S3 / Backblaze B2")]
Cloud -.->|video playback| Browser
This diagram shows logical components. In the included Compose stack, Streamer, Encoder, and Socket run inside the avideo container; live, database, database_encoder, and memcached run as separate services. S3/B2 is optional and requires a provider account and the corresponding storage plugin.
| Component | Purpose | When you need it |
|---|---|---|
| Streamer — this repository | The website, player, video library, user accounts, and administration. | Every AVideo installation. |
| Encoder | Converts uploaded video and audio into formats suitable for browser playback. | When uploads need conversion. It can run on the same server or a separate server. |
| Live server | Receives live broadcasts and delivers them to viewers, typically using NGINX with RTMP and HLS. | When you want live streaming. |
| Socket | Delivers real-time application messages through YPTSocket. | Features that use real-time updates; it runs as a long-lived PHP process. |
| MariaDB / MySQL | Stores users, video metadata, settings, and the Encoder queue in their respective databases. | Every Streamer installation; the Encoder also has its own database. |
| Storage | Stores media on local disk or through providers such as S3 and Backblaze B2. | Local disk by default; remote storage depends on your deployment and plugins. |
| Choice | What it enables | Operational trade-off |
|---|---|---|
| PHP + Apache for the Streamer | Deployment on a LAMP stack, using the supplied .htaccess routing rules. | The server must provide compatible PHP extensions and Apache configuration. |
| A separate Encoder component | Video conversion can run on a different server, keeping encoding CPU load away from the website. | The Encoder and Streamer must communicate and transfer the processed media. |
| nginx-rtmp + HLS for live video | Broadcasters publish with RTMP; viewers play HLS in the browser. | A live server, its callbacks, and sufficient bandwidth must be configured. |
| WebSocket messages through YPTSocket | Real-time application events can reach browsers independently of video delivery. | Requires a running Socket process and a browser-accessible WebSocket endpoint. |
| Relational data separate from media files | MySQL/MariaDB stores application data while local disk or storage plugins hold the media. | Backups must cover both the databases and media; cloud providers add configuration and usage costs. |
| Plugins for optional features | Add monetization, storage, and integrations to suit each installation. | Feature availability depends on installed plugins; some are distributed separately and require purchase. |
For Docker, use the quickstart and Docker installation guide. For an installation directly on a server, follow the Ubuntu steps below.
Use a fresh Ubuntu Server with sudo access and no hosting control panel such as cPanel, Plesk, or Webmin. The installation guide assumes direct control of Apache, PHP, the database, and system packages.
https://your-domain.com/install/. Resolve any failed required checks, enter the database and site settings, and choose your administrator password. See the installation setup page for each field.admin with the password you chose.For a video walkthrough, watch Installing AVideo for Ubuntu 24. Follow the written installation guide for the current commands.
These pages describe older Ubuntu and AVideo setups and may be archived or superseded. For a new installation, use the guide above. For an existing site, start with the backup and update guides.
After either installation:
| Requirement | Details |
|---|---|
| PHP | 8.1 or later, as required by Composer and the installer. Use a maintained PHP release compatible with your installation. |
| PHP extensions | mysqli, curl, gd, mbstring, zip, zlib, and openssl are checked by the installer. Additional features may need other extensions. |
| Database | MySQL or MariaDB. Follow the installation guide for the database setup. |
| Web server | Apache 2.x with mod_rewrite and support for the supplied .htaccess rules. |
| Application dependencies | The supplied vendor/ and node_modules/ assets. The installer checks for missing dependencies. |
| Media tools | FFmpeg, FFprobe, and ExifTool for media processing; requirements vary by component and feature. |
| Capacity | Disk space for media and processing, CPU for encoding, and bandwidth for viewers. |
For sizing and deployment planning, see hardware and server requirements.
Availability depends on the plugins installed and enabled. Some plugins are distributed separately and require purchase; review their documentation and the marketplace before planning your deployment.
Open a demo and sign in with one of the public test accounts below:
| Demo | Access | Username | Password |
|---|---|---|---|
| Platform demo | Administrator — explore the admin panel | admin | 123 |
| Platform demo | Non-admin test account — commenting | test | test |
| Flix demo | Test user — explore the Flix layout | test | test |
These are shared, public demo accounts. Choose your own administrator password when installing your site.
Flix demo payments are real: paid subscriptions use real money. Review the price, billing period, and renewal terms on the Flix subscription plans before paying.
Tutorials / Gallery demo — videos about setup and features, with likes, channel subscriptions, and comments for signed-in users. Video uploads are disabled on this demo.
| Resource | Use it for |
|---|---|
| Wiki | Installation, configuration, and plugin documentation. |
| Admin Manual | Managing users, videos, settings, and plugins. |
| Updates and releases | Keeping an existing installation current. |
| Backups | Saving and restoring site data. |
| Troubleshooting | Finding logs and diagnosing errors. |
| GitHub Issues | Reporting bugs with reproduction steps, versions, and relevant logs. Remove passwords and other secrets before posting. |
| Professional support | Paid installation, plugins, and consulting from Daniel Neto. |
See LICENSE for the software license, including its requirement that the software be used for Good, not Evil.
The project's installation agreement prohibits using this software to create sexually explicit material, pornography, or adult-themed content.
342 followers · starred Aug 2020
106 followers · starred Aug 2021
89 followers · starred Oct 2018
207 followers · starred May 2020