Aller au contenu

Warning

La traduction proposée ici a été générée automatiquement par le modèle d’intelligence artificielle GPT-4o. Il est probable qu’elle contienne des imperfections.

Mais la bonne nouvelle est que vous pouvez rejoindre la communauté de traduction pour améliorer le contenu fourni ici 👋.

Exemple d’utilisation de Docker et NGINX#

Cet exemple a été initialement rédigé par Akito.#

Ceci est un exemple complet de configuration Docker pour Grist.

Les fichiers docker-compose.yml suivants sont nécessaires.

Vous devrez ajuster les variables d’environnement selon vos besoins.

Exigences#

Vous devez avoir la distribution Docker la plus récente, y compris l’extension docker compose installée.

Pour préparer l’environnement hôte, créez un répertoire vide et, à l’intérieur, exécutez :

sudo -u "$(id -un 1000):$(id -un 1000)" mkdir -p ./config/nginx/site-confs ./data ./database/data

Proxy inverse NGINX avec HTTPS automatique#

Pour que le HTTPS automatique fonctionne, vous devez d’abord configurer des entrées DNS appropriées pour le serveur sur lequel vous exécutez ce proxy inverse.

Ce proxy inverse est découplé de Grist, dans un docker-compose.yml séparé, vous pouvez donc fournir commodément des backends supplémentaires vers lesquels il peut router le trafic - par exemple, Authelia pour l’authentification. Cette configuration utilise SWAG, une image Docker qui regroupe le proxy inverse NGINX avec des services utiles, y compris la génération et le renouvellement de certificats TLS.

Voici le fichier docker-compose.yml gérant l’instance NGINX.

version: "3.9"
services:
  letsencrypt:
    image: lscr.io/linuxserver/swag # NGINX avec HTTPS automatique
    container_name: nginx-letsencrypt-master
    network_mode: "host"
    environment:
      - PUID=1000 # Changement optionnel
      - PGID=1000 # Changement optionnel
      - TZ=Europe/London # Changez ici !
      - URL=mydomain.eu # Changez ici, dans ./config/nginx/site-confs/grist.conf et dans les fichiers .env !
      - SUBDOMAINS=grist,webhook.grist # Changez ici, dans ./config/nginx/site-confs/grist.conf et dans les fichiers .env !
      - VALIDATION=http
      - EMAIL=admin@mydomain.eu # Changez ici !
      - ONLY_SUBDOMAINS=true
      - STAGING=false # Activez si vous testez !
    volumes:
      - ./config:/config
    restart: unless-stopped

Configuration NGINX#

La configuration suivante doit être placée dans ./config/nginx/site-confs/grist.conf, pour que l’instance NGINX route correctement vers Grist.

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    # Ajustez selon vos besoins !
    server_name grist.mydomain.eu webhook.grist.mydomain.eu;

    # activez les confs de proxy inverse en sous-dossier
    include /config/nginx/proxy-confs/*.subfolder.conf;

    # activez pour l'authentification LDAP (nécessite ldap-location.conf dans le bloc location)
    #include /config/nginx/ldap-server.conf;

    # activez pour Authelia (nécessite authelia-location.conf dans le bloc location)
    #include /config/nginx/authelia-server.conf;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

Grist#

Voici le docker-compose.yml pour le backend Grist. Il contient le déploiement de l’application Grist, qui est accompagnée d’une base de données PostgreSQL.

# https://github.com/gristlabs/grist-core#using-grist

version: "3.9"

services:
  grist:
    image: gristlabs/grist:1.0.8 # Changez ici ! --> https://hub.docker.com/r/gristlabs/grist/tags
    container_name: grist
    user: "1000" # Changement optionnel
    env_file:
      - ./grist.env
    volumes:
      - ./data:/persist
    ports:
      - 127.0.0.1:3000:8080
    depends_on:
      - database

  database:
    image: postgres:15-alpine
    container_name: grist_db
    user: "1000" # Changement optionnel
    env_file:
      - ./grist_db.env
    volumes:
      - ./database/data:/var/lib/postgresql/data

Environnement#

Les fichiers .env suivants doivent être situés dans le même dossier que le docker-compose.yml de Grist.

grist.env#

# https://github.com/gristlabs/grist-core#environment-variables

PORT=8080
APP_HOME_URL=https://grist.mydomain.eu
GRIST_ALLOWED_HOSTS=webhook.grist.mydomain.eu # Remplacez par les domaines cibles du webhook
GRIST_DOMAIN=grist.mydomain.eu
GRIST_SINGLE_ORG=myorg
GRIST_HIDE_UI_ELEMENTS=billing
GRIST_LIST_PUBLIC_SITES=false
GRIST_MAX_UPLOAD_ATTACHMENT_MB=10
GRIST_MAX_UPLOAD_IMPORT_MB=300
GRIST_ORG_IN_PATH=false
GRIST_PAGE_TITLE_SUFFIX=_blank
GRIST_FORCE_LOGIN=true
GRIST_SUPPORT_ANON=false
GRIST_THROTTLE_CPU=true

GRIST_SANDBOX_FLAVOR=gvisor
PYTHON_VERSION=3
PYTHON_VERSION_ON_CREATION=3

# Base de données
TYPEORM_DATABASE=grist
TYPEORM_USERNAME=grist
TYPEORM_HOST=grist_db
TYPEORM_LOGGING=false
TYPEORM_PASSWORD=mysupersecretpassword CHANGEZ ICI!!!!
TYPEORM_PORT=5432
TYPEORM_TYPE=postgres

grist_db.env#

```

https://hub.docker.com/_/postgres#

POSTGRES_DB=grist POSTGRES_USER=grist POSTGRES_PASSWORD=mysupersecretpassword CHANGEZ ICI!!!! ```