How to Self-Host Organizr with Docker Compose

What Is Organizr?

Organizr is a self-hosted dashboard that embeds your web applications inside tabs within a single interface. Instead of linking to separate services, Organizr loads them in iframes so you can switch between Sonarr, Radarr, Plex, and anything else without leaving the page. It includes multi-user authentication with Plex/Emby SSO, group-based access control, and integration with nginx’s auth_request for proxy-level authentication.

Official site: github.com/causefx/Organizr

Prerequisites

  • A Linux server (Ubuntu 22.04+ recommended)
  • Docker and Docker Compose installed (guide)
  • 500 MB of free disk space
  • 256 MB of RAM (minimum)

Docker Compose Configuration

Create a docker-compose.yml file:

services:
  organizr:
    image: organizr/organizr:latest  # No semver Docker tags published — :latest is the only option
    container_name: organizr
    hostname: organizr
    ports:
      - "9983:80"
    volumes:
      - organizr_config:/config
    environment:
      - PUID=1000          # User ID for file permissions
      - PGID=1000          # Group ID for file permissions
      - TZ=America/New_York # Your timezone
    restart: unless-stopped

volumes:
  organizr_config:

Note on versioning: Organizr v2 uses a rolling release model. The container pulls the latest code from the v2-master branch on startup. There are no pinned version tags — latest is the only option.

Start the stack:

docker compose up -d

Initial Setup

  1. Open http://your-server-ip:9983 in your browser
  2. The setup wizard walks you through initial configuration:
    • Install Type: Choose Personal for home use or Business for shared environments
    • Admin Account: Create your admin username and password
    • Database: Uses SQLite by default (built-in, no external database needed)
    • Hash Key and Registration Password: Auto-generated; the registration password prevents unauthorized signups
  3. After setup, you’re logged into the admin panel

Adding Tabs

  1. Navigate to Settings > Tab Editor
  2. Click Add Tab
  3. Configure:
    • Tab Name: Display name in the navigation
    • Tab URL: Full URL of the service to embed (e.g., http://sonarr:8989)
    • Tab Type: Choose iFrame for embedding services, Organizr for built-in pages, or Custom HTML
    • Tab Group: Set which user groups can see this tab

Configuration

Tab Types

TypeDescriptionUse Case
iFrameEmbeds an external service in the pageMost self-hosted apps (Sonarr, Radarr, Jellyfin)
OrganizrBuilt-in Organizr pagesHomepage, calendar, speed test
Custom HTMLRaw HTML contentCustom pages, embedded widgets

Authentication Methods

Organizr supports multiple authentication backends:

MethodDescription
LocalBuilt-in username/password
PlexLogin with Plex account credentials
EmbyLogin with Emby account credentials
LDAPActive Directory / LDAP integration
sFTPAuthenticate against an sFTP server

Configure in Settings > SSO. Plex SSO is the most popular option for media server setups.

User Groups and Access Control

Organizr uses group-based permissions:

GroupLevelDescription
Admin0Full access, settings, user management
Co-Admin1Near-full access minus critical settings
Super User2Access to most tabs
Power User3Standard access
User4Basic access
Guest998No login required

Assign each tab a minimum group level. Users only see tabs their group is authorized for.

Nginx Auth Request

Organizr can act as an authentication gateway for nginx reverse proxies. Add to your nginx config:

location /auth-admin {
    internal;
    proxy_pass http://organizr:80/api/v2/auth?group=0;
}

location /sonarr {
    auth_request /auth-admin;
    proxy_pass http://sonarr:8989;
}

This requires users to authenticate through Organizr before accessing proxied services.

Environment Variables

VariableDefaultDescription
PUID1000User ID for file permissions
PGID1000Group ID for file permissions
TZUTCTimezone
branchv2-masterCode branch (v2-master for stable, v2-develop for development)
fpmtrueSet to false to disable PHP-FPM

Reverse Proxy

Organizr works best behind a reverse proxy, especially when using the auth_request feature. See Reverse Proxy Setup.

Key consideration: Services embedded in iframes must be accessible from the client’s browser, not just from the Organizr container. If your services are on a private network, you’ll need either a VPN or the services exposed through the same reverse proxy.

Backup

The /config volume contains all settings, user data, and the SQLite database:

docker compose stop
tar czf organizr-backup-$(date +%Y%m%d).tar.gz /path/to/organizr/config
docker compose start

See Backup Strategy for automated approaches.

Troubleshooting

iFrame Refuses to Load Service

Symptom: Tab shows “Refused to display in a frame” error. Fix: Many applications set X-Frame-Options: DENY by default. You need to configure the target application to allow framing, or remove the header in your reverse proxy:

proxy_hide_header X-Frame-Options;

Plex SSO Not Working

Symptom: Plex login button appears but authentication fails. Fix: In Settings > SSO > Plex, ensure your Plex server URL is correct and accessible from the Organizr container. The Plex machine identifier must match. Re-fetch the Plex token if it expired.

Blank Page After Update

Symptom: Organizr shows a blank page after container restart. Fix: Organizr auto-updates on restart. If an update fails mid-way, clear the PHP cache:

docker exec organizr rm -rf /config/www/organizr/cache/*
docker restart organizr

Registration Page Appears for All Visitors

Symptom: Unauthenticated users see a registration page. Fix: In Settings > System Settings, disable public registration and set a registration password.

Resource Requirements

MetricValue
RAM~100-150 MB idle, ~200 MB with active iframes
CPULow — PHP serves the UI; iframes load directly from source services
Disk~200 MB for application + database

Verdict

Organizr is the most feature-rich dashboard option, and the only one that truly unifies your services rather than just linking to them. The tabbed iframe approach means you work inside a single browser tab instead of juggling dozens. Combined with Plex SSO and nginx auth_request, it becomes both a dashboard and an authentication layer for your entire homelab.

The downsides: iframes can break (X-Frame-Options), the UI feels dated compared to Homarr or Homepage, and the rolling-release model means no version pinning. If you just want a clean link page, Homer or Homepage are more appropriate. If you want a modern, actively-developed dashboard with service integrations, Homarr is the current community favorite.

Frequently Asked Questions

How is Organizr different from Homarr or Homepage?

Organizr embeds your services in iframes within tabs — you interact with Sonarr, Radarr, Plex directly inside Organizr without leaving the page. Homarr and Homepage are link-based dashboards that show service status cards and open services in new tabs. Organizr also includes built-in authentication with Plex SSO and nginx auth_request support. Choose Organizr for a unified workspace; choose Homarr or Homepage for a clean launch page.

Why don’t some services load in Organizr tabs?

Services that set X-Frame-Options: DENY or X-Frame-Options: SAMEORIGIN in their HTTP headers cannot be loaded in iframes. This is a browser security feature. Some apps (like Grafana) allow you to configure this setting. For apps that can’t be changed, Organizr shows the tab but the content won’t load — you’ll need to access those services directly.

Does Organizr provide SSO for my other apps?

Organizr integrates with nginx’s auth_request module to act as an authentication proxy. This means you can protect services behind nginx with Organizr’s login — users authenticate once with Organizr and get access to all configured services. It also supports Plex SSO and Emby SSO, so Plex/Emby users can log in without separate Organizr credentials.

Is Organizr still maintained?

Organizr development has slowed compared to newer dashboards like Homarr. It uses a rolling-release model with no version-pinned Docker tags. The PHP codebase works but the UI feels dated. Community activity continues through GitHub and Discord. If you’re starting fresh, Homarr is generally the recommended alternative for active development and modern features.

How much RAM does Organizr use?

Organizr itself uses ~100-150 MB (PHP application). The iframes loading within tabs consume browser memory on the client side, not server memory. This makes Organizr one of the lightest dashboards to self-host. It runs comfortably on a Raspberry Pi or any minimal VPS.

Can Organizr show notifications from my services?

Yes. Organizr can display notifications from Sonarr, Radarr, Lidarr, and other *arr apps in a unified notification panel. It also shows request counts from Ombi/Overseerr. These integrations are configured in the Organizr admin panel with API keys from each service.

Comments