Pleroma docker container with some useful scripts to manage it
Go to file
bronze 3e64b4b2dd My own modifications. Enjoy!
- Bronze
2023-08-13 01:50:00 -04:00
.github Bump actions/checkout from 3.1.0 to 3.2.0 (#73) 2023-01-23 01:28:07 +01:00
extras My own modifications. Enjoy! 2023-08-13 01:50:00 -04:00
scripts My own modifications. Enjoy! 2023-08-13 01:50:00 -04:00
.dockerignore 🙈 Add .dockerignore 2018-09-11 02:41:41 +02:00
Dockerfile My own modifications. Enjoy! 2023-08-13 01:50:00 -04:00
LICENSE My own modifications. Enjoy! 2023-08-13 01:50:00 -04:00 My own modifications. Enjoy! 2023-08-13 01:50:00 -04:00 My own modifications. Enjoy! 2023-08-13 01:50:00 -04:00
config-override.exs Update config-override.exs (#67) 2022-11-21 14:05:15 +01:00
config.exs My own modifications. Enjoy! 2023-08-13 01:50:00 -04:00
docker-compose.yml My own modifications. Enjoy! 2023-08-13 01:50:00 -04:00


Pleroma is a federated social networking platform, compatible with GNU social and other OStatus implementations. It is free software licensed under the AGPLv3.

It actually consists of two components: a backend, named simply Pleroma, and a user-facing frontend, named Pleroma-FE.

Its main advantages are its lightness and speed.

Why Docker?

Boxing up Pleroma in a docker container allows it to be portable, and keeps your host system clean. The software and its dependencies will all be under the pleroma_web container (created with the lightweight elixir:alpine base image) while its postgres database will live under pleroma_db image. Only port 4000 will be exposed under localhost.

Build-time variables

  • PLEROMA_VER : Pleroma version (latest commit of the develop branch by default)
  • GID: group id (default: 911)
  • UID: user id (default: 911)



This container is meant to run behind a reverse proxy. Please set up letsencrypt and a Nginx reverse proxy in a container or on your host by using the example Nginx config. There's also a config file in the extras folder you could take a look at.

Log into your server and clone this repository with:

git clone

Go into the new docker-pleroma folder and run:

sh ./scripts/

This first time setup script will ask you a few questions, generate a random password for your postgres database, put the results into your docker compose and create an admin account.

Remember that password reset link at the end will only work if your reverse proxy is configured and running (duh!).

Any further configuration can be done as soon as you log into your admin account, over admin-fe. It will be the speedometer icon right next to the cog on the top right of the webpage.


A very helpful bash alias for managing your pleroma instance:

alias pleroma-ctl='docker exec -it pleroma_web sh ./bin/pleroma_ctl'

Now you can easily run any of the CLI commands cited in the documentation.

Common tasks

Update to the latest pleroma-fe frontend using:

sh ./scripts/

Update/rebuild the pleroma backend using:

sh ./scripts/

Vacuum your database with this script:

sh ./scripts/

Emojis are under ./static/emoji so drag and drop your folders there.


Backups can be done by copying the whole docker-pleroma folder. How you make this copy I'll leave up to you.

For my own instance, I take a btrfs snapshot of this folder and make a tarball / squashfs archive of that snapshot. Should SHTF I have the snapshots and tarballs to fall back on!

However you choose to do it, make sure to docker compose down before making the backup, you dont want anything modified as you're making the copy.

Upgrading database version

Please see

Other Docker images