summaryrefslogtreecommitdiffhomepage
path: root/public/v4/apps/novu.yml
blob: 7416f9a5afed62060d69d07d70c994416a31c9e0 (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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
captainVersion: 4
services:
    $$cap_appname-cache:
        caproverExtra:
            notExposeAsWebApp: 'true'
        image: redis:$$cap_REDIS_VERSION

    $$cap_appname-db:
        caproverExtra:
            notExposeAsWebApp: 'true'
        image: mongo:$$cap_MONGO_VERSION
        environment:
            PUID: $$cap_PUID
            PGID: $$cap_PGID
        volumes:
            - $$cap_appname-db:/data/db

    $$cap_appname-api:
        caproverExtra:
            containerHttpPort: $$cap_NOVU_API_PORT
        image: $$cap_NOVU_IMAGE_URL/api:$$cap_NOVU_IMAGE_VERSION
        environment:
            NODE_ENV: $$cap_ENVIRONMENT
            API_ROOT_URL: http://$$cap_appname-api.$$cap_root_domain
            DISABLE_USER_REGISTRATION: $$cap_NOVU_DISABLE_USER_REGISTRATION
            PORT: $$cap_NOVU_API_PORT
            FRONT_BASE_URL: http://$$cap_appname.$$cap_root_domain
            MONGO_URL: mongodb://srv-captain--$$cap_appname-db/$$cap_MONGO_DB
            REDIS_HOST: srv-captain--$$cap_appname-cache
            REDIS_PORT: $$cap_REDIS_PORT
            REDIS_DB_INDEX: $$cap_REDIS_DB_INDEX
            S3_LOCAL_STACK: $$cap_NOVU_S3_LOCAL_STACK
            S3_BUCKET_NAME: $$cap_NOVU_S3_BUCKET_NAME
            S3_REGION: $$cap_NOVU_S3_REGION
            AWS_ACCESS_KEY_ID: $$cap_NOVU_AWS_ACCESS_KEY_ID
            AWS_SECRET_ACCESS_KEY: $$cap_NOVU_AWS_SECRET_ACCESS_KEY
            JWT_SECRET: $$cap_NOVU_JWT_SECRET
            STORE_ENCRYPTION_KEY: $$cap_NOVU_STORE_ENCRYPTION_KEY
            SENTRY_DSN: $$cap_NOVU_API_SENTRY_DSN
        depends_on:
            - $$cap_appname-db
            - $$cap_appname-cache

    $$cap_appname-ws:
        caproverExtra:
            containerHttpPort: $$cap_NOVU_PORT_WEBSOCKET
        image: $$cap_NOVU_IMAGE_URL/ws:$$cap_NOVU_IMAGE_VERSION
        environment:
            PORT: $$cap_NOVU_PORT_WEBSOCKET
            NODE_ENV: $$cap_ENVIRONMENT
            MONGO_URL: mongodb://srv-captain--$$cap_appname-db/$$cap_MONGO_DB
            REDIS_HOST: srv-captain--$$cap_appname-cache
            REDIS_PORT: $$cap_REDIS_PORT
            JWT_SECRET: $$cap_NOVU_JWT_SECRET
        depends_on:
            - $$cap_appname-db
            - $$cap_appname-cache

    $$cap_appname:
        caproverExtra:
            containerHttpPort: $$cap_NOVU_PORT_APPLICATION
        image: $$cap_NOVU_IMAGE_URL/web:$$cap_NOVU_IMAGE_VERSION
        environment:
            REACT_APP_API_URL: http://$$cap_appname-api.$$cap_root_domain
            REACT_APP_ENVIRONMENT: $$cap_ENVIRONMENT
            REACT_APP_WIDGET_EMBED_PATH: http://$$cap_appname-embed.$$cap_root_domain/embed.umd.min.js
            REACT_APP_DOCKER_HOSTED_ENV: $$cap_NOVU_DOCKER_HOSTED_ENVIRONMENT
        depends_on:
            - $$cap_appname-api

    $$cap_appname-widget:
        caproverExtra:
            containerHttpPort: $$cap_NOVU_PORT_WIDGET
        image: $$cap_NOVU_IMAGE_URL/widget:$$cap_NOVU_IMAGE_VERSION
        environment:
            REACT_APP_API_URL: http://$$cap_appname-api.$$cap_root_domain
            REACT_APP_WS_URL: http://$$cap_appname-ws.$$cap_root_domain
            REACT_APP_ENVIRONMENT: $$cap_ENVIRONMENT
        depends_on:
            - $$cap_appname-api
            - $$cap_appname

    $$cap_appname-embed:
        caproverExtra:
            containerHttpPort: $$cap_NOVU_PORT_EMBED
        image: $$cap_NOVU_IMAGE_URL/embed:$$cap_NOVU_IMAGE_VERSION
        environment:
            WIDGET_URL: http://$$cap_appname-widget.$$cap_root_domain
        depends_on:
            - $$cap_appname-widget

caproverOneClickApp:
    displayName: Novu
    isOfficial: true
    description: Open Source Notification Infrastructure For Developers
    documentation: https://docs.novu.co
    instructions:
        start: |-
            Novu is a fully functional real-time notification center for your web and react apps.
            The only open-source notifications infrastructure that manages multi-channel content, scheduled notifications, digest engine, user preferences, and delivers Email, SMS, Push and Chat notifications using a single API.
        end: |-
            Novu has been successfully deployed! It might take few moments before it's fully started.
            You can access it at `http://$$cap_appname.$$cap_root_domain`.
    variables:
        - id: $$cap_NOVU_IMAGE_VERSION
          label: Application | Version
          description: Version tag of Novu's Docker images. Check out their valid tags at https://github.com/novuhq/novu/pkgs/container/novu%2Fapi
          defaultValue: '0.8.0'
          validRegex: /.{1,}/
        - id: $$cap_NOVU_IMAGE_URL
          label: Application | Image URL
          description: URL to Novu's Docker images.
          defaultValue: ghcr.io/novuhq/novu
          validRegex: /.{1,}/
        - id: $$cap_REDIS_VERSION
          label: Redis | Version
          description: Version tag of Redis' image. Check out their valid tags at https://hub.docker.com/_/redis/tags
          defaultValue: '7.0.5'
          validRegex: /.{1,}/
        - id: $$cap_MONGO_VERSION
          label: MongoDB | Version
          description: Version tag of MongoDB's image. Check out their valid tags at https://hub.docker.com/_/mongo/tags
          defaultValue: '6.0.2'
          validRegex: /.{1,}/
        - id: $$cap_ENVIRONMENT
          label: General | Environment
          description: Application environment (e.g `dev`, `test`, `prod`, `ci`, `local`).
          defaultValue: prod
          validRegex: /^(dev|test|prod|ci|local)$/
        - id: $$cap_NOVU_DOCKER_HOSTED_ENVIRONMENT
          label: General | Docker-Hosted Environment
          description: Whether to the application is hosted in Docker.
          defaultValue: 'true'
          validRegex: /^(true|false)$/
        - id: $$cap_PUID
          label: General | User ID
          description: User ID that the process uses, run `id $user` on your instance to see the ID.
          defaultValue: 1000
          validRegex: /.{1,}/
        - id: $$cap_PGID
          label: General | Group ID
          description: Group ID that the process uses, run `id $user` on your instance to see the ID.
          defaultValue: 1000
          validRegex: /.{1,}/
        - id: $$cap_NOVU_JWT_SECRET
          label: Security | JWT Secret
          description: Secret for JWT.
          defaultValue: $$cap_gen_random_hex(32)
          validRegex: /.{1,}/
        - id: $$cap_NOVU_STORE_ENCRYPTION_KEY
          label: Security | Store Encryption Key
          description: Key for store encryption.
          defaultValue: $$cap_gen_random_hex(32)
          validRegex: /.{1,}/
        - id: $$cap_NOVU_DISABLE_USER_REGISTRATION
          label: Privacy | Disable User Registration
          description: Whether to disable user registration.
          defaultValue: 'false'
          validRegex: /^(true|false)$/
        - id: $$cap_NOVU_API_PORT
          label: API | Port
          description: Port of Novu's API.
          defaultValue: 3000
          validRegex: /.{1,}/
        - id: $$cap_NOVU_API_SENTRY_DSN
          label: API | Sentry DSN
          description: Sentry's DSN for error tracking. Leave empty to disable.
        - id: $$cap_REDIS_PORT
          label: Redis | Port
          description: Port of Redis' host.
          defaultValue: 6379
          validRegex: /.{1,}/
        - id: $$cap_REDIS_DB_INDEX
          label: Redis | Database Index
          description: Index of the database in Redis.
          defaultValue: 2
          validRegex: /.{1,}/
        - id: $$cap_MONGO_DB
          label: MongoDB | Database Name
          description: Name of the database in MongoDB.
          defaultValue: novu
          validRegex: /.{1,}/
        - id: $$cap_NOVU_PORT_EMBED
          label: Networking | Embed Port
          description: Port of Novu's embed host.
          defaultValue: 4701
          validRegex: /.{1,}/
        - id: $$cap_NOVU_PORT_WIDGET
          label: Networking | Widget Port
          description: Port of Novu's widget host.
          defaultValue: 4500
          validRegex: /.{1,}/
        - id: $$cap_NOVU_PORT_APPLICATION
          label: Networking | Web Port
          description: Port of Novu's web host.
          defaultValue: 4200
          validRegex: /.{1,}/
        - id: $$cap_NOVU_PORT_WEBSOCKET
          label: Networking | WebSocket Port
          description: Port of Novu's WebSocket host.
          defaultValue: 3002
          validRegex: /.{1,}/
        - id: $$cap_NOVU_S3_LOCAL_STACK
          label: S3 | Local Stack URL
          description: URL to Localstack instance. Leave to `http://localhost:4566` to use local file storage.
          defaultValue: http://localhost:4566
          validRegex: /.{1,}/
        - id: $$cap_NOVU_S3_BUCKET_NAME
          label: S3 | Bucket Name
          description: Name of the bucket. Leave to `novu-local` to use local file storage.
          defaultValue: novu-local
          validRegex: /.{1,}/
        - id: $$cap_NOVU_S3_REGION
          label: S3 | Region
          description: Region of the storage. Leave to `us-east-1` if using local file storage.
          defaultValue: us-east-1
          validRegex: /.{1,}/
        - id: $$cap_NOVU_AWS_ACCESS_KEY_ID
          label: S3 | AWS Access Key ID
          description: Access key ID for AWS. Leave to `test` to use local file storage.
          defaultValue: test
          validRegex: /.{1,}/
        - id: $$cap_NOVU_AWS_SECRET_ACCESS_KEY
          label: S3 | AWS Secret Access Key
          description: Secret access key for AWS. Leave to `test` to use local file storage.
          defaultValue: test
          validRegex: /.{1,}/