diff --git a/public/v4/apps/lago.yml b/public/v4/apps/lago.yml new file mode 100644 index 0000000..6f00f77 --- /dev/null +++ b/public/v4/apps/lago.yml @@ -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,}/ diff --git a/public/v4/logos/lago.png b/public/v4/logos/lago.png new file mode 100644 index 0000000..c9e3ccc Binary files /dev/null and b/public/v4/logos/lago.png differ