diff --git a/README.md b/README.md index 218df36..e6df04f 100644 --- a/README.md +++ b/README.md @@ -3,21 +3,35 @@ *Gisaf* is a web based GIS (Geographical Information System) initially developed for the CSR Goematics unit in Auroville, India. +Its main audiences are local administrations which need a platform +to develop and maintain a geographical, topological and environmental data, +allow teams of surveyors to upload data and update the GIS in near real time, +and collect data from a wide range of sources. + +Although it just works out of the box, it is primarily intended to be customized +and extended with the data, uses, needs. + ## Features - Layers defined with Python plugins or ANSI-standard categories +- Open source industry standard interfaces (PostGIS database, OGCAPI) - Support of different geographical projections - Integrated administration interface - Export of data from standard formats (Geopackage, Shapefile) - Import and update of data managed in a well defined workflow with "baskets" +- Acquisition of different kinds of surveyors' equipments, accuracies +- Robust mechanisms of identification of the data sources, survey times +- Geographical feature statuses (eg. Existing, Deprecated, Future) - Role-based access to data - Support temporal and other data for different features +- Easy integration with IoT sensors, eg. using the MQTT protocol - Detailed information for all features - Tagging of features - Customizable, user triggered actions - Background map - Customizable base maps (domain specific set of layers) - Plugin architecture: add functions with Python packages +- Free and open source ## Software stack @@ -31,3 +45,12 @@ for the CSR Goematics unit in Auroville, India. ## Installation / deployment See the documentation in the deployment directory. + +## Configuration + +Documentation is being rewritten. Please contact us. + +## Demo + +A very basic demo without any data, basically to give a feel of the user interface, +is available [here](https://gisaf.pholmi.ydns.eu). diff --git a/deployment/README.md b/deployment/README.md index a9f93b9..966bdde 100644 --- a/deployment/README.md +++ b/deployment/README.md @@ -1,23 +1,68 @@ -# Kubernetes deployment +# Gisaf deployment / installation -This directory contains files for deployment on Kubernetes. +This documentation covers the specifics of Gisaf deployment, but +it does no cover application configuration details, +the set up of a public facing web server handling dns domain / https security. + +*Gisaf* is shipped as containers for easy and effective installation, +and packages to deploy them for different environments. + +There are 4 containers: + +- Frontend (Angular build: static files, served by an nginx process, + eventually forwarding requests to the backend) +- Backend (Python server) +- Postgis database server +- Redis server + +Commands below assume that they are run from their respective directories +(`deployment/systemd`, `deployment/kubernetes`, ...). + +## Systemd + +With the help of *podman*, systemd can handle starting/restarting services, etc, +even with a non-privileged user. + +The 4 containers are in the same *pod*, as it is meant primarily for a lightweight +production environment, but this can be easily adapted. + +The `deployment/systemd` directory contains files used for running *Gisaf* with Systemd. +Podman is used to facilitate the creation of the relevant services. + +### Deployment + +```sh +cp -r * $HOME/.config/containers/systemd/ +systemctl --user daemon-reload +systemctl --user start gisaf-pod.service +``` + +Environment variables for the Gisaf configuration can be added +in the `gisaf-backend.container` file. + +Note that starting on system boot requires the user to be enabled accordingly with: + +```sh +sudo loginctl enable-linger +``` + +## Plain Kubernetes (no Helm) + +The `kubernetes` directory contains files for deployment on Kubernetes. The standard installation uses a namespace named `gisaf`. -Commands below assume that they are run from this directory. +The Kubernetes configuration is split in 2 files: `gisaf.yaml` and `config.yaml` -## Plain Kubernetes - -2 files: `gisaf.yaml` and `config.yaml` - -Deploy on Kubernetes (without Helm) +Deployment: ```sh kubectl create namespace gisaf kubectl apply -f config.yaml +kubectl apply -f gisaf.yaml ``` -Update after modification: +Update after modification on the server (frontend and backend): ```sh kubectl --namespace gisaf rollout restart deployment gisaf-server-deployment @@ -29,6 +74,9 @@ The `helm` chart is in the directory named `helm`. ### Deploy on Kubernetes +Deploying with Helm on Kubernetes makes it straightforward to +run on cloud services. + ```sh kubectl create namespace gisaf helm install gisaf helm