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