Ir al contenido principal

NocoDB + Traefik

Requerimientos previos

  • Docker instalado
  • Instancia de Traefik instalada y corriendo
  • Red de Docker creada para conectar contenedor con Traefik

Pasos

  1. Preparar dominio/subdominio de la instancia a configurar
  2. Crear archivos de configuración
  3. Cambiar valores de acuerdo a las necesidades de la instancia
  4. Levantar contenedor (docker composer up)
  5. Visitar aplicación y comprobar que esté funcionando correctamente

Archivos de configuración

.env

INSTANCE_URL=ejemplo.com

# Database
DATABASE_NAME=nocodb_bd
DATABASE_USER=nocodb_bd_user
DATABASE_PW=abc123
VOLUME_PATH=/var/www/ejemplo.com

compose.yaml

En la configuración de entrypoints y certresolver cambiar de acuerdo a los valores configurados en Traefik.

services:
  nocodb_app:
    container_name: nocodb_app
    depends_on:
      - nocodb_db
    environment:
      - "NC_DB=pg://nocodb_db:5432?u=${DATABASE_USER}&p=${DATABASE_PW}&d=${DATABASE_NAME}"
      - "NC_PUBLIC_URL=https://${INSTANCE_URL}"
      - "NC_DISABLE_TELE=true"
    image: "nocodb/nocodb:latest"
    labels:
      - "traefik.enable=true"
      - "traefik.http.services.nocodb.loadbalancer.server.port=8080"
      - "traefik.http.routers.nocodb.entrypoints=https"
      - "traefik.http.routers.nocodb.tls=true"
      - "traefik.http.routers.nocodb.tls.certresolver=tls"
      - "traefik.http.routers.nocodb.rule=Host(`${INSTANCE_URL}`)"
    networks:
      - traefik
    restart: always
    volumes:
      - "${VOLUME_PATH}/data:/usr/app/data"
  nocodb_db:
    container_name: nocodb_db
    environment:
      POSTGRES_DB: "${DATABASE_NAME}"
      POSTGRES_PASSWORD: "${DATABASE_PW}"
      POSTGRES_USER: "${DATABASE_USER}"
    healthcheck:
      interval: 60s
      retries: 10
      test: "pg_isready -U ${DATABASE_USER} -d ${DATABASE_NAME}"
      timeout: 2s
    image: "postgres:12.17-alpine"
    networks:
      - traefik
    restart: always
    volumes:
      - "${VOLUME_PATH}/db:/var/lib/postgresql/data"
networks:
  traefik:
    external: true