summaryrefslogtreecommitdiffhomepage
path: root/public/v4/apps/penpot.yml
blob: 22bbdee5b8ebf7e510040009d3da92a6e4e30783 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
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: [email protected]
          validRegex: /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/
        - id: $$cap_smtp_reply_to
          label: SMTP reply address
          defaultValue: [email protected]
          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: [email protected]
        - 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)