From bb5f0bfc1dc34f7036a5e8a19b174f06ff6039eb Mon Sep 17 00:00:00 2001 From: Ronald Loyko <108372764+ronaldloyko@users.noreply.github.com> Date: Sat, 8 Oct 2022 03:25:29 +0300 Subject: [PATCH] feat: add lago (#753) --- public/v4/apps/lago.yml | 271 +++++++++++++++++++++++++++++++++++++++ public/v4/logos/lago.png | Bin 0 -> 17738 bytes 2 files changed, 271 insertions(+) create mode 100644 public/v4/apps/lago.yml create mode 100644 public/v4/logos/lago.png 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 0000000000000000000000000000000000000000..c9e3ccc37fb6d9a99878412249e2db162d5bec30 GIT binary patch literal 17738 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 AA^-pY literal 0 HcmV?d00001