# Konova Konova is the successor of KSP. It's build using the python webframework Django, the database postgresql and the css library bootstrap as well as the icon package fontawesome for a modern look, following best practices from the industry. ## Background processes ### !!! For non-docker run Konova uses celery for background processing. To start the worker you need to run ```shell $ celery -A konova worker -l INFO ``` More info can be found [here](https://docs.celeryproject.org/en/stable/getting-started/first-steps-with-celery.html#running-the-celery-worker-server). Redis must be installed. ## Technical documentation Technical documention is provided in the projects git wiki. ## User documentation A user documentation is not available (and not needed, yet). # Docker To run the docker-compose as expected, you need to take the following steps: 1. Create a database containing docker, using an appropriate Dockerfile, e.g. the following ``` version: '3.3' services: postgis: image: postgis/postgis restart: always container_name: postgis-docker ports: - 5433:5432 volumes: - db-volume:/var/lib/postgresql/data environment: - POSTGRES_PASSWORD=postgres - POSTGRES_USER=postgres networks: - db-network-bridge networks: db-network-bridge: driver: "bridge" volumes: db-volume: ``` This Dockerfile creates a Docker container running postgresql and postgis, creates the default superuser postgres, creates a named volume for persisting the database and creates a new network bridge, which **must be used by any other container, which wants to write/read on this database**. 2. Make sure the name of the network bridge above matches the network in the konova docker-compose.yml 3. Get into the running postgis container (`docker exec -it postgis-docker bash`) and create new databases, users and so on. Make sure the database `konova` exists now! 4. Replace all `CHANGE_ME_xy` values inside of konova/docker-compose.yml for your installation. Make sure the `SSO_HOST` holds the proper SSO host, e.g. for the arnova project `arnova.example.org` (Arnova must be installed and the webserver configured as well, of course) 5. Take a look on konova/settings.py and konova/sub_settings/django_settings.py. Again: Replace all occurences of `CHANGE_ME` with proper values for your installation. 1. Make sure you have the proper host strings added to `ALLOWED_HOSTS` inside of django_settings.py. 6. Build and run the docker setup using `docker-compose build` and `docker-compose start` from the main directory of this project (where the docker-compose.yml lives) 7. Run migrations! To do so, get into the konova service container (`docker exec -it konova-docker bash`) and run the needed commands (`python manage.py makemigrations LIST_OF_ALL_MIGRATABLE_APPS`, then `python manage.py migrate`) 8. Run the setup command `python manage.py setup` and follow the instructions on the CLI 9. To enable **SMTP** mail support, make sure your host machine (the one where the docker container run) has the postfix service configured properly. Make sure the `mynetworks` variable is xtended using the docker network bridge ip, created in the postgis container and used by the konova services. 1. **Hint**: You can find out this easily by trying to perform a test mail in the running konova web application (which will fail, of course). Then take a look to the latest entries in `/var/log/mail.log` on your host machine. The failed IP will be displayed there. 2. **Please note**: This installation guide is based on SMTP using postfix! 3. Restart the postfix service on your host machine to reload the new configuration (`service postfix restart`) 10. Finally, make sure your host machine webserver passes incoming requests properly to the docker nginx webserver of konova. A proper nginx config for the host machine may look like this: ``` server { server_name konova.domain.org; location / { proxy_pass http://localhost:KONOVA_NGINX_DOCKER_PORT/; proxy_set_header Host $host; } } ```