Files
docker-inventaire/README.md

134 lines
5.5 KiB
Markdown
Raw Normal View History

2025-02-26 23:30:54 +01:00
# Inventaire Suite
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).
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 13:06:51 +01:00
* the Inventaire [server](https://git.inventaire.io/inventaire/), which comes with its embedded database: LevelDB
* the Inventaire [client](https://git.inventaire.io/inventaire-client/)
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.
## Summary
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
2025-02-27 13:06:51 +01:00
- [Quickstart](#quickstart)
- [Requirements](#requirements)
- [Hardware](#hardware)
- [Software](#software)
- [Domain name](#domain-name)
- [Open ports](#open-ports)
- [Initial setup](#initial-setup)
- [Download this repository](#download-this-repository)
- [Initial configuration](#initial-configuration)
- [Generate a TLS certificate](#generate-a-tls-certificate)
- [Usage](#usage)
2025-03-03 00:10:06 +01:00
- [Update](#update)
- [Tips](#tips)
- [Troubleshooting](#troubleshooting)
- [Elasticsearch errors](#elasticsearch-errors)
<!-- 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/)
2025-02-26 23:30:54 +01:00
#### Domain name
2025-02-27 13:06:51 +01:00
> Ignore this section if you are just testing on your local machine
2025-02-26 23:30:54 +01:00
You need a DNS records that resolves to your machine's public IP address
2025-02-27 13:06:51 +01:00
#### Open ports
> Ignore this section if you are just testing on your local machine
Your machine's firewall should let the http ports (`80` and `443`) open.
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
cd docker-inventaire
```
2025-02-26 23:30:54 +01:00
### Initial configuration
2025-02-27 13:06:51 +01:00
Copy the `dotenv` file to `.env`
2025-02-23 08:40:05 +01:00
```sh
cp dotenv .env
```
2025-02-27 13:06:51 +01:00
and open this new `.env` file with a text editor to customize the variables (mainly adding your own domain name, and setup a couchdb password)
2025-02-27 13:06:51 +01:00
#### Generate a TLS certificate
> Ignore this section if you are just testing on your local machine
2025-02-27 13:06:51 +01:00
Generate the first TLS certificate with Let's Encrypt
2025-02-26 23:30:54 +01:00
```sh
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
2025-02-27 13:06:51 +01:00
Start all the services (Nginx, CouchDB, Elasticsearch, and the Inventaire [server](https://git.inventaire.io/inventaire)) in production mode:
2021-08-25 15:37:10 +02:00
```sh
2025-03-03 00:10:06 +01:00
docker compose up --detach
2021-08-25 15:37:10 +02:00
```
2020-09-21 17:21:15 +02:00
2025-02-27 13:06:51 +01:00
Alternatively, to test locally, you can start only Inventaire and its dependencies (CouchDB and Elasticsearch) without Nginx, with the following command:
```sh
docker compose up inventaire
```
2025-03-03 00:10:06 +01:00
## Update
Before updating to the latest version, check that there are no breaking changes.
You can find your current version number by visiting fetching the URL `/api/config` on your domain (example: https://inventaire.io/api/config).
You can find details about the changes since your version on this page: /home/maxlath/code/inventaire/inventaire/CHANGELOG.md.
2025-05-17 12:22:33 +02:00
For changes marked to require data transformation, [some knowledge of CouchDB is recommended](https://docs.couchdb.org/en/stable/intro/index.html), as well as familiarizing yourself with the [recommanded way to export, transform and reimport data in CouchDB](https://git.inventaire.io/inventaire/src/branch/main/docs/administration/couchdb_data_transformations.md).
2025-03-03 00:10:06 +01:00
```sh
cd docker-inventaire
# Pull updates to this repository (might include database versions updates, and such)
git pull origin main
# Pull the updated images
docker compose pull
# Stop and remove the previous containers
docker compose down
# Remove the volume hosting inventaire server and client code, to let it be overriden by the updated inventaire image
docker volume rm docker-inventaire_inventaire-server
2025-03-03 00:10:06 +01:00
# Restart containers with the new image (with the --detach option, to be able to close the terminal)
docker compose up --detach
# Check that it restarted without errors
docker compose logs --follow --tail 500 inventaire
```
2025-02-27 13:06:51 +01:00
## Tips
2025-02-27 13:06:51 +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).
## 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)