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,}/
|