From 15051a1bc2f4ecc009f8bd69c26d072fd75f2250 Mon Sep 17 00:00:00 2001 From: sashagoncharov19 <0976053529@ukr.net> Date: Sun, 27 Oct 2024 19:48:07 +0000 Subject: [PATCH] feat: infisical template --- apps/dokploy/public/templates/infisical.jpg | Bin 0 -> 3469 bytes .../templates/infisical/docker-compose.yml | 87 ++++++++++++++++ apps/dokploy/templates/infisical/index.ts | 93 ++++++++++++++++++ apps/dokploy/templates/templates.ts | 15 +++ 4 files changed, 195 insertions(+) create mode 100644 apps/dokploy/public/templates/infisical.jpg create mode 100644 apps/dokploy/templates/infisical/docker-compose.yml create mode 100644 apps/dokploy/templates/infisical/index.ts diff --git a/apps/dokploy/public/templates/infisical.jpg b/apps/dokploy/public/templates/infisical.jpg new file mode 100644 index 0000000000000000000000000000000000000000..404f5811924b4544af0b9674402fe75d4e0f1ea6 GIT binary patch literal 3469 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 literal 0 HcmV?d00001 diff --git a/apps/dokploy/templates/infisical/docker-compose.yml b/apps/dokploy/templates/infisical/docker-compose.yml new file mode 100644 index 000000000..3baca9265 --- /dev/null +++ b/apps/dokploy/templates/infisical/docker-compose.yml @@ -0,0 +1,87 @@ +services: + db-migration: + depends_on: + db: + condition: service_healthy + image: infisical/infisical:v0.90.1-postgres + environment: + - NODE_ENV=production + - ENCRYPTION_KEY + - AUTH_SECRET + - SITE_URL + - DB_CONNECTION_URI=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB} + - REDIS_URL=redis://redis:6379 + - SMTP_HOST + - SMTP_PORT + - SMTP_FROM_NAME + - SMTP_USERNAME + - SMTP_PASSWORD + - SMTP_SECURE=true + command: npm run migration:latest + pull_policy: always + networks: + - dokploy-network + + backend: + restart: unless-stopped + depends_on: + db: + condition: service_healthy + redis: + condition: service_started + db-migration: + condition: service_completed_successfully + image: infisical/infisical:v0.90.1-postgres + pull_policy: always + environment: + - NODE_ENV=production + - ENCRYPTION_KEY + - AUTH_SECRET + - SITE_URL + - DB_CONNECTION_URI=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB} + - REDIS_URL=redis://redis:6379 + - SMTP_HOST + - SMTP_PORT + - SMTP_FROM_NAME + - SMTP_USERNAME + - SMTP_PASSWORD + - SMTP_SECURE=true + networks: + - dokploy-network + + redis: + image: redis:7.4.1 + env_file: .env + restart: always + environment: + - ALLOW_EMPTY_PASSWORD=yes + networks: + - dokploy-network + volumes: + - redis_infisical_data:/data + + db: + image: postgres:14-alpine + restart: always + environment: + - POSTGRES_PASSWORD + - POSTGRES_USER + - POSTGRES_DB + volumes: + - pg_infisical_data:/var/lib/postgresql/data + networks: + - dokploy-network + healthcheck: + test: "pg_isready --username=${POSTGRES_USER} && psql --username=${POSTGRES_USER} --list" + interval: 5s + timeout: 10s + retries: 10 + +volumes: + pg_infisical_data: + redis_infisical_data: + +networks: + dokploy-network: + external: true + diff --git a/apps/dokploy/templates/infisical/index.ts b/apps/dokploy/templates/infisical/index.ts new file mode 100644 index 000000000..6d2127740 --- /dev/null +++ b/apps/dokploy/templates/infisical/index.ts @@ -0,0 +1,93 @@ +import { + type DomainSchema, + type Schema, + type Template, + generateRandomDomain, +} from "../utils"; + +export function generate(schema: Schema): Template { + const domains: DomainSchema[] = [ + { + host: generateRandomDomain(schema), + port: 8080, + serviceName: "backend", + }, + ]; + + const envs = [ + "# THIS IS A SAMPLE ENCRYPTION KEY AND SHOULD NEVER BE USED FOR PRODUCTION", + "ENCRYPTION_KEY=6c1fe4e407b8911c104518103505b218", + "", + "# THIS IS A SAMPLE AUTH_SECRET KEY AND SHOULD NEVER BE USED FOR PRODUCTION", + "AUTH_SECRET=5lrMXKKWCVocS/uerPsl7V+TX/aaUaI7iDkgl3tSmLE=", + "# Postgres creds", + "POSTGRES_PASSWORD=infisical", + "POSTGRES_USER=infisical", + "POSTGRES_DB=infisical", + "", + "# Website URL", + "# Required", + "SITE_URL=http://localhost:8080", + "", + "# Mail/SMTP", + "SMTP_HOST=", + "SMTP_PORT=", + "SMTP_NAME=", + "SMTP_USERNAME=", + "SMTP_PASSWORD=", + "", + "# Integration", + "# Optional only if integration is used", + "CLIENT_ID_HEROKU=", + "CLIENT_ID_VERCEL=", + "CLIENT_ID_NETLIFY=", + "CLIENT_ID_GITHUB=", + "CLIENT_ID_GITHUB_APP=", + "CLIENT_SLUG_GITHUB_APP=", + "CLIENT_ID_GITLAB=", + "CLIENT_ID_BITBUCKET=", + "CLIENT_SECRET_HEROKU=", + "CLIENT_SECRET_VERCEL=", + "CLIENT_SECRET_NETLIFY=", + "CLIENT_SECRET_GITHUB=", + "CLIENT_SECRET_GITHUB_APP=", + "CLIENT_SECRET_GITLAB=", + "CLIENT_SECRET_BITBUCKET=", + "CLIENT_SLUG_VERCEL=", + "", + "CLIENT_PRIVATE_KEY_GITHUB_APP=", + "CLIENT_APP_ID_GITHUB_APP=", + "", + "# Sentry (optional) for monitoring errors", + "SENTRY_DSN=", + "", + "# Infisical Cloud-specific configs", + "# Ignore - Not applicable for self-hosted version", + "POSTHOG_HOST=", + "POSTHOG_PROJECT_API_KEY=", + "", + "# SSO-specific variables", + "CLIENT_ID_GOOGLE_LOGIN=", + "CLIENT_SECRET_GOOGLE_LOGIN=", + "", + "CLIENT_ID_GITHUB_LOGIN=", + "CLIENT_SECRET_GITHUB_LOGIN=", + "", + "CLIENT_ID_GITLAB_LOGIN=", + "CLIENT_SECRET_GITLAB_LOGIN=", + "", + "CAPTCHA_SECRET=", + "", + "NEXT_PUBLIC_CAPTCHA_SITE_KEY=", + "", + "PLAIN_API_KEY=", + "PLAIN_WISH_LABEL_IDS=", + "", + "SSL_CLIENT_CERTIFICATE_HEADER_KEY=", + ]; + + return { + domains, + envs, + }; +} diff --git a/apps/dokploy/templates/templates.ts b/apps/dokploy/templates/templates.ts index 62e8cbd74..2ebb5312f 100644 --- a/apps/dokploy/templates/templates.ts +++ b/apps/dokploy/templates/templates.ts @@ -572,4 +572,19 @@ export const templates: TemplateData[] = [ tags: ["self-hosted", "open-source", "storage", "database"], load: () => import("./influxdb/index").then((m) => m.generate), }, + { + id: "infisical", + name: "Infisical", + version: "0.90.1", + description: + "All-in-one platform to securely manage application configuration and secrets across your team and infrastructure.", + logo: "infisical.jpg", + links: { + github: "https://github.com/Infisical/infisical", + website: "https://infisical.com/", + docs: "https://infisical.com/docs/documentation/getting-started/introduction", + }, + tags: ["self-hosted", "open-source"], + load: () => import("./infisical/index").then((m) => m.generate), + }, ];