Guardian
Guardian is a lightweight companion app for Plex that lets you monitor, approve or block devices in real time. It helps you enforce per-user or global policies, stop unwanted sessions automatically and grant temporary access - all through a simple web interface.
Install / Use
/learn @HydroshieldMKII/GuardianREADME
Guardian
Guardian is a security and management platform for Plex Media Server. Monitor streaming activity, enforce granular access controls, and ensure only authorized devices can access your media library.
[!WARNING] Project status - Looking for a Maintainer
This project is feature-complete from the author's perspective. No new features will be added unless a suitable maintainer or volunteer steps up to take the lead. Security patches may be slow to arrive in the meantime.
Do not expose Guardian to the public internet without proper protection. Safe options include:
- Running it on your local network only
- Accessing it through a VPN
- Placing it behind a reverse proxy with SSO or authentication (e.g., Authelia, Authentik, Cloudflare Access)
If you're interested in becoming a maintainer (managing PRs, issues, and pipelines), please reach out via Discord or the GitHub Discussions.
Table of Contents
- Features
- Screenshots
- Installation
- Configuration
- Updating
- Application Settings
- Troubleshooting
- Contributing
Features
Device Security & Access Control
- Automatic Session Termination - Block unapproved devices instantly
- Flexible Access Rules - Global and per-user blocking configurations
- IP-Based Controls - Restrict access by LAN, WAN, or specific IP/CIDR ranges
- Temporary Access - Grant time-limited device permissions
- Schedule-Based Restrictions - Define custom access schedules per user
Real-time Monitoring & Tracking
- Live Session Tracking - Monitor Plex and Plexamp streams in real-time
- Detailed Device Information - Platform, product, version, IP address, and last seen
- Stream Analytics - Track title, quality, duration, and progress
- Session History - Logging with filtering and search
Notifications & Alerts
- SMTP Email Integration - Real-time notifications for security events
- Apprise Support - Send alerts to 100+ services (Discord, Slack, Telegram, etc.)
- Customizable Triggers - Configure alerts for new devices, blocks, and more
- Secure Delivery - TLS/STARTTLS encryption and authentication support
User Interface & Experience
- Customizable Messages - Tailor blocking messages for different scenarios
- Rich Media Display - Thumbnails and background artwork for active streams
- Theme Support - Modern dark/light mode
- Responsive Design - Optimized for mobile and desktop
- Custom Plex Integration - Seamless content access with custom URLs
Configuration & Management
- Adjustable Monitoring - Configure refresh intervals to suit your needs
- SSL/TLS Support - Secure connections with certificate validation controls
- Database Management - Export and import for backup and migration
- Automatic Cleanup - Remove inactive devices based on inactivity periods
- Administrative Tools - Database management from the UI
- Update Management - Automatic update checking with version mismatch detection
Screenshots
<img width="3024" alt="Guardian Dashboard - Device Management" src="https://github.com/user-attachments/assets/d0283784-c009-467e-8e38-b0d7f3907ba0" /> <img width="3024" alt="Guardian Dashboard - Active Streams" src="https://github.com/user-attachments/assets/3c2e9d9b-0836-4e95-913d-fcc71634820f" />Installation
Docker (Recommended)
Prerequisites
- Docker and Docker Compose installed
- Plex Media Server running and accessible
- Plex authentication token (How to find your token)
Quick Start
# Create a directory for Guardian
mkdir -p guardian && cd guardian
# Download configuration files
curl -o docker-compose.yml https://raw.githubusercontent.com/HydroshieldMKII/Guardian/main/docker-compose.example.yml
curl -o .env https://raw.githubusercontent.com/HydroshieldMKII/Guardian/main/.env.example
# Start Guardian
docker compose up -d
Access Guardian
- Local: http://localhost:3000
- Remote:
http://YOUR-SERVER-IP:3000
Build from Source
# Clone the repository
git clone https://github.com/HydroshieldMKII/Guardian.git
cd Guardian
# Start Guardian with build
docker compose -f docker-compose.dev.yml up -d --build
Proxmox
Deploy Guardian in a lightweight LXC container using the community script.
Prerequisites
- Proxmox VE server
- Plex Media Server running and accessible
- Plex authentication token
Installation
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/guardian.sh)"
Follow the interactive prompts, then access Guardian at http://[CONTAINER-IP]:3000.
[!NOTE] For detailed Proxmox configuration options, see the community script documentation.
Unraid
Prerequisites
- Unraid server
- Compose Manager plugin installed
Installation Steps
-
Navigate to Docker → Compose
-
Create a new stack
-
Paste the contents of
docker-compose.example.yml -
Customize volumes and ports (optional):
volumes: - /mnt/user/appdata/guardian:/app/data ports: - "3456:3000" -
Deploy with Compose Up
-
Access at
http://[UNRAID-IP]:3456
Configuration
Guardian can be configured through environment variables or the web interface.
Environment Variables
Create a .env file to customize deployment settings:
| Variable | Description | Default | Applies To |
| ------------------------- | -------------------- | -------- | ----------------------- |
| PLEXGUARD_FRONTEND_PORT | Web interface port | 3000 | Docker, Proxmox, Unraid |
| VERSION | Docker image version | latest | Docker, Unraid |
Example .env file:
PLEXGUARD_FRONTEND_PORT=3456
VERSION=v1.2.3
File Locations
- Docker: Place
.envin the same directory asdocker-compose.yml - Proxmox: Place
.envat/opt/guardian/.envinside the LXC
Applying Changes
Docker:
docker compose up -d --force-recreate
Proxmox:
systemctl restart guardian-backend guardian-frontend
[!IMPORTANT] Most configuration is done through Guardian's web interface. Environment variables are primarily for deployment customization.
Updating
[!IMPORTANT] Always backup your database before updating (Settings → Admin Tools → Export Database).
Docker
Manual Update:
docker compose pull
docker compose up -d
Automated Updates with Watchtower:
Guardian works seamlessly with Watchtower for automatic updates.
Proxmox
Update from the LXC console:
# Method 1
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/guardian.sh)" -u
# Method 2
update
Application Settings
Configure Guardian through the web interface Settings page.
Plex Integration
Connect Guardian to your Plex Media Server to enable session monitoring and device management.
| Setting | Description | Default |
| --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
| Plex Server IP | The IP address or hostname where your Plex Media Server is running (e.g., 192.168.1.100 or plex.local) | - |
| Plex Server Port | The port number your Plex server listens on for API requests | 32400 |
| Plex Authentication Token | Your Plex authentication token required for Guardian to communicate with your server (How to find your token) | - |
| Use SSL/HTTPS | Connect to your Plex server using encrypted HTTPS instead of unencrypted HTTP | Disabled |
| Ignore SSL Certificate Errors |
