summaryrefslogtreecommitdiffhomepage
path: root/public/v4/apps/lago.yml
blob: 6f00f77e870c1e3321b9335482be0f03640c64c0 (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
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,}/