# Organizr: a PHP front door for the pile of services on your homelab

> A tabbed dashboard in PHP that fronts Plex, Sonarr, Radarr and everything else you have running, with user groups, iFrame toggles and login delegated to services you already run.

**causefx/Organizr** — HTPC/Homelab Services Organizer - Written in PHP

- Repository: https://github.com/causefx/Organizr
- Stars: 5,822 · Forks: 314
- Language: PHP
- License: GPL-3.0
- Published: 2026-10-06 · Updated: 2026-10-06 · Language: en
- Canonical page: https://hysenlabs.com/projects/causefx-organizr

## The problem it solves is memorising ports

The README opens with the pitch in plain language. Do you have quite a bit of services running on your computer or server? Do you have a lot of bookmarks or have to memorize a bunch of ip's and ports? The answer Organizr gives is Tabs, which load into one webpage, plus user accounts so you can hand specific tabs to specific people.

That is a narrower claim than most dashboards make and it is the right one. Organizr is not trying to graph your disk usage or alert you when a download client stalls. It is the page you open first, and its job is that every service you run is one click from there, with the login already handled.

The GitHub topic tags tell you who it is aimed at, and the list is a roll call of the *arr stack: couchpotato, couchpotatoserver, emby, nzbget, ombi, plex, radarr, sabnzbd, sonarr. Alongside those come the general-purpose ones: bookmark, chat, dashboard, homepage, htpc, landing-page, php, server. Someone running Sonarr and Radarr in 2026 recognises that list immediately, because those are the services that have no unified index and each one wants its own URL.

The project is GPL-3.0 licensed, written in PHP, and the repository description calls it an HTPC/Homelab Services Organizer. The stated requirement is PHP 7.2 or newer.

## Login delegated to Plex, Emby, LDAP or sFTP

The feature list has twenty-four bullets and login is the densest part of it. You can log in with Plex or Emby credentials, with LDAP, or with sFTP credentials. Nginx Auth_Request support is there too, documented separately on the wiki under server authentication, which means Organizr can sit behind a reverse proxy that has already authenticated the request.

The reason this matters is that the services behind Organizr have their own accounts. If your landing page requires a second login per service, users give up, and on a homelab the users are your family. Delegating authentication to Plex or Emby means one identity you already maintain everywhere.

Around that core sit the details that separate a personal script from something a household can use. Unlimited User Groups. A user management console where you create, delete and promote users. A registration password so strangers cannot self-register into a network that exposes your media server. An Organizr login log viewer, which is the feature that will matter to you the first time you want to know who saw what.

Then the presentation layer: custom tabs for your services, upload new icons, a customisable top bar with your own site logo or site name, pin and unpin the sidebar, quick access tabs addressed by URL fragment such as www.example.com/#Sonarr, a default page on launch, fullscreen support, mobile support, and personalising any theme with access to the colour palette. Optional iFrame embedding per tab is the one setting that decides whether Organizr feels like one application or a page of frames, and it is a toggle rather than a fixed choice.

## Deploying the container the way the README intends

The README's usage section is a Docker command, not a PHP install guide, and that is a signal about the intended audience. Anyone who has a homelab already has Docker running.

```bash
docker create \
  --name=organizr \
  -v <path to data>:/config \
  -e PGID=<gid> -e PUID=<uid>  \
  -p 80:80 \
  -e fpm=false \
  -e branch=v2-master \
  organizr/organizr
```

Four things in that command carry decisions. The `/config` volume is where state lives, so it is the one thing worth putting on real storage. PGID and PUID are the usual container ownership pair, and the README defers their explanation to the separate docker-organizr repository. The `fpm` variable, set to false in the example, skips the FastCGI process manager path, which is the setting to change if you are running something other than a stock PHP image. And `branch` is given as v2-master, which tells you the v2 line is the current one.

The parameters section then explains port mapping in a way that is friendlier than most container docs. A mapping is written host side then container side, so `-p 8080:80` exposes the container's port 80 on the host's port 8080, and the example spells out that http://192.168.x.x:8080 then shows what is running inside on port 80.

Two operational commands are given for afterwards.

```bash
docker exec -it organizr /bin/bash
docker logs -f organizr
```

Shell access while the container runs, and log streaming. The README also links the official image at hub.docker.com/r/organizr/organizr and a separate Organizr/docker-organizr repository that is where the parameter detail and the CI badge live.

## v2 was a rewrite, not an upgrade

The releases are where this project gets confusing, and the confusion is real rather than yours. The three most recent tags are all from the v1 era: 1.75, a Maintenance Release in March 2018; 1.80, Bug and Security Fix in May 2018, which also announced that Organizr v2 Beta was out; and 1.90, published on 2019-02-26 under the title Update before FEB 28 to keep v1 working.

That last release note is the important one, and it is unusually direct for a project README. It says this is the final release before v2, and that anyone who does not update before 28 February should edit config.php to change their branch from master to v1-master, so the branch change does not break their install. Then it tells anyone who wants v2 that they need the v2-master branch, that on Docker they should use the image organizrtools/organizr-v2, and that this is a complete rewrite which cannot be updated into and has to be set up from scratch.

So there are two generations of this software and a migration between them that is a reinstall. The default branch in the repository today is v2-master, which is consistent with the container default.

A third-party concern sits alongside this. The README notes that the official site will be refreshed soon and that the wiki will be updated soon, both phrased in the future tense at time of writing. Documentation for a project whose documentation lives on a separate domain is worth budgeting extra time for.

## A plain PHP tree with an api directory and a cron job

The repository tree is short enough to read in one pass, and it tells you what kind of application this is: `index.php` at the root, an `api/` directory, `bootstrap/`, `css/`, `js/`, `less/`, `plugins/`, `scripts/`, `docs/`, plus `cron.php`, `poster_updates.js`, `server.log` and a `tmp/` directory.

There is no framework directory and no dependency manifest in that list. No composer.json, no package.json, no vendor folder. So this is PHP application code you point a web server at, with the front-end assets written by hand in `css/`, `less/` and `js/`, and the extension point being `plugins/` rather than a package registry.

Three files in that tree are worth singling out because they explain features in the README. `api/` is where the XHR layer lives, which is what makes the tabbed interface and the login log viewer work without page reloads. `plugins/` is where the icons and the theme come from, and the README's screenshot URLs point into `plugins/images/organizr/`, confirming that layout. `cron.php` is the scheduled-task entry point, which in this project means the kind of background housekeeping a homelab dashboard needs, such as refreshing artwork.

`server.log` and `tmp/` being committed or expected in the tree is normal for self-hosted PHP and also a reminder that this application writes to its own filesystem. The `/config` volume in the Docker command is where the durable state belongs.

## Security features that go beyond a bookmark list

Organizr is exposed to your network, and the feature list reflects someone who has thought about that. There is Fail2ban support with its own wiki page, which means the login form is written to feed a fail2ban filter rather than just hoping nobody guesses the password. There is a forgot password flow that emails a new password, and the README is upfront that it needs a mail server configured first. There is a registration password to protect new account creation. And there is Nginx Auth_Request support for people who already have an authenticating reverse proxy.

The v1.80 release, titled Bug and Security Fix, says it fixed some security issues without enumerating them, which is the least you should expect from a self-hosted PHP app that has been running on home networks for years. That is a fair reason to keep the container image current even though the release tags stopped moving.

What the project does not claim is a formal security process. The repository has `CODE_OF_CONDUCT.md` and `CONTRIBUTING.md`, and `.github/`, but no security policy file in the tree, which for an application sitting behind your LAN with credentials for your media server is a gap worth knowing about.

For scale, the repository has 5,817 stars, 313 forks and 32 open issues, with the last push on 2026-05-19 and no archive flag. Thirty-two open issues against nearly six thousand stars is a low ratio, and combined with the stopped tags it reads as a stable, slowly maintained project rather than an abandoned one.

## Conclusion

Organizr is doing a narrower job than a monitoring stack and doing it well: it is the front door, the bookmark list and the access control layer for a home server full of services that each have their own login. The v2 branch is a complete rewrite that you install from scratch rather than update into, the Docker image is the sane deployment path, and the repository tree shows a plain PHP application with an `api/` directory, a `plugins/` folder, `bootstrap/` and a `cron.php` rather than a framework. The last push was 2026-05-19 and the newest tag in the repository is still 1.90 from 2019, which is the one thing to weigh before you commit to it: the code moves on the v2-master branch while the release tags stopped. Everything you need to judge it is in the feature list and in the wiki at docs.organizr.app.

## FAQ

### What is Organizr used for?

It is a landing page for a homelab. You create Tabs for the services you run, they all load into one page, and access to each tab is controlled by user groups. The repository topics name the intended audience directly: plex, sonarr, radarr, sabnzbd, nzbget, ombi, emby and couchpotato.

### How do I install Organizr with Docker?

The README gives a single `docker create` command from the organizr/organizr image, mapping a host path to `/config` for state, passing PGID and PUID, and exposing a port. Two optional environment variables matter: `fpm=false` to skip the FastCGI process manager, and `branch`, which defaults to v2-master.

### Can Organizr log users in with Plex or LDAP?

Yes. The feature list names login with Plex, Emby, LDAP or sFTP credentials, plus multiple login support and Nginx Auth_Request for deployments where a reverse proxy already authenticated the request. Users can then be created, promoted and grouped from the user management console.

### What is the difference between Organizr v1 and v2?

Version 2 is a complete rewrite rather than an upgrade. The 1.90 release from 2019-02-26 tells v1 users to pin their config.php to the v1-master branch, and tells anyone moving to v2 to install the v2-master branch, use the organizrtools/organizr-v2 image if on Docker, and set the install up from scratch.

### What PHP version does Organizr need?

The README states PHP 7.2 or newer. There is no dependency manifest in the repository tree, no composer.json or vendor directory, so it is plain PHP application code with an api directory, a plugins folder and a cron.php entry point.

## Sources

- [causefx/Organizr on GitHub](https://github.com/causefx/Organizr)
- [Issues](https://github.com/causefx/Organizr/issues)
- [License: GPL-3.0](https://github.com/causefx/Organizr/blob/v2-master/LICENSE)
- [README](https://github.com/causefx/Organizr/blob/v2-master/README.md)
- [Releases](https://github.com/causefx/Organizr/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/causefx-organizr
