As of the time of writing the [[Agora]] consists of three distinct repositories:
The following instructions assume you clone all repositories and run all services under the same user in a Unix-like system (anagora.org
runs on Debian GNU/Linux). We suggest agora
:
$ adduser agora # follow prompts
$ sudo su - agora
To get all repositories:
$ git clone https://github.com/flancian/agora.git
$ git clone https://github.com/flancian/agora-server.git
$ git clone https://github.com/flancian/agora-bridge.git
You need to clone all three to run a fully functioning Agora. Because the first is configuration only, and the third encapsulates all mutating code, you technically only need to run [[agora server]] as a service to run an immutable Agora. These instructions assume you set up all three in order.
gardens.yaml
contains the list of sources for this Agora.sources.yaml
CONTRACT.md
contains the Agora system account’s public commitment to the ecosystem.You need to edit gardens.yaml
if you want to carry a different set of sources. The Agora comes with defaults.
If you edit the [[CONTRACT]], your Agora might become incompatible with the Agora you forked from. Conflict resolution is part of [[agora protocol]] but currently not specified.
If you installed in non-standard paths (i.e. your repos are not in /home/<user>/<repo>
), edit app/config.py
.
You need to create a Python virtual environment, install packages from requirements.txt
. run ./setup.sh
and it’ll at least try to point you in the right direction :)
You can then ./run-dev.sh
(for development) or ./run-prod.sh
(if you want to serve to the outside world). If you do the latter, you may want to set up [[uwsgi]] in [[nginx]] and make it stick as a [[systemd service]] using agora-server.service
as an example. Please refer to https://github.com/flancian/agora-server#to-develop for details.
You can add an nginx virtual host with [[certbot]]: certbot --nginx -d example.anagora.org
. Then use the following as an example to forward traffic in that virtual host to Agora Server over UWSGI:
location / {
include uwsgi_params;
# /home/agora/agora-server/run-prod.sh to run.
uwsgi_pass unix:/tmp/agora-uwsgi.sock;
}
requirements.txt
. run ./setup.sh
and it’ll at least try to point you in the right direction :)Then run ./run-prod.sh
either on a shell or as a [[systemd service]]. This will pull from all sources in the root repository’s gardens.yaml
in a loop.
You can also optionally run a number of bots that will interact with people in supported platforms. See the bots
directory and https://github.com/flancian/agora-bridge#install for more.
Now that you have a functioning Agora, consider what you will do with it.
Please consider [[agora protocol]], [[contract]] and [[goals]]. Reach out if you are interested in establishing other protocols for [[collaboration]].
There is currently no [[docker]] support, but it seems like it could be a great fit. We have this in our plan, but if you’re handy with Docker, this would be a great contribution for you! :)
Rendering context...