1 <div align="center"><img height="180" src="https://gitlab.iscpif.fr/gargantext/main/images/logo.png"></div>
4 # Gargantext with Haskell (Backend instance)
6 ![Haskell](https://img.shields.io/badge/Code-Haskell-informational?style=flat&logo=haskell&color=6144b3) ![Stack](https://img.shields.io/badge/Tools-Stack-informational?style=flat&logo=&color=6144b3) ![GHC](https://img.shields.io/badge/Tools-GHC-informational?style=flat&logo=&color=2E677B) ![Nix](https://img.shields.io/badge/Package%20manager-Nix-informational?style=flat&logo=debian&color=6586c8) ![Docker](https://img.shields.io/badge/Tools-Docker-informational?style=flat&logo=docker&color=003f8c)
9 1. [About the project](#about)
10 2. [Example2](#example2)
11 3. [Third Example](#third-example)
12 4. [Fourth Example](#fourth-examplehttpwwwfourthexamplecom)
14 ## About the project <a name="about"></a>
16 GarganText is a collaborative web-decentralized-based macro-service
17 platform for the exploration of unstructured texts. It combines tools
18 from natural language processing, text-data-mining bricks, complex
19 networks analysis algorithms and interactive data visualization tools
20 to pave the way toward new kinds of interactions with your textual and
23 This software is free (as "Libre" in French) software, developed by the
24 CNRS Complex Systems Institute of Paris Île-de-France (ISC-PIF) and its
27 GarganText Project: this repo builds the backend for the frontend server built by
28 [backend](https://gitlab.iscpif.fr/gargantext/haskell-gargantext).
33 Disclaimer: since this project is still in development, this document
34 remains in progress. Please report and improve this documentation if you
41 git clone https://gitlab.iscpif.fr/gargantext/haskell-gargantext.git
46 Install [Stack (or Haskell Tool Stack)](https://docs.haskellstack.org/en/stable/):
49 curl -sSL https://get.haskellstack.org/ | sh
52 Verify the installation is complete with
60 Install [Nix](https://nixos.org/download.html):
63 $ sh <(curl -L https://nixos.org/nix/install) --daemon
66 Verify the installation is complete with
72 > **NOTE INFO (upgrade/downgrade if needed)**
73 > Gargantext works with Nix 2.12.0 (older version than current 2.13.2). To downgrade your Nix version:
74 > `nix-channel --update; nix-env -iA nixpkgs.nixVersions.nix_2_12 nixpkgs.cacert; systemctl daemon-reload; systemctl restart nix-daemon`
75 > Upgrading Nix: https://nixos.org/manual/nix/unstable/installation/upgrading.html
78 ### 3. Build Core Code
80 NOTE: Default build (with optimizations) requires large amounts of RAM
81 (16GB at least). To avoid heavy compilation times and swapping out your
82 machine, it is recommended to `stack build` with the `--fast` flag,
86 stack --nix build --fast
89 If the build is finishing without error, you are ready to launch
90 GarganText! See next step.
101 Docker-compose will configure your database and some NLP bricks (such as CoreNLP):
104 # If docker is not installed:
105 # curl -sSL https://gitlab.iscpif.fr/gargantext/haskell-gargantext/raw/dev/devops/docker/docker-install | sh
109 Initialization schema should be loaded automatically (from `devops/postgres/schema.sql`).
116 Copy the configuration file:
118 cp gargantext.ini_toModify gargantext.ini
120 Do not worry, `.gitignore` avoids adding this file to the repository by
121 mistake, then you can change the passwords in gargantext.ini safely.
123 Users have to be created first (`user1` is created as instance):
125 ~/.local/bin/gargantext-init "gargantext.ini"
130 stack --nix exec gargantext-server -- --ini gargantext.ini --run Prod
136 ### Multi-User with Graphical User Interface (Server Mode)
139 ~/.local/bin/stack --docker exec gargantext-server -- --ini "gargantext.ini" --run Prod
142 Then you can log in with `user1` / `1resu`.
145 ### Command Line Mode tools
147 #### Simple cooccurrences computation and indexation from a list of Ngrams
150 stack --docker exec gargantext-cli -- CorpusFromGarg.csv ListFromGarg.csv Ouput.json
153 ### Analyzing the ngrams table repo
155 We store the repository in directory `repos` in the [CBOR](https://cbor.io/)
156 file format. To decode it to JSON and analyze, say, using
157 [jq](https://shapeshed.com/jq-json/), use the following command:
160 cat repos/repo.cbor.v5 | stack --nix exec gargantext-cbor2json | jq .
164 To build documentation, run:
167 stack --nix build --haddock --no-haddock-deps --fast
170 (in `.stack-work/dist/x86_64-linux-nix/Cabal-3.2.1.0/doc/html/gargantext`).
174 Some introspection information.
176 Playground is located at http://localhost:8008/gql
178 ### List all GraphQL types in the Playground
190 ### List details about a type in GraphQL
194 __type(name:"User") {
207 ### Upgrading using Docker
209 https://www.cloudytuts.com/tutorials/docker/how-to-upgrade-postgresql-in-docker-and-kubernetes/
211 To upgrade PostgreSQL in Docker containers, for example from 11.x to 14.x, simply run:
213 docker exec -it <container-id> pg_dumpall -U gargantua > 11-db.dump
216 Then, shut down the container, replace `image` section in
217 `devops/docker/docker-compose.yaml` with `postgres:14`. Also, it is a good practice to create a new volume, say `garg-pgdata14` and bind the new container to it. If you want to keep the same volume, remember about removing it like so:
219 docker-compose rm postgres
220 docker volume rm docker_garg-pgdata
223 Now, start the container and execute:
225 # need to drop the empty DB first, since schema will be created when restoring the dump
226 docker exec -i <new-container-id> dropdb -U gargantua gargandbV5
227 # recreate the db, but empty with no schema
228 docker exec -i <new-container-id> createdb -U gargantua gargandbV5
229 # now we can restore the dump
230 docker exec -i <new-container-id> psql -U gargantua -d gargandbV5 < 11-db.dump
235 There is a solution using pgupgrade_cluster but you need to manage the
236 clusters version 14 and 13. Hence here is a simple solution to upgrade.
238 First save your data:
241 pg_dumpall > gargandb.dump
246 sudo apt install postgresql-server-14 postgresql-client-14
247 sudo apt remove --purge postgresql-13
255 Maybe you need to restore the gargantua password
257 ALTER ROLE gargantua PASSWORD 'yourPasswordIn_gargantext.ini'
259 Maybe you need to change the port to 5433 for database connection in
260 your gargantext.ini file.