captainVersion: 4 services: # PostgreSQL $$cap_appname-postgres: image: postgres:$$cap_postgres_version volumes: - $$cap_appname-postgres-data:/var/lib/postgresql/data restart: always environment: POSTGRES_INITDB_ARGS: --data-checksums POSTGRES_DB: penpot POSTGRES_USER: penpot POSTGRES_PASSWORD: $$cap_postgres_pass caproverExtra: notExposeAsWebApp: 'true' # Redis $$cap_appname-redis: image: redis:$$cap_redis_version restart: always caproverExtra: notExposeAsWebApp: 'true' # Exporter $$cap_appname-exporter: image: penpotapp/exporter:$$cap_penpot_exporter_version restart: always environment: PENPOT_PUBLIC_URI: $$cap_public_uri caproverExtra: notExposeAsWebApp: 'true' # Backend $$cap_appname-backend: image: penpotapp/backend:$$cap_penpot_backend_version volumes: - $$cap_appname-assets-data:/opt/data environment: PENPOT_PUBLIC_URI: $$cap_public_uri PENPOT_TELEMETRY_ENABLED: $$cap_enable_telemetry PENPOT_SMTP_DEFAULT_FROM: $$cap_smtp_from PENPOT_SMTP_DEFAULT_REPLY_TO: $$cap_smtp_reply_to PENPOT_SMTP_HOST: $$cap_smtp_host PENPOT_SMTP_PORT: $$cap_smtp_port PENPOT_SMTP_USERNAME: $$cap_smtp_username PENPOT_SMTP_PASSWORD: $$cap_smtp_password PENPOT_SMTP_TLS: $$cap_smtp_tls PENPOT_SMTP_SSL: $$cap_smtp_ssl PENPOT_DATABASE_URI: postgresql://srv-captain--$$cap_appname-postgres/penpot PENPOT_DATABASE_USERNAME: penpot PENPOT_DATABASE_PASSWORD: $$cap_postgres_pass PENPOT_REDIS_URI: redis://srv-captain--$$cap_appname-redis:6379/0 PENPOT_STORAGE_BACKEND: fs PENPOT_STORAGE_FS_DIRECTORY: /opt/data/assets PENPOT_SMTP_ENABLED: 'true' depends_on: - $$cap_appname-postgres - $$cap_appname-redis caproverExtra: notExposeAsWebApp: 'true' # Frontend $$cap_appname: volumes: - $$cap_appname-assets-data:/opt/data caproverExtra: dockerfileLines: - FROM penpotapp/frontend:$$cap_penpot_frontend_version - RUN sed -i 's/penpot-backend/srv-captain--$$cap_appname-backend/g' /etc/nginx/nginx.conf - RUN sed -i 's/penpot-exporter/srv-captain--$$cap_appname-exporter/g' /etc/nginx/nginx.conf depends_on: - $$cap_appname-backend - $$cap_appname-exporter caproverOneClickApp: variables: - id: $$cap_postgres_version label: Postgres Version defaultValue: '13' description: Checkout their docker description page for the valid tags https://hub.docker.com/_/postgres?tab=tags validRegex: /^([^\s^\/])+$/ - id: $$cap_redis_version label: Redis Version defaultValue: '6' description: Checkout their docker desctiption page for the valid tags https://hub.docker.com/_/redis?tab=description validRegex: /^([^\s^\/])+$/ - id: $$cap_penpot_frontend_version label: Penpot Frontend Version defaultValue: '1.4.1-alpha' description: Checkout their docker page for the valid tags https://hub.docker.com/r/penpotapp/frontend/tags validRegex: /^([^\s^\/])+$/ - id: $$cap_penpot_backend_version label: Penpot Backend Version defaultValue: '1.4.1-alpha' description: Checkout their docker page for the valid tags https://hub.docker.com/r/penpotapp/backend/tags validRegex: /^([^\s^\/])+$/ - id: $$cap_penpot_exporter_version label: Penpot Exporter Version defaultValue: '1.4.1-alpha' description: Checkout their docker page for the valid tags https://hub.docker.com/r/penpotapp/exporter/tags validRegex: /^([^\s^\/])+$/ - id: $$cap_postgres_pass label: Potgress Database password description: 'Pasword for postgres' validRegex: /.{1,}/ - id: $$cap_public_uri label: Public URI description: 'Frontend url to access your Penpot' validRegex: /^^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/ - id: $$cap_smtp_from label: STMP from address defaultValue: user@example.com validRegex: /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/ - id: $$cap_smtp_reply_to label: STMP reply address defaultValue: no-reply@example.com validRegex: /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/ - id: $$cap_smtp_host label: STMP host defaultValue: smtp.example.com validRegex: /^^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/ - id: $$cap_smtp_port label: STMP port defaultValue: 587 validRegex: /^^((6553[0-5])|(655[0-2][0-9])|(65[0-4][0-9]{2})|(6[0-4][0-9]{3})|([1-5][0-9]{4})|([0-5]{0,5})|([0-9]{1,4}))$$/ - id: $$cap_smtp_username label: STMP username defaultValue: user@example.com validRegex: /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/ - id: $$cap_smtp_password label: STMP password defaultValue: validRegex: /.{1,}/ - id: $$cap_smtp_tls label: STMP TLS support defaultValue: true validRegex: /^(true|false)$/ - id: $$cap_smtp_ssl label: STMP SSL support defaultValue: false validRegex: /^(true|false)$/ - id: $$cap_enable_telemetry label: Send Anonymous Data description: When enabled, a periodical process will send annonymous data about this instance. Read more at https://github.com/penpot/penpot/blob/f2fd97693427c7decb86e745bf178fe70fe332a0/docker/images/docker-compose.yaml#L56-L62 defaultValue: false validRegex: /^(true|false)$/ instructions: start: >- The open-source solution for design and prototyping. end: > Penpot is deployed and available as http://$$cap_appname.$$cap_root_domain. IMPORTANT: It will take up to 2 minutes for Penpot to be ready. Before that, you might see a 502 error page. displayName: Penpot isOfficial: true description: The open-source solution for design and prototyping. documentation: Official docs are [here](https://github.com/penpot/penpot/tree/develop/docs)