diff --git a/scripts/wordlist.txt b/scripts/wordlist.txt index a29f8fa8..1e5006a0 100644 --- a/scripts/wordlist.txt +++ b/scripts/wordlist.txt @@ -144,6 +144,8 @@ Skoda SLYR SSL Survey123 +synchronization +synchronise TLS Transifex Trialing @@ -232,6 +234,7 @@ openmaptiles openssl orthometric orthophoto +orchestrator osm pbf peatlands @@ -282,6 +285,7 @@ uncheck undoable url uuid +vCPUS xcf xyz yml diff --git a/src/server/install/index.md b/src/server/install/index.md index ae26d580..5d7c1f97 100644 --- a/src/server/install/index.md +++ b/src/server/install/index.md @@ -7,7 +7,36 @@ Installation guide will help you to install your o ## Installation System Requirements -We recommend using a dedicated host machine with 8 GB of memory. The requirements for CPU and persistent storage depend largely on the frequency of project updates and the anticipated size of the data you expect to store respectively. +For a typical deployment, we recommend using a dedicated host machine with **8 GB** of memory and **2 vCPUS** (similar to AWS `t3a.large` instances). +The requirements for CPU and persistent storage depend largely on the frequency of project updates and the anticipated size of the data you expect to store respectively. +A very conservative rule of thumb, regarding needed disk size would be `mergin maps project size * number of versions`. +If you have a team size over 25 people and synchronise often your projects, consider a host with **4 vCPUS**. + +On OS level, we recommend to use a Linux distribution that has fully compatibility with Docker, since is deployed by default with `docker compose`. + +A low-latency, high-bandwidth environment is preferred due to volume of data needed to perform synchronization with . This is specially important on large projects with hundreds of megabytes in between syncs. + + +### Infrastructure overview + +* **PostgreSQL** - Database that holds application data. Can be external and therefore excluded from install orchestration with proper [configuration](https://merginmaps.com/docs/server/environment/#database-settings). +* **Redis** - The caching and asynchronous task engine running on top of +* **Celery-Beat** - The Celery task orchestrator used by +* **Celery-Worker** - The Celery container responsible for workers that perform tasks on +* **Server** - The server backend instance of +* **Web** - The frontend instance for +* **Proxy** - NGINX instance serving in reverse proxy configuration. + +### Firewall ports + +By default, only HTTP port `8080` need to be open on firewall side. Also is recommended to open `443` port if SSL is enabled. +All other infrastructure instances will work within the same docker network group, so no additional ports need to be managed on firewall side. + + +## Install Docker from official source + +Please, use latest version of Docker and Docker Compose tools. +Follow the [official](https://docs.docker.com/engine/install/) guidelines in accordance to your OS system. ## Mergin Maps CE Docker Images @@ -60,7 +89,7 @@ Then, edit the `.prod.env` file and provide values for all variables marked as r ### Start docker containers -Before proceeding, ensure you have both `docker` and `docker-compose` installed on your system. +Before proceeding, ensure you have both `docker` and `docker compose` installed on your system. Once your environment is configured, you can start the containers by running the following commands for the Community and Enterprise editions. @@ -70,7 +99,7 @@ Community edition stack: $ mkdir -p mergin_db # database data directory $ sh ../common/set_permissions.sh projects # application internal data directory $ sh ../common/set_permissions.sh diagnostic_logs # directory to persist diagnostic logs (optional) -$ docker-compose -f docker-compose.yml up -d +$ docker compose -f docker-compose.yml up -d ``` Enterprise edition stack: @@ -80,8 +109,8 @@ $ mkdir -p mergin-db-enterprise # database data directory $ sh ../common/set_permissions.sh data # application internal data directory $ sh ../common/set_permissions.sh map_data # maps data directory (neccessary for maps) $ sh ../common/set_permissions.sh diagnostic_logs # directory to persist diagnostic logs (optional) -$ docker-compose -f docker-compose.yml up -d -$ docker-compose -f docker-compose.maps.yml up -d # Run maps stack separately +$ docker compose -f docker-compose.yml up -d +$ docker compose -f docker-compose.maps.yml up -d # Run maps stack separately ``` ​​ ### Initialise database diff --git a/src/server/upgrade/index.md b/src/server/upgrade/index.md index dde44ffe..beb4eca8 100644 --- a/src/server/upgrade/index.md +++ b/src/server/upgrade/index.md @@ -242,7 +242,7 @@ Perform the migration: 1. Start up your docker containers ```bash - $ docker-compose -f docker-compose.yml up # or similarly, based on your deployment + $ docker compose -f docker-compose.yml up # or similarly, based on your deployment ``` 2. Check that you are on correct versions (`0e3fc92aeaaa`, `223e3be99e92`). @@ -274,7 +274,7 @@ Perform the migration: 1. Start up your docker containers ```bash - $ docker-compose -f docker-compose.yml up # or similarly, based on your deployment + $ docker compose -f docker-compose.yml up # or similarly, based on your deployment ``` 2. Check that you are on correct versions (`a5d4defded55`, `223e3be99e92`). @@ -306,7 +306,7 @@ Update image to `2024.2.2` and perform the migration: 1. Start up your docker containers ```bash - $ docker-compose -f docker-compose.yml up # or similarly, based on your deployment + $ docker compose -f docker-compose.yml up # or similarly, based on your deployment ``` 2. Check that you are on correct versions (`35af0c8be41e`, `3a77058a2fd7`). @@ -334,7 +334,7 @@ Update image to `2024.2.1` and perform the migration: 1. Start up your docker containers ```bash - $ docker-compose -f docker-compose.yml up # or similarly, based on your deployment + $ docker compose -f docker-compose.yml up # or similarly, based on your deployment ``` 2. Check that you are on correct versions (`3a77058a2fd7`, `0d867687ab64`). @@ -371,7 +371,7 @@ Perform the migration: 1. Start up your docker containers ```bash - $ docker-compose -f docker-compose.yml up # or similarly, based on your deployment + $ docker compose -f docker-compose.yml up # or similarly, based on your deployment ``` 2. Check that you are on a correct version (`b6cb0a98ce20`) @@ -395,7 +395,7 @@ Perform the migration: 1. Start up your docker containers ```bash - $ docker-compose -f docker-compose.yml up # or similarly, based on your deployment + $ docker compose -f docker-compose.yml up # or similarly, based on your deployment ``` 2. Check that you are on correct versions (`b6cb0a98ce20`, `0d867687ab64`) @@ -440,7 +440,7 @@ $ docker exec mergin-db pg_dump -U postgres -Fc postgres > pg_backup.dump 4. Stop all running services (from project root folder) ```bash -$ docker-compose -f docker-compose.yml stop +$ docker compose -f docker-compose.yml stop ``` 5. Pull the latest changes @@ -488,7 +488,7 @@ There are few settings you may want to change values for: 7. Make sure projects volume mounts in `docker-compose` file still match (You can set up new volumes by following the [quick start guide](../install/)). Switch to new server version and PostgreSQL to at least version 12 (14 recommended) by running new docker containers: ```bash -$ docker-compose -f docker-compose.yml up +$ docker compose -f docker-compose.yml up ``` 8. Restore backup from older PostgreSQL version, e.g.: