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.

GitHub
Guardian logo

Self-host Guardian

v2.1.0

Plex access control with device policies and stream limits

ReleaseSource AvailableOther
Updated9 hours ago
LanguageTypescript
Setup difficultyModerate
ThemeDark mode
Stars
174
Ports
3000 (web UI), 3001 (backend dev server)
Requires
Plex Media Server
Docker
hydroshieldmkii/guardian
Install with Docker Compose
Device management screenActive streams viewUser portal - the portal a Plex user seesDevice actions screenDevice details viewSession history viewNotifications screenActive streams in light theme

What is Guardian?

Should you self-host Guardian?

Guardian scores 41/100 on selfhost.directory (how scoring works) and ranks #95 of 118 in Media Server. It has 174 GitHub stars.

It shipped 13 stable releases in the past year. The latest, v2.1.0, came out on 26 October 2026. New versions land roughly every 8 days.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is Other-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is Jellyfin (88/100, 58 737 stars). It scores higher overall, so compare the two before you pick. See Guardian vs Jellyfin side by side.

Features

  • Automatic device cleanup
  • CLI recovery scripts
  • Concurrent stream limits
  • Device access control
  • Live session monitoring
  • Notifications
  • Settings export/import
  • User portal

Guardian README

How to install Guardian

Install Guardian with Docker Compose

Docker with Compose
Environment variables
TRUST_PROXY_HOPS=1 (default), APP_URL (optional, for password reset), DATABASE_PATH=/app/data/plex-guard.db (default)

mkdir -p guardian && cd guardian curl -o docker-compose.yml https://raw.githubusercontent.com/HydroshieldMKII/Guardian/main/docker-compose.example.yml docker compose up -d

Web UI listens on port 3000 by default

How to configure Guardian

  • APP_URLPublic address Guardian is reached on, for example https://guardian.example.com. Used to build password reset links. Required for password resets; ignored otherwise.

    Public address Guardian is reached on, for example https://guardian.example.com. Used to build password reset links. Required for password resets; ignored otherwise.

  • DATABASE_PATH/app/data/plex-guard.dbSQLite database file.

    SQLite database file.

  • TRUST_PROXY_HOPS1Number of proxies in front of Guardian. Determines which address in X-Forwarded-For is treated as the client.

    Number of proxies in front of Guardian. Determines which address in X-Forwarded-For is treated as the client.

Guardian releases & version history

More in Media Server

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…