Skip to content

Since: 0.18.0 (catalog browser reworked to git-repo plugins.json sources)

TL;DR

The plugin catalog is a browsable list of installable plugins, sourced from a plugins.json document in a git repo. The default catalog is detain/phlix-plugins and ships configured. Browse to Settings → Plugins, find a plugin card, and click Install — the catalog browser hands the plugin's repo URL to the same installer as install-from-URL. You can also add your own catalog URL, and install / uninstall / configure plugins straight from the catalog view.


1. What Is the Plugin Catalog

A catalog is a plugins.json document hosted in a git repository, listing installable plugins. The server fetches every configured catalog server-side (not from the browser) so the admin UI is not blocked by GitHub-raw CORS, and so every fetch goes through one auditable egress path. The admin Plugins section then renders each catalog's plugins as cards.

The default catalog, detain/phlix-plugins, lists the first-party plugins — phlix-plugin-anidb, phlix-plugin-myanimelist, and phlix-plugin-trakt. The catalog replaces manual URL pasting for operators who prefer a curated list, but URL-pasting still works for anything not in a catalog (see Install from URL).

For the plugins.json format and the full plugin list, see the Plugin Catalog reference.


2. Browse and Install from the Web UI

  1. Browse to Settings → Plugins (or /admin/plugins).
  2. The page renders a card per plugin across every configured catalog. Each card shows its title, type, summary, author, and tags.
  3. Each card carries its local install state — installed / not installed, and enabled / disabled.
  4. Click Install on the chosen plugin. The catalog browser hands the plugin's repo URL to the installer (the same path as install-from-URL); the plugin is downloaded and staged.
  5. It lands disabled in the plugins table — flip the toggle to enable.

A plugin you installed from a bare URL that is not listed in any catalog still appears, grouped under an "Other installed plugins" section.


3. Adding Another Catalog

You can point the Plugins section at additional catalogs (a private or community-maintained list) by adding their URL in the admin UI:

  • Paste a catalog URL — it must be an http:// or https:// URL.
  • The new source is fetched server-side and its plugins join the card grid.
  • Operator-added sources are persisted as a plugins.catalog.sources override in server_settings.
  • The default detain/phlix-plugins source cannot be removed. The default itself is set in config/plugins.php under catalog.default_source and can be overridden per install.

A catalog that fails to fetch or parse is reported as an error in the UI rather than blanking the whole page — one dead catalog cannot take the rest down.


4. Enabling and Configuring

After install:

  • Enable: flip the toggle in Settings → Plugins.
  • Uninstall: disable, then remove — this deletes the on-disk files and the database row.
  • Configure: click the wrench / configure action to open the plugin's settings form. Settings vary by plugin type:
Plugin TypeTypical Config Fields
metadata-providerAPI key, endpoint URL
auth-providerProvider URL, client ID/secret, scopes
scrobblerService credentials
transcoderPriority, encoding profile
ui-themeNo required config — applies immediately on enable

Settings are persisted in the plugins.settings_json column. Each plugin exposes its own fields as declared in its plugin.json settings block. The install / uninstall / enable / disable / configure endpoints are unchanged by the catalog rework — only catalog discovery is new.


5. What Can Go Wrong

Failure 1: Catalog Fails to Load

Symptom: A catalog source shows an error in the Plugins section, or its plugins are missing from the card grid.

Cause: The catalog URL was unreachable, timed out, returned non-JSON, or its document was missing a plugins array.

Fix: Verify the URL resolves to a valid plugins.json (the server resolves a repository URL to its raw plugins.json before fetching). Other catalogs keep rendering regardless — the failure is isolated to the broken source.


Failure 2: "A url field is required" / "must be an http(s) URL"

Symptom: Adding a catalog source fails with plugin.catalog.url.required or plugin.catalog.url.invalid.

Cause: The submitted URL was empty, or used a scheme other than http:// / https://.

Fix: Supply a non-empty http:// or https:// catalog URL.


Failure 3: Version Incompatibility

Symptom: Install fails because the plugin requires a newer phlix-server than you are running.

Cause: The plugin's plugin.json declares a phlix_min_server_version higher than the running server.

Fix: Upgrade phlix-server before installing.


Failure 4: Plugin Requires Restart

Symptom: Plugin is enabled but its hooks do not fire.

Cause: Plugin registers event listeners only at container boot, not on enable.

Fix: Restart phlix-server:

bash
systemctl restart phlix
# or, in the foreground, stop (Ctrl+C) and restart:
php public/index.php

The plugin auto-re-attaches on boot for enabled plugins.


6. Next Steps

BSD-3-Clause