# documentation: https://docs.hoppscotch.io # slogan: The Open Source API Development Platform # tags: api, development, platform # logo: svgs/hoppscotch.png # port: 80 services: backend: image: hoppscotch/hoppscotch:latest environment: - SERVICE_FQDN_HOPPSCOTCH_80 - 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:-user@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: - postgres_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}