diff --git a/public/svgs/hoppscotch.png b/public/svgs/hoppscotch.png new file mode 100644 index 000000000..84c728437 Binary files /dev/null and b/public/svgs/hoppscotch.png differ diff --git a/templates/compose/hoppscotch.yaml b/templates/compose/hoppscotch.yaml index 2b27fcefd..9654b1930 100644 --- a/templates/compose/hoppscotch.yaml +++ b/templates/compose/hoppscotch.yaml @@ -1,54 +1,59 @@ +# 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' + 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:-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' + - 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: @@ -58,14 +63,15 @@ services: interval: 5s timeout: 20s retries: 10 + hoppscotch-db: - image: 'postgres:latest' + image: postgres:latest volumes: - - 'pg_data:/var/lib/postgresql/data' + - postgres_data:/var/lib/postgresql/data environment: - - 'POSTGRES_USER=${SERVICE_USER_POSTGRES}' - - 'POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}' - - 'POSTGRES_DB=${POSTGRES_DB:-hoppscotch}' + - POSTGRES_USER=${SERVICE_USER_POSTGRES} + - POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES} + - POSTGRES_DB=${POSTGRES_DB:-hoppscotch} healthcheck: test: - CMD-SHELL @@ -73,16 +79,17 @@ services: interval: 5s timeout: 10s retries: 10 + db-migration: exclude_from_hc: true - image: 'hoppscotch/hoppscotch:latest' + 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}' + - 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}