157 lines
6.7 KiB
YAML
157 lines
6.7 KiB
YAML
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_version
|
||
restart: always
|
||
environment:
|
||
PENPOT_PUBLIC_URI: $$cap_public_uri
|
||
PENPOT_REDIS_URI: redis://srv-captain--$$cap_appname-redis:6379/0
|
||
caproverExtra:
|
||
notExposeAsWebApp: 'true'
|
||
|
||
# Backend
|
||
$$cap_appname-backend:
|
||
image: penpotapp/backend:$$cap_penpot_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_ASSETS_STORAGE_BACKEND: assets-fs
|
||
PENPOT_STORAGE_ASSETS_FS_DIRECTORY: /opt/data/assets
|
||
PENPOT_FLAGS: $$cap_flags
|
||
PENPOT_REGISTRATION_DOMAIN_WHITELIST: $$cap_registration_domain_whitelist
|
||
PENPOT_TENANT: pro
|
||
depends_on:
|
||
- $$cap_appname-postgres
|
||
- $$cap_appname-redis
|
||
caproverExtra:
|
||
notExposeAsWebApp: 'true'
|
||
|
||
# Frontend
|
||
$$cap_appname:
|
||
image: penpotapp/frontend:$$cap_penpot_version
|
||
volumes:
|
||
- $$cap_appname-assets-data:/opt/data
|
||
environment:
|
||
PENPOT_FLAGS: $$cap_flags
|
||
PENPOT_BACKEND_URI: http://srv-captain--$$cap_appname-backend:6060
|
||
PENPOT_EXPORTER_URI: http://srv-captain--$$cap_appname-exporter:6061
|
||
depends_on:
|
||
- $$cap_appname-backend
|
||
- $$cap_appname-exporter
|
||
|
||
caproverOneClickApp:
|
||
variables:
|
||
- id: $$cap_postgres_version
|
||
label: Postgres Version
|
||
defaultValue: '15'
|
||
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: '7'
|
||
description: Checkout their docker description page for the valid tags https://hub.docker.com/_/redis?tab=description
|
||
validRegex: /^([^\s^\/])+$/
|
||
- id: $$cap_penpot_version
|
||
label: Penpot version for frontend, backend and exporter
|
||
defaultValue: '1.18.4'
|
||
description: Checkout their docker page for the valid tags https://hub.docker.com/r/penpotapp/frontend/tags
|
||
validRegex: /^([^\s^\/])+$/
|
||
- id: $$cap_flags
|
||
label: Penpot Flags
|
||
defaultValue: enable-registration enable-login enable-smtp
|
||
description: Add "disable-secure-session-cookies" if you are going to serve it without HTTPS. Checkout option on their documentation https://help.penpot.app/technical-guide/configuration
|
||
- id: $$cap_registration_domain_whitelist
|
||
label: Penpot Registration Domain Whitelist
|
||
description: Checkout option on their documentation https://help.penpot.app/technical-guide/configuration
|
||
- id: $$cap_postgres_pass
|
||
label: Postgres Database password
|
||
description: 'Password for postgres'
|
||
defaultValue: $$cap_gen_random_hex(16)
|
||
validRegex: /.{1,}/
|
||
- id: $$cap_public_uri
|
||
label: Public URI
|
||
description: 'Frontend url to access your Penpot'
|
||
validRegex: /^^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/
|
||
- id: $$cap_smtp_from
|
||
label: SMTP 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: SMTP 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: SMTP host
|
||
defaultValue: smtp.example.com
|
||
validRegex: /^^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/
|
||
- id: $$cap_smtp_port
|
||
label: SMTP 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: SMTP username
|
||
defaultValue: user@example.com
|
||
- id: $$cap_smtp_password
|
||
label: SMTP password
|
||
validRegex: /.{1,}/
|
||
- id: $$cap_smtp_tls
|
||
label: SMTP TLS support
|
||
defaultValue: 'true'
|
||
validRegex: /^(true|false)$/
|
||
- id: $$cap_smtp_ssl
|
||
label: SMTP SSL support
|
||
defaultValue: 'false'
|
||
validRegex: /^(true|false)$/
|
||
- id: $$cap_enable_telemetry
|
||
label: Send Anonymous Data
|
||
description: When enabled, a periodical process will send anonymous 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. Please enable "WebSocket Support" in the HTTP settings.
|
||
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)
|