feat: add lago (#753)

This commit is contained in:
Ronald Loyko 2022-10-08 03:25:29 +03:00 committed by GitHub
parent 0d4b495944
commit bb5f0bfc1d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 271 additions and 0 deletions

271
public/v4/apps/lago.yml Normal file
View File

@ -0,0 +1,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,}/

BIN
public/v4/logos/lago.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB