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.
On this page
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.
Prerequisites
Before installing plugins, make sure FediSuite is already running and the following prerequisites are met:
docker-compose.yml and .env must be present and correctly configured. FediSuite must have started successfully at least once.
Required for mounting volume mounts. Docker Compose can be installed as a plugin (docker compose) or standalone (docker-compose) — both variants work.
For cloning the plugin repository. Already pre-installed on most Linux systems. Check with: git --version
You must be able to create a new subfolder and edit docker-compose.yml.
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:
cd /path/to/your/fedisuite-folder
git clone https://codeberg.org/christinloehner/FediSuite-Plugins.git plugins
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:
ls -la plugins/
You should see something like this:
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
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):
- ./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
app:
image: ${FEDISUITE_IMAGE:-christinloehner/fedisuite:latest}
...
volumes:
- ./uploads:/app/uploads
- ./plugins:/app/plugins ← add this line
Service: worker1
worker1:
image: ${FEDISUITE_IMAGE:-christinloehner/fedisuite:latest}
...
volumes:
- ./uploads:/app/uploads
- ./plugins:/app/plugins ← add this line
Service: worker2
worker2:
image: ${FEDISUITE_IMAGE:-christinloehner/fedisuite:latest}
...
volumes:
- ./uploads:/app/uploads
- ./plugins:/app/plugins ← add this line
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
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.
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.
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
Open FediSuite in the browser and log in as admin.
Navigate to the Admin area.
Find the Plugins section.
The installed plugin should be listed there.
Option 2 — Via container logs
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.
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.
cd plugins
git pull
cd ..
docker compose up -d
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.
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.
volumes:
- ./uploads:/app/uploads
# - ./plugins:/app/plugins ← commented out
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
docker compose up -d --force-recreate
mv FediSuite-Plugins plugins or re-clone with: git clone … plugins
docker compose config shows syntax errors
cd plugins && git pull && cd .. && docker compose up -d
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