diff --git a/templates/compose/hoppscotch.yaml b/templates/compose/hoppscotch.yaml new file mode 100644 index 000000000..0f5cfdd9c --- /dev/null +++ b/templates/compose/hoppscotch.yaml @@ -0,0 +1,88 @@ +services: + backend: + image: 'hoppscotch/hoppscotch:latest' + environment: + - SERVICE_FQDN_HOPPSCOTCH_80 + - SERVICE_URL_HOPPSCOTCH + - 'VITE_ALLOWED_AUTH_PROVIDERS=${VITE_ALLOWED_AUTH_PROVIDERS:-GOOGLE,GITHUB,MICROSOFT,EMAIL}' + - 'DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@hoppscotch-db:5432/${POSTGRES_DB}' + - 'JWT_SECRET=${SERVICE_PASSWORD_JWT}' + - 'TOKEN_SALT_COMPLEXITY=${TOKEN_SALT_COMPLEXITY:-10}' + - 'MAGIC_LINK_TOKEN_VALIDITY=${MAGIC_LINK_TOKEN_VALIDITY:-3}' + - 'REFRESH_TOKEN_VALIDITY=${REFRESH_TOKEN_VALIDITY:-604800000}' + - 'ACCESS_TOKEN_VALIDITY=${ACCESS_TOKEN_VALIDITY:-86400000}' + - 'SESSION_SECRET=${SERVICE_PASSWORD_SECRET}' + - 'ALLOW_SECURE_COOKIES=${ALLOW_SECURE_COOKIES:-true}' + - 'DATA_ENCRYPTION_KEY=${DATA_ENCRYPTION_KEY:-mustbeexactry32characterlikethat}' + - 'REDIRECT_URL=${SERVICE_FQDN_HOPPSCOTCH}' + - 'WHITELISTED_ORIGINS=${SERVICE_FQDN_HOPPSCOTCH}/backend,${SERVICE_FQDN_HOPPSCOTCH},${SERVICE_FQDN_HOPPSCOTCH}/admin' + - 'GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID:-*****}' + - 'GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET:-*****}' + - 'GOOGLE_CALLBACK_URL=${SERVICE_FQDN_HOPPSCOTCH}/backend/v1/auth/google/callback' + - 'GOOGLE_SCOPE=email,profile' + - 'GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID:-*****}' + - 'GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET:-*****}' + - 'GITHUB_CALLBACK_URL=${SERVICE_FQDN_HOPPSCOTCH}/backend/v1/auth/github/callback' + - 'GITHUB_SCOPE=user:email' + - 'MICROSOFT_CLIENT_ID=${MICROSOFT_CLIENT_ID:-*****}' + - 'MICROSOFT_CLIENT_SECRET=${MICROSOFT_CLIENT_SECRET:-*****}' + - 'MICROSOFT_CALLBACK_URL=${SERVICE_FQDN_HOPPSCOTCH}/backend/v1/auth/microsoft/callback' + - 'MICROSOFT_SCOPE=user.read' + - 'MICROSOFT_TENANT=common' + - 'MAILER_SMTP_ENABLE=${MAILER_SMTP_ENABLE:-false}' + - 'MAILER_USE_CUSTOM_CONFIGS=${MAILER_USE_CUSTOM_CONFIGS:-true}' + - 'MAILER_ADDRESS_FROM=${MAILER_ADDRESS_FROM:-samirqlvdev@example.com}' + - 'MAILER_SMTP_URL=${MAILER_SMTP_URL:-smtps_url}' + - 'MAILER_SMTP_HOST=${MAILER_SMTP_HOST:-smtp.example.com}' + - 'MAILER_SMTP_PORT=${MAILER_SMTP_PORT:-465}' + - 'MAILER_SMTP_SECURE=${MAILER_SMTP_SECURE:-true}' + - 'MAILER_SMTP_USER=${MAILER_SMTP_USER:-user@example.com}' + - 'MAILER_SMTP_PASSWORD=${MAILER_SMTP_PASSWORD:-mailpass}' + - 'MAILER_TLS_REJECT_UNAUTHORIZED=${MAILER_TLS_REJECT_UNAUTHORIZED:-false}' + - 'RATE_LIMIT_TTL=${RATE_LIMIT_TTL:-60}' + - 'RATE_LIMIT_MAX=${RATE_LIMIT_MAX:-100}' + - 'VITE_BASE_URL=${SERVICE_FQDN_HOPPSCOTCH}' + - 'VITE_SHORTCODE_BASE_URL=${SERVICE_FQDN_HOPPSCOTCH}' + - 'VITE_ADMIN_URL=${SERVICE_FQDN_HOPPSCOTCH}/admin' + - 'VITE_BACKEND_GQL_URL=${SERVICE_FQDN_HOPPSCOTCH}/backend/graphql' + - 'VITE_BACKEND_WS_URL=wss://${SERVICE_URL_HOPPSCOTCH}/backend/graphql' + - 'VITE_BACKEND_API_URL=${SERVICE_FQDN_HOPPSCOTCH}/backend/v1' + - 'VITE_APP_TOS_LINK=https://docs.hoppscotch.io/support/terms' + - 'VITE_APP_PRIVACY_POLICY_LINK=https://docs.hoppscotch.io/support/privacy' + - ENABLE_SUBPATH_BASED_ACCESS=true + depends_on: + db-migration: + condition: service_completed_successfully + healthcheck: + test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:80/"] + interval: 5s + timeout: 20s + retries: 10 + hoppscotch-db: + image: 'postgres:latest' + volumes: + - 'pg_data:/var/lib/postgresql/data' + environment: + - 'POSTGRES_USER=${SERVICE_USER_POSTGRES}' + - 'POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}' + - 'POSTGRES_DB=${POSTGRES_DB:-hoppscotch}' + healthcheck: + test: + - CMD-SHELL + - 'pg_isready -h localhost -U $${POSTGRES_USER} -d $${POSTGRES_DB}' + interval: 5s + timeout: 10s + retries: 10 + db-migration: + exclude_from_hc: true + image: 'hoppscotch/hoppscotch:latest' + depends_on: + hoppscotch-db: + condition: service_healthy + command: 'pnpx prisma migrate deploy' + restart: on-failure + environment: + - 'POSTGRES_USER=${SERVICE_USER_POSTGRES}' + - 'POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}' + - 'POSTGRES_DB=${POSTGRES_DB:-hoppscotch}' + - 'DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@hoppscotch-db:5432/${POSTGRES_DB:-hoppscotch}'