2025-02-26 23:30:54 +01:00
# Inventaire Suite
2023-04-28 13:30:29 +02:00
2025-02-26 23:30:54 +01:00
The Inventaire Suite is a containerized, production-ready Inventaire system that allows you to self-host a knowledge graph similar to [inventaire.io ](https://inventaire.io ).
2018-05-09 18:19:47 +02:00
2025-02-26 23:30:54 +01:00
It is composed of several services:
2025-02-27 09:48:33 +01:00
* **[Inventaire ](https://hub.docker.com/r/inventaire/inventaire )**: a Docker image packaging:
2025-02-27 09:56:05 +01:00
* the Inventaire [server ](https://git.inventaire.io/inventaire/ )
* the [client ](https://git.inventaire.io/inventaire-client/ )
2025-02-27 09:49:21 +01:00
* the embedded database: LevelDB
2025-02-26 23:30:54 +01:00
* **[CouchDB ](https://hub.docker.com/_/couchdb )**: the primary database used by the Inventaire server
* **[Elasticsearch ](https://hub.docker.com/_/elasticsearch )**: a secondary database used by Inventaire for text and geographic search features
* **[Nginx ](https://hub.docker.com/_/nginx )**: a reverse proxy with TLS termination thank to Let's Encrypt [certbot ](https://hub.docker.com/r/certbot/certbot ).
The service orchestration is implemented using Docker Compose.
> 🔧 This document is for people wanting to self-host the full Inventaire Suite. If you are looking for the individual Inventaire image, head over to [hub.docker.com/r/inventaire/inventaire](https://hub.docker.com/r/inventaire/inventaire).
> 💡 This document presumes familiarity with basic Linux administration tasks and with Docker and Docker Compose.
2025-02-23 09:03:09 +01:00
2023-04-29 13:50:21 +02:00
## Summary
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE - RUN doctoc TO UPDATE -->
- [Requirements ](#requirements )
- [Install ](#install )
2025-02-23 08:42:09 +01:00
- [Reverse proxy configuration ](#reverse-proxy-configuration )
2023-04-29 13:50:21 +02:00
- [Usage ](#usage )
- [Tips ](#tips )
- [Fixtures ](#fixtures )
2025-02-23 08:40:05 +01:00
- [Path autocomplete ](#path-autocomplete )
2023-04-29 13:50:21 +02:00
- [Run inventaire server and client outside of Docker ](#run-inventaire-server-and-client-outside-of-docker )
- [Troubleshooting ](#troubleshooting )
- [Elasticsearch errors ](#elasticsearch-errors )
- [Quieting CouchDB notice ](#quieting-couchdb-notice )
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
2025-02-26 23:30:54 +01:00
## Quickstart
### Requirements
#### Hardware
* Network connection with a public IP address
* 4 GB RAM
* 10 GB free disk space
2018-06-07 14:16:50 +02:00
2025-02-26 23:30:54 +01:00
#### Software
* [Docker ](https://docs.docker.com/get-started/get-docker/ ) >= v22.0
* [Docker compose ](https://docs.docker.com/compose/gettingstarted/ ) >= v2
* [git ](https://git-scm.com/ )
2018-05-09 18:19:47 +02:00
2025-02-26 23:30:54 +01:00
#### Domain name
You need a DNS records that resolves to your machine's public IP address
2018-05-09 18:19:47 +02:00
2025-02-26 23:30:54 +01:00
## Initial setup
### Download this repository
2021-08-25 15:37:10 +02:00
```sh
2025-02-27 09:56:05 +01:00
git clone https://git.inventaire.io/docker-inventaire.git
2023-04-28 11:53:15 +02:00
cd docker-inventaire
2018-05-09 18:19:47 +02:00
```
2025-02-26 23:30:54 +01:00
### Initial configuration
2025-02-23 08:40:05 +01:00
Rename `dotenv` file to `.env` , and customize the variables (mainly adding the domain name, and a couchdb password):
```sh
cp dotenv .env
vim .env
```
2025-02-27 09:56:05 +01:00
Clone `inventaire` core application [server ](https://git.inventaire.io/inventaire )
2018-05-09 18:19:47 +02:00
2021-08-25 15:37:10 +02:00
```sh
2025-02-27 09:56:05 +01:00
git clone https://git.inventaire.io/inventaire.git
2018-05-09 18:19:47 +02:00
```
2021-02-08 12:53:00 +01:00
Build
2019-08-24 20:18:07 +02:00
2021-08-25 15:37:10 +02:00
```sh
2019-08-24 20:18:07 +02:00
docker-compose build
```
2025-02-27 09:56:05 +01:00
Download Node dependencies and install the [client repository ](https://git.inventaire.io/inventaire-client ):
2019-08-24 20:18:07 +02:00
2021-08-25 15:37:10 +02:00
```sh
2025-02-23 08:40:05 +01:00
cd inventaire
npm install tsx & & npm install
cd ..
2019-08-24 20:18:07 +02:00
```
2019-09-06 19:18:11 +02:00
2025-02-23 08:40:05 +01:00
Configure inventaire so that it can connect to CouchDB. For that, create a file `config/local-production.cjs` with the following command:
2020-02-20 18:40:08 +01:00
2021-08-25 15:37:10 +02:00
```sh
2020-02-20 18:31:41 +01:00
echo "module.exports = {
db: {
2025-02-23 08:40:05 +01:00
hostname: 'couchdb',
},
elasticsearch: {
origin: 'http://elasticsearch:9200',
2020-02-20 18:31:41 +01:00
}
}
2025-02-23 08:40:05 +01:00
" > ./inventaire/config/local-production.cjs
2019-08-24 20:18:07 +02:00
```
2025-02-26 23:30:54 +01:00
## Reverse proxy configuration
2024-12-25 13:09:48 +01:00
2025-02-27 10:21:21 +01:00
Generate the first SSL certificate with Let's Encrypt
2025-02-26 23:30:54 +01:00
```sh
2025-02-27 10:21:21 +01:00
docker run -it --rm --name certbot -p 80:80 -v "$(pwd)/certbot/conf:/etc/letsencrypt" certbot/certbot certonly --standalone
2025-02-26 23:30:54 +01:00
```
## Usage
2018-05-09 18:19:47 +02:00
2025-02-27 09:56:05 +01:00
Start CouchDB, Elasticsearch, and the Inventaire [server ](https://git.inventaire.io/inventaire ) in production mode
2021-08-25 15:37:10 +02:00
```sh
2025-02-26 23:30:54 +01:00
docker-compose up
2018-05-09 18:19:47 +02:00
```
2023-04-29 13:50:21 +02:00
## Tips
2018-05-09 18:19:47 +02:00
2025-02-27 09:56:05 +01:00
General tips on how to run Inventaire can be found in the [server repository docs ](https://git.inventaire.io/inventaire/tree/main/docs ). Here after are some additional Docker-specific tips.
2018-08-23 18:01:05 +02:00
2023-04-29 13:50:21 +02:00
### Fixtures
2018-05-09 18:19:47 +02:00
In case you would like to play with out-of-the-box data.
2025-02-23 08:40:05 +01:00
Run API tests to populate tests dbs
2020-02-20 18:31:41 +01:00
2021-08-25 15:37:10 +02:00
```sh
2025-02-23 08:40:05 +01:00
docker-compose -f docker-compose.yml exec inventaire npm run test-api
2018-05-09 18:19:47 +02:00
```
- Replicate `*-tests` dbs documents into `*` dbs
2021-08-25 15:37:10 +02:00
```sh
2018-09-12 13:48:44 +02:00
`docker-compose exec inventaire npm run replicate-tests-db`
2018-05-09 18:19:47 +02:00
```
2018-09-12 13:48:44 +02:00
2025-02-23 08:40:05 +01:00
### Path autocomplete
2018-09-12 13:48:44 +02:00
2025-02-23 08:40:05 +01:00
Create a symbolic link on your machine between the inventaire folder and docker working directory on your machine at `/opt/` , in order to autocomplete path to test file to execute
2018-10-08 14:59:36 +02:00
2021-08-25 15:37:10 +02:00
```sh
sudo ln ~/path/to/inventaire-docker/inventaire /opt -s
```
2019-11-30 19:43:29 +01:00
2020-11-28 16:27:52 +01:00
Alternatively, as root in inventaire container:
2020-09-21 17:21:15 +02:00
2021-08-25 15:37:10 +02:00
```sh
mkdir /supervisor/path/to/inventaire
ln -s /opt/ /supervisor/path/to/inventaire
```
2020-09-21 17:21:15 +02:00
2023-04-28 13:19:54 +02:00
### Run inventaire server and client outside of Docker
2025-02-23 08:40:05 +01:00
It can sometimes be more convenient to keep CouchDB and Elasticsearch in Docker, but to run the Inventaire server and client outside. For this, you will need to have [NodeJS ](https://nodejs.org/ ) >= v16 installed on your machine, which should make both `node` and `npm` executables accessible in your terminal
2023-04-28 13:19:54 +02:00
Then you can start CouchDB and Elasticsearch in the background
```sh
2023-04-29 14:01:38 +02:00
docker-compose up couchdb elasticsearch -d
2023-04-28 13:19:54 +02:00
```
2023-04-29 14:01:38 +02:00
2023-04-28 13:19:54 +02:00
Start the Inventaire server in development mode
```sh
cd inventaire
npm run watch
```
2023-04-29 14:01:38 +02:00
2023-04-28 13:19:54 +02:00
And in another terminal, start the client Webpack dev server
```sh
cd inventaire/client
npm run watch
```
2019-11-30 19:43:29 +01:00
## Troubleshooting
2021-02-09 16:03:13 +01:00
### Elasticsearch errors
2025-02-23 08:40:05 +01:00
2021-02-09 16:03:13 +01:00
- `max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]` : fix by running the command `sudo sysctl -w vm.max_map_count=262144` on your host machine
See also [Elasticsearch with Docker ](https://www.elastic.co/guide/en/elasticsearch/reference/7.9/docker.html )
2021-08-25 15:37:10 +02:00
### Quieting CouchDB notice
2025-02-23 08:40:05 +01:00
2021-08-25 15:37:10 +02:00
CouchDB may warn constantly that `_users` database does not exist, [as documented ](https://docs.couchdb.org/en/latest/setup/single-node.html ), you can create de database with:
2021-02-09 16:03:13 +01:00
`curl -X PUT http://127.0.0.1:5984/_users`