---
version: "3.5"

networks:
  penpot:

services:
 
  penpot-frontend:
    image: "penpotapp/frontend:latest"
    restart: always
    ports:
      - 80

    volumes:
      - /volume1/docker/penpot/assets:/opt/data/assets

    depends_on:
      - penpot-backend
      - penpot-exporter

    networks:
      - penpot

      - PENPOT_FLAGS=enable-registration enable-login-with-password

  penpot-backend:
    image: "penpotapp/backend:latest"
    restart: always

    volumes:
      - /volume1/docker/penpot/assets:/opt/data/assets

    depends_on:
      - penpot-postgres
      - penpot-redis

    networks:
      - penpot

    environment:
       - email-verification
       - login-with-github
       - login-with-google
       - login-with-password
       - registration
       - secure-session-cookies
       - smtp
       - telemetry
       - webhooks
       - prepl-server
       - PENPOT_FLAGS=enable-registration enable-login-with-password disable-email-verification enable-smtp enable-prepl-server
       - PENPOT_SECRET_KEY=Yoursupersecretkey
       - PENPOT_PUBLIC_URI=https://penpot.yoururl.com
       - PENPOT_DATABASE_URI=postgresql://penpot-postgres/penpot
       - PENPOT_DATABASE_USERNAME=penpot
       - PENPOT_DATABASE_PASSWORD=penpot
       - PENPOT_REDIS_URI=redis://penpot-redis/0
       - PENPOT_ASSETS_STORAGE_BACKEND=assets-fs
       - PENPOT_STORAGE_ASSETS_FS_DIRECTORY=/opt/data/assets
       - PENPOT_TELEMETRY_ENABLED=true
       - PENPOT_SMTP_DEFAULT_FROM=yourname@gmail.com
       - PENPOT_SMTP_DEFAULT_REPLY_TO=yourname@gmail.com
       - PENPOT_SMTP_HOST=smtp.google.com
       - PENPOT_SMTP_PORT=587
       - PENPOT_SMTP_USERNAME=yourname@gmail.com
       - PENPOT_SMTP_PASSWORD=yourapptoken
       - PENPOT_SMTP_TLS=true
       - PENPOT_SMTP_SSL=false

  penpot-exporter:
    image: "penpotapp/exporter:latest"
    restart: always
    networks:
      - penpot

    environment:
      - PENPOT_PUBLIC_URI=http://penpot-frontend
      - PENPOT_REDIS_URI=redis://penpot-redis/0

  penpot-postgres:
    image: "postgres:15"
    restart: always
    stop_signal: SIGINT

    volumes:
      - /volume1/docker/penpot/postgres_v15:/var/lib/postgresql/data

    networks:
      - penpot

    environment:
      - POSTGRES_INITDB_ARGS=--data-checksums
      - POSTGRES_DB=penpot
      - POSTGRES_USER=penpot
      - POSTGRES_PASSWORD=penpot

  penpot-redis:
    image: redis:7
    restart: always
    networks:
      - penpot

  penpot-mailcatch:
    image: sj26/mailcatcher:latest
    restart: always
    expose:
      - '1025'
    ports:
      - "1080"
    networks:
      - penpot