# 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

```shell
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

<p class="callout info">En la configuración de `entrypoints` y `certresolver` cambiar de acuerdo a los valores configurados en Traefik.</p>

```yaml
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

```

####   