Note that this is not necessarily a production ready system, it's very likely some things are unsafely configured
A common problem when developing federated software is the need to test for compatibility with other such software. This leads developers to test their software against semi-random publicly available instances of their or other software. This is not ideal since then developers may not have access to logs, or to make changes, which slows down development. This project aims to solve that by allowing you to run as many copies of each software locally.
- GNU social v3
- GNU social v2 (WIP)
Feel free to contribute your software! More will be added, such as GoToSocial, Lemmy or Mastodon
This project uses Python for the configuration, and docker
and/or docker-compose
to run the containers.
This project can set up it's own dependencies in a Python Virtual Environment. To do this, run
./configure
Which will afterwards launch the configuration menu. You can safely use this everytime
Alternatively, if you want to set it up on your own, follow the next section
It's recommended you create a Virtual Environment with:
python -m venv venv
and then you can run
source venv/bin/activate
If you prefer to use another method, the following dependencies are required:
- whiptail
which can be installed with
pip install whiptail-dialog
Then, run
python menu.py
And follow the prompts. You can add and edit the instances you selected, which
get saved such that if you exit, you can rerun configure
at any point, to
further modify your configuration, as well as dump the updated
docker-compose.yml
file.
After configuring the instances you want, you need to select the 'Clone Software'
option.
Simply add as many instances of each software as you desire and then run
docker-compose up -d
or
docker compose up -d
in newer versions of docker
The instances you configured should all be accessible in your browser under the
domains you specified (you may need to edit your /etc/hosts
if you didn't use
.localhost
domains)
Define your software in software/
and it should automatically show up in the
interface and be configured correctly. Currently, this tool supports only
nginx
, postgres
and redis
for shared services. Feel free to add your
dependencies to software/services.py
if it makes sense for them to be shared
among multiple instances and with other software.