selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

subatic logo

Self-host subatic

2.6

Simple video hosting platform that scales with you

ReleaseOpen SourceGPL-3.0
Docker ComposeCompose file & guide
docker-compose up -d
Updated4 months ago
LanguageTypescript
Setup difficultyAdvanced
Stars
162
Ports
3000 (main web application), 4000 (tunnel)
Requires
PostgreSQL
Docker
ghcr.io/orthdron/subatic
subatic screenshot 1subatic screenshot 2subatic screenshot 3subatic screenshot 4subatic screenshot 5subatic screenshot 6

What is subatic?

Subatic is a self-hosted video hosting platform built with Next.js that lets you upload, transcode, and stream videos via HLS. It uses S3-compatible object storage (like MinIO, AWS S3, or Cloudflare R2) for video files and PostgreSQL for metadata. A separate transcoder service handles video processing, and the platform integrates with analytics tools like Umami, Plausible, and Google Analytics. Deployment is via Docker Compose which orchestrates the main app, transcoder, MinIO, and PostgreSQL. The project is licensed under GPL-3.0 and actively maintained.

Should you self-host subatic?

subatic scores 40/100 on selfhost.directory (how scoring works) and ranks #31 of 36 in Video Streaming. It has 162 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is advanced: plan for several services and some ongoing maintenance. An official Docker image is available. It is GPL-3.0-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is piped (70/100, 10 294 stars). It scores higher overall, so compare the two before you pick. See subatic vs piped side by side.

Features

  • Analytics Integration
  • HLS Streaming
  • S3-compatible Storage
  • Transcoding pipeline
  • Video Hosting
  • Webhook Notifications

subatic README

How to install subatic

Install subatic with Docker Compose

Environment variables
DATABASE_URL, RAWFILES_S3_*, MAX_FILE_SIZE, PROCESSED_VIDEO_URL, WEBHOOK_TOKEN, MARK_FAILED_AFTER, ENABLE_UMAMI, UMAMI_URL, UMAMI_ID, ENABLE_PLAUSIBLE, PLAUSIBLE_HOST, PLAUSIBLE_DOMAIN, ENABLE_GOOGLE_ANALYTICS, GOOGLE_ANALYTICS_ID
  1. Create a .env file (use .env.example) in the same directory as your docker-compose.yml file.

  2. Add all the required environment variables (listed below) to the .env file.

  3. Run the following command to start the services:

    docker-compose up -d
    

Includes health checks and proper service dependencies for smooth startup

How to configure subatic

  • DATABASE_URLConnection string for your PostgreSQL database

    Connection string for your PostgreSQL database

  • ENABLE_GOOGLE_ANALYTICSfalseEnable or disable Google Analytics

    Enable or disable Google Analytics

    values: true,false

  • ENABLE_PLAUSIBLEfalseEnable or disable Plausible analytics

    Enable or disable Plausible analytics

    values: true,false

  • ENABLE_UMAMItrueEnable or disable Umami analytics

    Enable or disable Umami analytics

    values: true,false

  • GOOGLE_ANALYTICS_IDYour Google Analytics tracking ID

    Your Google Analytics tracking ID

  • MARK_FAILED_AFTER600Time in seconds after which a processing video is marked as failed

    Time in seconds after which a processing video is marked as failed

  • MAX_FILE_SIZEMaximum file size in megabytes

    Maximum file size in megabytes

  • PLAUSIBLE_DOMAINYour domain for tracking with Plausible

    Your domain for tracking with Plausible

  • PLAUSIBLE_HOSTURL of your Plausible instance

    URL of your Plausible instance

  • PROCESSED_VIDEO_URLPublic S3 domain where final transcoded videos are stored

    Public S3 domain where final transcoded videos are stored

  • RAWFILES_S3_ACCESS_KEY_IDPrimary upload location S3 access key ID

    Primary upload location S3 access key ID

  • RAWFILES_S3_BUCKETPrimary upload location S3 bucket name

    Primary upload location S3 bucket name

  • RAWFILES_S3_ENDPOINTPrimary upload location custom S3 endpoint

    Primary upload location custom S3 endpoint

  • RAWFILES_S3_REGIONPrimary upload location S3 region

    Primary upload location S3 region

  • RAWFILES_S3_SECRET_ACCESS_KEYPrimary upload location S3 secret access key

    Primary upload location S3 secret access key

  • UMAMI_IDWebsite ID from Umami for tracking

    Website ID from Umami for tracking

  • UMAMI_URLURL of your Umami instance

    URL of your Umami instance

  • WEBHOOK_TOKENRandom token for webhook notifications shared between app and transcoder

    Random token for webhook notifications shared between app and transcoder

subatic releases & version history

More in Video Streaming

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…