This project has been merged into the main FAIMS3 repository.
The server-side of FAIMS3 handling authentication and authorization
To get started, first set up the .env file as specified in Configuration, and
then set up keys as specified in Running.
The deployment is configured via the .env file in the root directory
of the project. Copy .env.dist to .env and the update the values
as required. See the deployment docs for full details of the environment
variables supported.
Environment variables are documented in comments in .env.dist.
./keymanagement/makeInstanceKeys.shgenerates new key pair in the keys folder and generates the local.ini file for couchdb
that contains the public key and other information.
Build the two docker images:
docker compose buildThen we can startup the servers:
docker compose up -dwill start the couchdb and conductor servers to listen on the configured port.
If you don't plan to use Docker to run or deploy Conductor, you need to get CouchDB
running on your host and enter the appropriate addresses in the .env file.
To run the Conductor server you first need to install dependencies:
npm installYou should then be able to run the server with:
npm startIf you are developing, you may want to run:
npm run watchinstead, which will monitor for changes with nodemon.
Once the services are up and running we need to initialise the CouchDB
database. This is done by sending a request to the API via a short script.
This operation will create a local user called admin with the same password
as configured for CouchDB (COUCHDB_PASSWORD in .env). The script will
have no effect if the admin user is already set up. Run the script with:
npm run initdbThere is also a script that will populate the database with notebooks that are
stored in the notebooks directory. There should be two sample notebooks in
there but you can also create new ones.
This script requires authentication, so you need to get a user token for the admin
user. First, connect to the conductor instance on http://localhost:8080/ or whatever
port you have configured. Login using the local admin user and password.
Now, from the Conductor home page (http://localhost:8080/) scroll down to "Copy
Bearer Token to Clipboard". Paste this value into your .env file as the
value of USER_TOKEN.
npm run load-notebooksNotebooks can be uploaded to Conductor via the web interface.
There is an alternate docker compose file for development that mounts the
current working directory inside the container so that you can work on
code in real time. To use this you also need a local node_modules folder
since the current directory will shadow the one inside the container.
To create node_modules run npm ci inside the container:
docker compose -f docker-compose.dev.yml run conductor npm ciThen start the services:
docker compose -f docker-compose.dev.yml upRun tests inside the conductor instance:
docker compose exec conductor npm run test