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
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
|
captainVersion: 4
services:
$$cap_appname:
image: getlago/front:$$cap_LAGO_VERSION
hostname: $$cap_appname.$$cap_root_domain
environment:
API_URL: http://$$cap_appname-api.$$cap_root_domain
APP_ENV: $$cap_LAGO_ENVIRONMENT
CODEGEN_API: http://$$cap_appname-api.$$cap_root_domain
LAGO_DISABLE_SIGNUP: $$cap_LAGO_DISABLE_SIGNUP
depends_on:
- $$cap_appname-api
$$cap_appname-api:
caproverExtra:
containerHttpPort: $$cap_LAGO_API_PORT
dockerfileLines:
- FROM getlago/api:$$cap_LAGO_VERSION
- CMD ["./scripts/start.sh"]
hostname: $$cap_appname-api.$$cap_root_domain
environment:
LAGO_API_URL: http://$$cap_appname-api.$$cap_root_domain
DATABASE_URL: postgresql://$$cap_POSTGRES_USER:$$cap_POSTGRES_PASSWORD@srv-captain--$$cap_appname-db/$$cap_POSTGRES_DB
REDIS_URL: redis://srv-captain--$$cap_appname-cache
SECRET_KEY_BASE: $$cap_LAGO_API_SECRET_KEY_BASE
RAILS_ENV: $$cap_LAGO_ENVIRONMENT
RAILS_LOG_TO_STDOUT: $$cap_LAGO_API_LOG_TO_STDOUT
SENTRY_DSN: $$cap_LAGO_API_SENTRY_DSN
LAGO_FRONT_URL: http://$$cap_appname.$$cap_root_domain
RSA_PRIVATE_KEY: $$cap_LAGO_API_RSA_PRIVATE_KEY
LAGO_RSA_PRIVATE_KEY: $$cap_LAGO_API_RSA_PRIVATE_KEY
LAGO_SIDEKIQ_WEB: $$cap_LAGO_API_SIDEKIQ_WEB
ENCRYPTION_PRIMARY_KEY: $$cap_LAGO_API_ENCRYPTION_PRIMARY_KEY
ENCRYPTION_DETERMINISTIC_KEY: $$cap_LAGO_API_ENCRYPTION_DETERMINISTIC_KEY
ENCRYPTION_KEY_DERIVATION_SALT: $$cap_LAGO_API_ENCRYPTION_KEY_DERIVATION_SALT
LAGO_USE_AWS_S3: $$cap_LAGO_API_USE_AWS_S3
LAGO_AWS_S3_ACCESS_KEY_ID: $$cap_LAGO_API_AWS_S3_ACCESS_KEY_ID
LAGO_AWS_S3_SECRET_ACCESS_KEY: $$cap_LAGO_API_AWS_S3_SECRET_ACCESS_KEY
LAGO_AWS_S3_REGION: $$cap_LAGO_API_AWS_S3_REGION
LAGO_AWS_S3_BUCKET: $$cap_LAGO_API_AWS_S3_BUCKET
LAGO_AWS_S3_ENDPOINT: $$cap_LAGO_API_AWS_S3_ENDPOINT
LAGO_PDF_URL: http://srv-captain--$$cap_appname-pdf
LAGO_REDIS_CACHE_URL: redis://srv-captain--$$cap_appname-cache
LAGO_DISABLE_SEGMENT: $$cap_LAGO_API_DISABLE_SEGMENT
volumes:
- $$cap_appname-api-storage-data:/app/storage
depends_on:
- $$cap_appname-db
- $$cap_appname-cache
$$cap_appname-api-worker:
caproverExtra:
notExposeAsWebApp: 'true'
dockerfileLines:
- FROM getlago/api:$$cap_LAGO_VERSION
- CMD ["./scripts/start.worker.sh"]
environment:
LAGO_API_URL: http://$$cap_appname-api.$$cap_root_domain
DATABASE_URL: postgresql://$$cap_POSTGRES_USER:$$cap_POSTGRES_PASSWORD@srv-captain--$$cap_appname-db/$$cap_POSTGRES_DB
REDIS_URL: redis://srv-captain--$$cap_appname-cache
SECRET_KEY_BASE: $$cap_LAGO_API_SECRET_KEY_BASE
RAILS_ENV: $$cap_LAGO_ENVIRONMENT
RAILS_LOG_TO_STDOUT: $$cap_LAGO_API_LOG_TO_STDOUT
SENTRY_DSN: $$cap_LAGO_API_SENTRY_DSN
LAGO_RSA_PRIVATE_KEY: $$cap_LAGO_API_RSA_PRIVATE_KEY
RSA_PRIVATE_KEY: $$cap_LAGO_API_RSA_PRIVATE_KEY
ENCRYPTION_PRIMARY_KEY: $$cap_LAGO_API_ENCRYPTION_PRIMARY_KEY
ENCRYPTION_DETERMINISTIC_KEY: $$cap_LAGO_API_ENCRYPTION_DETERMINISTIC_KEY
ENCRYPTION_KEY_DERIVATION_SALT: $$cap_LAGO_API_ENCRYPTION_KEY_DERIVATION_SALT
LAGO_USE_AWS_S3: $$cap_LAGO_API_USE_AWS_S3
LAGO_AWS_S3_ACCESS_KEY_ID: $$cap_LAGO_API_AWS_S3_ACCESS_KEY_ID
LAGO_AWS_S3_SECRET_ACCESS_KEY: $$cap_LAGO_API_AWS_S3_SECRET_ACCESS_KEY
LAGO_AWS_S3_REGION: $$cap_LAGO_API_AWS_S3_REGION
LAGO_AWS_S3_BUCKET: $$cap_LAGO_API_AWS_S3_BUCKET
LAGO_AWS_S3_ENDPOINT: $$cap_LAGO_API_AWS_S3_ENDPOINT
LAGO_PDF_URL: http://srv-captain--$$cap_appname-pdf
LAGO_REDIS_CACHE_URL: redis://srv-captain--$$cap_appname-cache
LAGO_DISABLE_SEGMENT: $$cap_LAGO_API_DISABLE_SEGMENT
volumes:
- $$cap_appname-api-storage-data:/app/storage
depends_on:
- $$cap_appname-api
$$cap_appname-api-clock:
caproverExtra:
notExposeAsWebApp: 'true'
dockerfileLines:
- FROM getlago/api:$$cap_LAGO_VERSION
- CMD ["./scripts/start.clock.sh"]
environment:
LAGO_API_URL: http://$$cap_appname-api.$$cap_root_domain
DATABASE_URL: postgresql://$$cap_POSTGRES_USER:$$cap_POSTGRES_PASSWORD@srv-captain--$$cap_appname-db/$$cap_POSTGRES_DB
REDIS_URL: redis://srv-captain--$$cap_appname-cache
SECRET_KEY_BASE: $$cap_LAGO_API_SECRET_KEY_BASE
RAILS_ENV: $$cap_LAGO_ENVIRONMENT
RAILS_LOG_TO_STDOUT: $$cap_LAGO_API_LOG_TO_STDOUT
SENTRY_DSN: $$cap_LAGO_API_SENTRY_DSN
LAGO_RSA_PRIVATE_KEY: $$cap_LAGO_API_RSA_PRIVATE_KEY
RSA_PRIVATE_KEY: $$cap_LAGO_API_RSA_PRIVATE_KEY
ENCRYPTION_PRIMARY_KEY: $$cap_LAGO_API_ENCRYPTION_PRIMARY_KEY
ENCRYPTION_DETERMINISTIC_KEY: $$cap_LAGO_API_ENCRYPTION_DETERMINISTIC_KEY
ENCRYPTION_KEY_DERIVATION_SALT: $$cap_LAGO_API_ENCRYPTION_KEY_DERIVATION_SALT
depends_on:
- $$cap_appname-api
$$cap_appname-pdf:
caproverExtra:
notExposeAsWebApp: 'true'
image: getlago/lago-gotenberg:$$cap_GOTENBERG_VERSION
$$cap_appname-db:
caproverExtra:
notExposeAsWebApp: 'true'
image: postgres:$$cap_POSTGRES_VERSION
environment:
POSTGRES_DB: $$cap_POSTGRES_DB
POSTGRES_USER: $$cap_POSTGRES_USER
POSTGRES_PASSWORD: $$cap_POSTGRES_PASSWORD
PGDATA: $$cap_POSTGRES_PGDATA
volumes:
- $$cap_appname-db-data:/data/postgres
$$cap_appname-cache:
caproverExtra:
notExposeAsWebApp: 'true'
image: redis:$$cap_REDIS_VERSION
volumes:
- $$cap_appname-cache-data:/data
caproverOneClickApp:
instructions:
start: |-
Lago is an open source billing API for product-led SaaS.
The best alternative to Chargebee, Recurly or Stripe Billing.
For usage-based, subscription-based, and all the nuances of pricing in between.
end: |-
Lago 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`.
displayName: Lago
isOfficial: true
description: Open source billing API for product-led SaaS
documentation: https://doc.getlago.com/docs/guide/intro/welcome
variables:
- id: $$cap_LAGO_VERSION
label: General | Lago Version
description: Check out their valid tags at https://hub.docker.com/r/getlago/api/tags
defaultValue: v0.11.0-alpha
validRegex: /.{1,}/
- id: $$cap_POSTGRES_VERSION
label: General | PostgreSQL Version
description: Check out their valid tags at https://hub.docker.com/_/postgres/tags
defaultValue: '14.0-alpine'
validRegex: /.{1,}/
- id: $$cap_REDIS_VERSION
label: General | Redis Version
description: Check out their valid tags at https://hub.docker.com/_/redis/tags
defaultValue: '6.2-alpine'
validRegex: /.{1,}/
- id: $$cap_GOTENBERG_VERSION
label: General | Gotenberg Version
description: Check out their valid tags at https://hub.docker.com/r/getlago/lago-gotenberg/tags
defaultValue: 7
validRegex: /.{1,}/
- id: $$cap_LAGO_ENVIRONMENT
label: General | Environment
description: Environment of the application. Should be left untouched.
defaultValue: production
validRegex: /^(production|development)$/
- id: $$cap_LAGO_DISABLE_SIGNUP
label: Application | Disable Sign-Up
description: Whether to disable registration.
defaultValue: 'false'
validRegex: /^(true|false)$/
- id: $$cap_LAGO_API_PORT
label: API | Port
description: Port of the API.
defaultValue: 3000
validRegex: /.{1,}/
- id: $$cap_LAGO_API_SECRET_KEY_BASE
label: API | Secret Key
description: >-
Secret key used for session encryption.
You can generate one using command `openssl rand -hex 64`.
defaultValue: $$cap_gen_random_hex(64)
validRegex: /.{1,}/
- id: $$cap_LAGO_API_LOG_TO_STDOUT
label: API | Output Log
description: Whether to log output to `stdout`. Should be left untouched.
defaultValue: 'true'
validRegex: /^(true|false)$/
- id: $$cap_LAGO_API_DISABLE_SEGMENT
label: API | Disable Tracking
description: Whether to opt-out of analytics.
defaultValue: 'true'
validRegex: /^(true|false)$/
- id: $$cap_LAGO_API_SENTRY_DSN
label: API | Sentry DSN
description: Sentry DSN key for error and performance tracking.
- id: $$cap_LAGO_API_RSA_PRIVATE_KEY
label: API | RSA Private Key
description: >-
Private key used for webhook signatures.
You should generate one using this command `openssl genrsa 2048 | base64`.
defaultValue: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBMmVmN0Eyc216b25PRU9oRm5wZ2gwZEd4Zk1JUXR1M290YlREcFFKdkxUTzl0YUhRCnlIZDRwUU5KNytqdW5EMy82QXZCbk1tQ0p4a3JJcDNrZ0xUN0tFTTFKaGVVdU90TXlvUWVSYTFYVEVUR2RiN24KWHN6WnBGRVBsYXFHUVVMeWZGTUVUTXh6elJPK0JOZFg3SFRkeDEwTi8vTklJTHBoSlJORm1QRlhDTXJodTFTbQpMVjQ2UmVkUm9JZjI1Z05XY0FHeG9STkZXcEJtUENienJZM2VTUDJpUFYwOHZwUDZ2aWFBSWpWd2VoSEhXTU05CmNzQitlYXJGRk9aRllROE9hOFVBS1RFVUNSVWhyelorS2ZmVkNRVjlrOW4rV0tueks2MlUvVXlveWZZV2hiZXIKeWJYdmliSlE2eXcxdElYZFJrL1lseVFEVmxFK080Qlk1WWV1cHdJREFRQUJBb0lCQUhIZlVNV1FrVThOcEtvaApONENSYjlyK0FncDRQOVBZcit1RTgxaWYxUW1DS0hscWZuakVOai9GWURZSE8rcGFYQWtmVzZaYmg3QjI3cHZBCmQxRHJRdlRmYWo3bHc4cCs3RHBJb0trNDFJMyt3dGQxVStPdW1XM05EcC9mNVJqbHEySmMzN3BpZllHRjk1OEEKQ2VwL2lBWlBFcW5Xc0xLcHMycDBqOEpGSEg1eXovYXd1bkRwRDhNb0d1NUM0cTdLSHJoeEpDYlc0bUw3OVVWQgpCbWwxTUpQZTM5a3AwSFVlRlRVVUhYdU02TmRKZ3lVRmtZTE9ES3IxaFF3dStFdzNzMUJlSmpLdkRpZm1xdGJyCnVKY1l1MEZjNHNWeEhKQXl2bTQ5elZqWFN4VGkvMUl1eHdveUp5KzhRbmY5bDdpTWkyK0JpRXJLKzNYUnlZOUwKTWcxNEQ4RUNnWUVBKzkxdm05V0ZhN1Jxek10VU5KQUZqRGwxcW83d0lDaHhJU2ZMdUVxRVgwUng3b3gyYlRyagp4VlJaNnRIdkd0S0NibHVZa1BhL00ySGhqT2JKeVRZYjBGcUx5bkZKVDFQekZPcVVJSFpVcUg4cEVWRXkyRExtCnFTeDFqM1pBd1cxUWQvaUtvakMyR2hEd0syYTJZZ2Fxb1JiL0tzQlN5N3JnL21oZ2IwTlpEck1DZ1lFQTNYdlIKcUROWDMvK0VpOWR1V3U1RGlNWVEzZTNnVnl5RGJuT1J2Y3BJZ2x2TDlVcFZiVVcvVWdpT1VEQTBYSzN3M0o0agovTHRsT0xvZnp2c1NsYTJjZWptRVkxYkFsL3hSVkpyWWJaWlRjYlhmUXlrMWsxUzEyREVlbElSd3dXc0RXbGQ5CmsrZmRqd09sWGVCUHJWeWVCK1BmRCsvb2pVc1d5Mk5EeUROckdqMENnWUVBNnkrYVFZei8ybFFOaXBDdlg2bkEKMUhEdlZFWEhLbkE1TzNtYXZNc3drbmtxWGxQaFhod29ocUkrbUl4U1Z0eU5tUm1FL0pDOGQvR0ZtWG9Fb1JRYQpvdE42UjU3RGt3VFVMd3JoS1BMMkdLVXRKeE9JZytQOENhc1BWOWhYbllkREpkUDdPSHArQVJjaC9aVWE1NnhMCjlzS3ZvUzhYNFUvdk93RWlVNk15N1FzQ2dZQWxsa2ZFVmNKSi8yRU5JbWhXQWkxdjNyMHFESjZQN0x2NVdKK1oKSitVYVNsM1lxTjdLaHBXclpFeFNpM3UzWnNXRGkwcnNMeGxFZ1VHNHJKOUF5NC9NcGtveldadWhyMjVWLzFsUApiNzJGaEtuNUNkdFB2NGFFeEFFK2p5TmJqNytuNjBVaWZxejVBbE5rRlJjd2dwRkhJWUxQZjVWbHRTS1BMYTlwCklHREN1UUtCZ1FDTGJJWEI3aHc2dGhHTitNVGNwK0Q1dXhacGYzcTB1eTc5Q3IxMktuM2ltZVI0c1Nmd2Q3RHgKSDdGeStMV2tQbHU2elNYamNIWFVRMDgwb1BoREVKYlZvN0I1WkJKWFhqeDRoWE1oVGdCaE5rY0tHL1dsdCtjeQpKSkdmTlY5dzIvVG5ZWW9pbFgxT1BTdk4rejNLN1AvRmMyUWVZS3c0c090aWsyOWhJTWJZTkE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
validRegex: /.{1,}/
- id: $$cap_LAGO_API_SIDEKIQ_WEB
label: API | Sidekiq Web
description: Activate the Sidekiq web UI, disabled by default.
- id: $$cap_LAGO_API_ENCRYPTION_PRIMARY_KEY
label: API | Encryption Primary Key
description: >-
Encryption primary key used to secure sensitive values stored in the database.
You should generate one using this command `cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1`.
defaultValue: $$cap_gen_random_hex(32)
validRegex: /.{1,}/
- id: $$cap_LAGO_API_ENCRYPTION_DETERMINISTIC_KEY
label: API | Encryption Deterministic Key
description: >-
Encryption deterministic key used to secure sensitive values stored in the database.
You should generate one using this command `cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1`.
defaultValue: $$cap_gen_random_hex(32)
validRegex: /.{1,}/
- id: $$cap_LAGO_API_ENCRYPTION_KEY_DERIVATION_SALT
label: API | Encryption Key Derivation Salt
description: >-
Encryption key salt used to secure sensitive values stored in the database.
You should generate one using this command `cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1`.
defaultValue: $$cap_gen_random_hex(32)
validRegex: /.{1,}/
- id: $$cap_LAGO_API_USE_AWS_S3
label: API | Use AWS S3
description: Whether to use AWS S3 for file storage.
defaultValue: 'false'
validRegex: /^(true|false)$/
- id: $$cap_LAGO_API_AWS_S3_ACCESS_KEY_ID
label: API | AWS S3 Access Key ID
description: AWS access key ID that has access to S3.
- id: $$cap_LAGO_API_AWS_S3_SECRET_ACCESS_KEY
label: API | AWS S3 Secret Access Key
description: AWS secret access key that has access to S3.
- id: $$cap_LAGO_API_AWS_S3_REGION
label: API | AWS S3 Region
description: AWS S3 region (e.g. `us-east-1`).
- id: $$cap_LAGO_API_AWS_S3_BUCKET
label: API | AWS S3 Bucket
description: AWS S3 bucket name.
- id: $$cap_LAGO_API_AWS_S3_ENDPOINT
label: API | AWS S3 Endpoint
description: >-
S3 compatible storage endpoint.
Should be set only if you are using another storage provider than AWS S3.
- id: $$cap_POSTGRES_DB
label: Database | Name
description: Name of the PostgreSQL.
defaultValue: lago
validRegex: /.{1,}/
- id: $$cap_POSTGRES_USER
label: Database | User Name
description: Name of the PostgreSQL user.
defaultValue: lago
validRegex: /.{1,}/
- id: $$cap_POSTGRES_PASSWORD
label: Database | User Password
description: Password of the PostgreSQL user.
defaultValue: $$cap_gen_random_hex(16)
validRegex: /.{1,}/
- id: $$cap_POSTGRES_PGDATA
label: Database | Data Directory
description: Path to the data directory within PostgreSQL.
defaultValue: /data/postgres
validRegex: /.{1,}/
|