In greek mythology, Nomos is the personified spirit of law.
This system in a way acts as the rule set for how things are governed, via membership levels and privileges.
See here for complete setup, API, and philosophy: https://github.com/vhs/nomos/wiki
For the old development guide, see: https://github.com/vhs/nomos/wiki/Contributing
For development, you'll need the following components/dependencies:
- Docker/Docker Compose
- NodeJS/NPM
- PHP 8.2, and extensions (php-xml, php-curl, php-bcmath, php-zip)
All other development dependencies (such as bower, composer, eslint, husky, php-cs-fixer, phpunit, prettier, etc.) will automatically be installed upon running npm install
after checkout.
Install the requirements: docker and docker-compose, nodejs, php 8.2 (apt-get install php8.2
), php extensions (apt-get install php-xml php-curl php-bcmath php-zip
)
On Mac/Windows, you probably want Docker Desktop, which is a fancy app that makes and manages a Linux virtual machine that it runs Docker in.
- Create a docker-compose configuration file:
- Copy
docker-compose.dev.conf
todocker-compose.conf
- You can also use
docker-compose.template.conf
ordocker-compose.sample.conf
as a starting place. - Edit your new
docker-compose.conf
to customize what services are enabled
- Copy
- Create a docker.env file
- copy
docker/nomos.env.template
todocker/nomos.env
.
- copy
- run
npm install
in the root directory - Run
./docker-compose.sh
as a 1:1 wrapper for docker-compose, or generate a localdocker-compose.yml
file for direct usage withdocker-compose
with./docker-compose.sh config > docker-compose.yml
Grant write permission to all users on the log directory: chmod a+w logs
. The
reason this is needed is because the back-end PHP code runs as a non-root user
inside the container, and by default permissions don't grant write access to
non-owners of directories.
Start the service with ./docker-compose.sh up
. This should bring everything up,
but the webhook service will still be failing, which is expected.
To get the webhook service working, run tools/make-webhook-key.sh
in another terminal, which will provide the correct value of NOMOS_RABBITMQ_NOMOS_TOKEN
. Then, edit that into
docker/nomos.env
.
Once you have done this, press Ctrl-C in the terminal with ./docker-compose.sh up
,
then run ./docker-compose.sh up
again.
You're all set! You can get the address to access the Nomos service from your docker host system by running the following in a separate terminal as docker-compose.sh
:
$ docker inspect nomos-frontend | jq -r '.[0].NetworkSettings.Networks | to_entries | .[0].value.IPAddress'
Or make your docker-compose.conf include docker-compose/core.ports.yml
, to proxy port 80 of your docker network to port 80 on your host machine.
The username is vhs
and the password is password
.