Skip to content

containers.funfedi.dev

The following docker contains are intended to be used through the fediverse pasture. Together these two projects provide locally runnable versions of some popular Fediverse applications.

The focus here is not on being able to run them with a single command. This means that

  • A default user will be created
  • Often an api key is generated by default

The default usernames are documented on the pasture.

The List

This lists the containers currently build. download (csv).

Application latest version other versions
akkoma v3.15.2 v3.15.1, v3.14.1, v3.13.3, v3.13.2, v3.12.1, v3.11.0, v3.10.4
bovine 0.5.10
cattle_grid 0.2.0a12
friendica 2024.12
gancio 1.27.0 1.26.1, 1.25.1, 1.24.3, 1.23.1
gotosocial 0.19.1 0.18.3, 0.18.2, 0.18.1, 0.18.0, 0.17.4, 0.17.3, 0.17.1, 0.14.0, 0.13.3
hollo 0.6.10 0.6.8, 0.6.7, 0.6.6, 0.6.5, 0.6.4, 0.6.3, 0.6.2, 0.6.1, 0.5.6, 0.5.5, 0.5.4, 0.4.4, 0.4.3, 0.4.2, 0.3.4, 0.3.3, 0.3.2, 0.3.0, 0.2.3, 0.2.2, 0.2.0, 0.1.6, 0.1.3
mastodon v4.4.3 v4.4.2, v4.4.1, v4.3.9, v4.3.8, v4.3.7, v4.3.6, v4.3.5, v4.3.4, v4.3.3, v4.3.2, v4.3.1, v4.3.0, v4.2.13, v4.2.12, v4.2.11, v4.2.10, v4.2.8, v4.2.7, v4.2.4, v4.1.16, v4.1.15, v4.1.13
mbin v1.7.4 v1.7.2
misskey 2025.7.0 2025.6.3, 2025.6.2, 2025.6.1, 2025.6.0, 2025.5.0, 2025.4.0, 2025.3.1, 2025.2.1, 2025.2.0, 2025.1.0, 2024.11.0, 2024.10.1, 2024.10.0, 2024.9.0, 2024.8.0, 2024.7.0, 2024.3.1, 2024.2.0
mitra v4.9.0 v4.8.0, v4.7.0, v4.6.0, v4.5.1, v4.5.0, v4.3.1, v3.22.0, v3.21.0, v3.20.1, v3.20.0, v3.19.0, v3.18.0, v3.17.0, v3.16.0, v3.14.0, v3.13.0, v3.12.0, v3.11.0, v3.10.0, v3.9.0, v3.8.0, v3.7.1, v3.6.0, v3.5.0, v3.4.0, v3.3.0, v3.2.0, v3.1.0, v3.0.0, v2.15.1, v2.14.0, v2.12.0, v2.11.0, v2.10.0, v2.9.0
mobilizon 5.1.1
pasture 0.2.14 0.2.13, 0.2.12, 0.2.11, 0.2.10, 0.2.9, 0.2.8, 0.2.7, 0.2.6, 0.2.5
pleroma v2.9.1 v2.9.0, v2.7.1, v2.7.0, v2.6.2
sharkey 2025.4.4 2025.2.2, 2024.11.2, 2024.11.1, 2024.9.4, 2024.9.3, 2024.9.2, 2024.9.1, 2024.8.2, 2024.8.1, 2024.5.1, 2024.3.2, 2024.3.1, 2023.12.0
snac2 2.82 2.81, 2.80, 2.79, 2.78, 2.77, 2.74, 2.73, 2.72, 2.71, 2.70, 2.69, 2.68, 2.67, 2.66, 2.65, 2.64, 2.63, 2.62, 2.61, 2.60, 2.59, 2.58

Building containers

The container versions are recorded in the containers.csv file in the repository. It can be downloaded above. The script run_update.sh checks the available versions and builds new containers, when new versions are available. The available containers are retrieved through

tools/tools/config.py
config_docker = [
    ("bleakfuture0", "mitra"),
    ("tootsuite", "mastodon"),
    ("superseriousbusiness", "gotosocial"),
    # See https://codeberg.org/funfedidev/containers/issues/134
    # ("misskey", "misskey"),
    ("cisti", "gancio"),
]

config_rss = [
    ("akkoma", "https://akkoma.dev/AkkomaGang/akkoma/tags.rss"),
    (
        "sharkey",
        "https://activitypub.software/TransFem-org/Sharkey/-/tags?format=atom",
    ),
    ("pleroma", "https://git.pleroma.social/pleroma/pleroma/-/releases.atom"),
    ("snac2", "https://codeberg.org/grunfink/snac2/tags.rss"),
    ("hollo", "https://github.com/fedify-dev/hollo/tags.atom"),
]

After adding new versions and updating containers.csv in the repository, an announcement should be send out by acct:funfedi@bovine.social.

Adding an application

These containers are used in automation to build data.funfedi.dev and then the information in the support tables. For this to work, one needs at least one actor create in the Fediverse applications. So for each application, one can say that after running

docker compose -f fediverse_pasture/application.yml up --wait

an actor with actor uri acct:user@application is created. The current expectation is that the container runs in the fediverse-pasture network.

Verifying the actor is created

One can verify the existence of acct:user@application via

docker run --network fediverse-pasture\
    -v ./tools:/opt --workdir /opt\
    helgekr/bovine python -mwebfinger acct:user@application

By inspecting verify.sh being called by run_update.sh, one can see that this behavior is used to check that containers are build correctly.

Verifying a message can be send

Following the instructions here, one can send a message to your instance by first starting a one-actor container via

docker run --rm --name pasture\
    --hostname pasture-one-actor --network fediverse-pasture\
    helgekr/pasture one_actor

and then sending a message via

docker exec pasture ./send acct:user@domain

In order to build the support tables one now only needs the ability to retrieve this message via an API.

The --wait flag

The startup of containers takes time. So in order to ensure that everything is up and running, docker compose healthchecks are used. For example, one would use

    healthcheck:
      test: curl --fail localhost || exit 1
      interval: 10s
      timeout: 10s
      retries: 10

to check that a HTTP server has started correctly. Furthermore, for dependencies, one can wait for them to be ready via

    depends_on:
      database: { condition: service_healthy }