Plugins

Installing Plugins

Plugins extend FediSuite with additional features — for example support for new social networks like Bluesky. Installation runs entirely through Docker and requires no programming knowledge.

What are Plugins?

Plugins are optional extensions for FediSuite. The core installation remains completely unchanged — plugins are maintained separately and integrated via Docker without modifying the main Docker image. This means FediSuite itself can be updated without any problems, regardless of which plugins you use.

All official plugins are maintained in the christinloehner/FediSuite-Plugins repository. A single git clone of this repository installs all available plugins at once — but only those that you actually enable in FediSuite will be active.

Currently available plugins

fedisuite-plugin-bluesky v1.0.0

Adds full Bluesky support: connect accounts, publish posts, imports and analytics updates.

Note: The plugin system is still in an early stage. More plugins will be added with future FediSuite versions.

Prerequisites

Before installing plugins, make sure FediSuite is already running and the following prerequisites are met:

Running FediSuite installation Required

docker-compose.yml and .env must be present and correctly configured. FediSuite must have started successfully at least once.

Docker Engine ≥ 24.0 and Docker Compose ≥ 2.0 Required

Required for mounting volume mounts. Docker Compose can be installed as a plugin (docker compose) or standalone (docker-compose) — both variants work.

Git Required

For cloning the plugin repository. Already pre-installed on most Linux systems. Check with: git --version

Write access to the FediSuite folder Required

You must be able to create a new subfolder and edit docker-compose.yml.

1

Clone the Plugin Repository

Navigate to your FediSuite installation folder — the directory where your docker-compose.yml is located. Clone the plugin repository there as a subfolder named plugins:

bash
cd /path/to/your/fedisuite-folder
git clone https://codeberg.org/christinloehner/FediSuite-Plugins.git plugins
Important: The folder must be named exactly plugins — not FediSuite-Plugins or anything else. FediSuite expects the plugins folder under exactly this name. The last part of the git clone command (plugins) specifies this target name.

Verify that the folder was created correctly:

bash
ls -la plugins/

You should see something like this:

Output
drwxr-xr-x  .git/
-rw-r--r--  LICENSE
-rw-r--r--  PLUGIN-AUTHORING.de.md
-rw-r--r--  PLUGIN-AUTHORING.md
-rw-r--r--  README.de.md
-rw-r--r--  README.md
drwxr-xr-x  fedisuite-plugin-bluesky/

Your folder structure should look like this after this step:

Folder structure

fedisuite/
├── .env
├── docker-compose.yml
├── postgres/
├── uploads/
└── plugins/                      ← newly cloned
    ├── .git/
    ├── fedisuite-plugin-bluesky/
    ├── README.md
    └── README.de.md
2

Update docker-compose.yml

FediSuite runs entirely in Docker containers. For these containers to be able to see and use the plugins folder, it must be mounted as a volume. A volume is essentially a shared connection between a folder on your server and a path in the container — the container can then read this folder as if it were part of its own file system.

Open your docker-compose.yml with a text editor and add the following line to the volumes: section of all three services (app, worker1 and worker2):

yaml
- ./plugins:/app/plugins

What do the three parts of this line mean?

./plugins

The folder on your server — the one you cloned in Step 1. The dot represents the current directory, i.e. where your docker-compose.yml is located.

/app/plugins

The path inside the container where FediSuite looks for plugins. This path is fixed and must not be changed.

Here's how the three services look after the update:

Service: app

yaml
  app:
    image: ${FEDISUITE_IMAGE:-christinloehner/fedisuite:latest}
    ...
    volumes:
      - ./uploads:/app/uploads
      - ./plugins:/app/plugins    ← add this line

Service: worker1

yaml
  worker1:
    image: ${FEDISUITE_IMAGE:-christinloehner/fedisuite:latest}
    ...
    volumes:
      - ./uploads:/app/uploads
      - ./plugins:/app/plugins    ← add this line

Service: worker2

yaml
  worker2:
    image: ${FEDISUITE_IMAGE:-christinloehner/fedisuite:latest}
    ...
    volumes:
      - ./uploads:/app/uploads
      - ./plugins:/app/plugins    ← add this line
If you use the official FediSuite repository: The self-hosting repository at christinloehner/FediSuite already includes the plugin volume mount as a default in docker-compose.yml. In that case, Step 2 is already done. You can verify with:
docker compose config | grep plugins
3

Restart FediSuite

Restart the containers so Docker reads the updated docker-compose.yml and activates the plugin volume. Plugins are automatically detected and loaded by FediSuite when the container starts.

bash
docker compose up -d

What happens with this command:

  • 1 Docker re-reads the updated docker-compose.yml.
  • 2 Affected containers (app, worker1, worker2) are recreated with the mounted plugin volume.
  • 3 FediSuite starts and automatically detects all plugins from the mounted folder.
  • 4 Already running containers without changes (e.g. db) remain unaffected.
If containers are not recreated: Sometimes Docker caches the container configuration and restarts containers without applying changes. If plugins don't appear after the restart, force a full recreation:
docker compose up -d --force-recreate

Verify Installation

After restarting, you can verify that plugins were loaded correctly in two ways: through the FediSuite interface or through the container logs.

Option 1 — Via the FediSuite interface

1

Open FediSuite in the browser and log in as admin.

2

Navigate to the Admin area.

3

Find the Plugins section.

4

The installed plugin should be listed there.

Option 2 — Via container logs

bash
docker compose logs app | grep -i plugin

If plugins were detected, corresponding messages will appear in the app logs. An empty result means either no plugins were loaded or FediSuite logs minimally about plugins.

bash — general status check
docker compose ps                        # are all containers running?
docker compose config | grep plugins     # is the plugin mount active?

Applying Plugin Updates

Since plugins are managed as a Git repository, updating is simple: git pull in the plugins folder fetches all changes, then restart the containers.

bash
cd plugins
git pull
cd ..
docker compose up -d
Plugin updates are independent from FediSuite updates. You can update FediSuite and plugins separately. When you update FediSuite (docker compose pull && docker compose up -d), your plugins remain untouched as long as you don't touch the plugins folder.

Removing a Plugin

There are two options: permanently delete a single plugin or temporarily disable all plugins.

Permanently remove a single plugin

Delete the plugin folder and restart the containers. FediSuite will no longer load the plugin on the next start.

bash — example: remove the Bluesky plugin
rm -rf plugins/fedisuite-plugin-bluesky
docker compose up -d

Temporarily disable all plugins

Comment out the volume mount in your docker-compose.yml for all three services. The plugins folder on the server remains intact — it just won't be mounted into the containers.

yaml — comment out the line in app, worker1 and worker2
    volumes:
      - ./uploads:/app/uploads
      # - ./plugins:/app/plugins    ← commented out
bash
docker compose up -d

Troubleshooting

If a plugin doesn't appear in the admin area after installation, go through this checklist:

Checklist: Plugin not showing up

  • The plugins folder is named exactly plugins — not FediSuite-Plugins or similar.
  • The plugin repository was cloned inside the FediSuite folder (next to docker-compose.yml).
  • The volume mount ./plugins:/app/plugins is added to all three services: app, worker1 and worker2.
  • The containers were restarted after changing docker-compose.yml (docker compose up -d).
  • The plugin subfolder contains a plugin.json file (ls plugins/fedisuite-plugin-bluesky/).

Common error sources at a glance

Symptom Cause Solution
Plugin not visible in admin area Volume mount missing or containers not recreated docker compose up -d --force-recreate
Folder is named FediSuite-Plugins git clone called without target folder name mv FediSuite-Plugins plugins or re-clone with: git clone … plugins
Container does not restart YAML indentation error in docker-compose.yml docker compose config shows syntax errors
Plugin errors in logs Outdated plugin version or API incompatibility cd plugins && git pull && cd .. && docker compose up -d
bash — diagnostic commands
ls -la plugins/                          # folder present and contents correct?
ls -la plugins/fedisuite-plugin-bluesky/ # plugin.json present?
docker compose config | grep plugins     # volume mount configured?
docker compose ps                        # all containers running?
docker compose logs app                  # check app logs for errors
docker compose logs app | grep -i plugin # search specifically for plugin messages