Skip to content
TubePress — free, self-hosted & actively maintained
Getting started

Server requirements

PHP, database, extensions, web server and optional FFmpeg — everything you need before installing.

TubePress runs on an ordinary LAMP or LEMP stack. There is no framework to install, no Composer or Node build step, and no ionCube loader — if your host already runs WordPress, it will almost certainly run TubePress.

This page covers the minimum you need, the setup we recommend for production, and the few optional pieces (FFmpeg, a TubePress account) that only specific features require. The web installer checks all of it for you on its System Check step.

Rule of thumb. If you can run WordPress on your server, you can run TubePress. A plain shared host, VPS or managed server all work.

Minimum requirements

This is the floor. The installer will refuse to continue until every required item passes.

ComponentMinimumNotes
PHP8.28.4 recommended; enable OPcache
DatabaseMySQL 5.7+ / MariaDB 10.4+InnoDB, utf8mb4
Web serverApache 2.4+ or NginxWith URL rewriting
Required extensionspdo_mysql, mbstring, fileinfoPlus working PHP sessions
Recommended extensionscurl, zip, GD or ImagickCatalogue, add-on installs, thumbnails
Writable pathsconfig/, storage/, public/uploads/Owned by the web-server user

Required PHP extensions

Setup is blocked unless these three are present:

pdo_mysql
Connects to your MySQL/MariaDB database (PDO plus the MySQL driver).
mbstring
Correct handling of accents, URLs and international text.
fileinfo
Detects file types when you upload videos and images.

Working PHP sessions and server-side URL rewriting (Apache mod_rewrite or an Nginx try_files rule) are also required — the installer checks both.

Parse-safe PHP guard. TubePress ships a tiny version gate that runs before the app boots. On a server below PHP 8.2 it shows a clean “PHP upgrade required” page instead of a fatal error, so a too-old or downgraded host fails safe. See Maintenance.

Recommended setup

For a smooth production site:

  • PHP 8.4 with OPcache — the version TubePress is built and tested against, with the bytecode cache on for speed.
  • memory_limit of 256 MB or more — comfortable headroom for bulk imports and image processing.
  • curl, zip and GD (or Imagick) — optional but recommended: catalogue downloads and the marketplace use curl, installing themes and plugins from the panel needs zip, and thumbnail generation needs GD or Imagick.
  • HTTPS — serve the site over TLS and set your site URL to the https address.

Scheduled jobs run automatically through TubePress’s built-in pseudo-cron, so no system crontab is required. High-traffic sites can still wire a real cron — see Cron & CLI.

Upload limits for video

TubePress caps direct uploads at 500 MB by default (adjustable under /admin/settings). Your PHP and web-server limits must be at least as large, or big files are rejected before they reach the app:

; php.ini - allow large video uploads
upload_max_filesize = 512M
post_max_size       = 512M
memory_limit        = 256M
max_execution_time  = 300

On Nginx also raise client_max_body_size; on Apache, LimitRequestBody. For very large libraries, transcode and serve from remote storage instead — see Transcoding and Storage.

Web server

The web root is the public/ directory, and every request is routed through a single front controller, public/index.php. Keep config/, src/ and storage/ above the document root (they sit one level up from public/) so they can never be served directly.

Apache

Point the document root at public/ and allow the shipped .htaccess files to do their work:

DocumentRoot /var/www/tubepress/public
<Directory /var/www/tubepress/public>
    AllowOverride All
    Require all granted
</Directory>

Nginx

Use try_files for clean URLs, alias the theme and template folders, and deny the sensitive paths:

server {
    root /var/www/tubepress/public;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.4-fpm.sock;
    }

    # Serve theme and template assets
    location /themes/    { alias /var/www/tubepress/themes/; }
    location /templates/ { alias /var/www/tubepress/templates/; }

    # Never expose application internals
    location ~ ^/(config|src|storage)/ { deny all; }

    client_max_body_size 512M;
}

Both servers are first-class — the installer auto-detects which one you are running.

Optional: FFmpeg & transcoding

You only need FFmpeg if you want TubePress to transcode video locally — converting uploads to web-friendly formats and generating preview thumbnails. If you import already-encoded files or serve from external storage or a CDN, you can skip it entirely. See Transcoding.

Optional: a TubePress account

The CMS is complete and free on its own. A free TubePress account unlocks pay-as-you-go extras — AI credits, the 400k+ video catalogue, the marketplace and support. You start with 150 free credits and never need an account to run a full site.

Next steps

Still stuck?

Open a ticket from your dashboard and our team will help you out.

Try the live demo → Download TubePress →