This is just a note for myself, for complete documentation please read official docs
What you need to generate / get
- Domain & Subdomain
- DB Password
-TBD-
#-----------------------Backend Config------------------------------# | |
# Prisma Config | |
DATABASE_URL=postgresql://postgres:********@db:5432/hoppscotch | |
# Auth Tokens Config | |
JWT_SECRET="secret1233" | |
TOKEN_SALT_COMPLEXITY=10 | |
MAGIC_LINK_TOKEN_VALIDITY= 3 | |
REFRESH_TOKEN_VALIDITY="604800000" # Default validity is 7 days (604800000 ms) in ms | |
ACCESS_TOKEN_VALIDITY="86400000" # Default validity is 1 day (86400000 ms) in ms | |
SESSION_SECRET='add some secret here' | |
# Hoppscotch App Domain Config | |
REDIRECT_URL="https://app.hh.dengan.dev" | |
WHITELISTED_ORIGINS = "https://be.hh.dengan.dev,https://app.hh.dengan.dev,https://admin.hh.dengan.dev" | |
VITE_ALLOWED_AUTH_PROVIDERS = GITHUB | |
# Github Auth Config | |
GITHUB_CLIENT_ID="*****************" | |
GITHUB_CLIENT_SECRET="***************************" | |
GITHUB_CALLBACK_URL="https://be.hh.dengan.dev/v1/auth/github/callback" | |
GITHUB_SCOPE="user:email" | |
# Mailer config | |
MAILER_SMTP_URL="smtps://[email protected]:[email protected]" | |
MAILER_ADDRESS_FROM='"DEV Hoppscotch" <[email protected]>' | |
# Rate Limit Config | |
RATE_LIMIT_TTL=60 # In seconds | |
RATE_LIMIT_MAX=100 # Max requests per IP | |
#-----------------------Frontend Config------------------------------# | |
# Base URLs | |
VITE_BASE_URL=https://app.hh.dengan.dev | |
VITE_SHORTCODE_BASE_URL=https://app.hh.dengan.dev | |
VITE_ADMIN_URL=https://admin.dengan.dev | |
# Backend URLs | |
VITE_BACKEND_GQL_URL=https://be.hh.dengan.dev/graphql | |
VITE_BACKEND_WS_URL=wss://be.hh.dengan.dev/graphql | |
VITE_BACKEND_API_URL=https://be.hh.dengan.dev/v1 | |
COMPOSE_PROJECT_NAME=hh |
version: "3.7" | |
volumes: | |
db-data: | |
driver: local | |
services: | |
# This service runs the backend app in the port 3170 | |
backend: | |
image: hoppscotch/hoppscotch-backend | |
env_file: | |
- ./.env | |
restart: always | |
environment: | |
# Edit the below line to match your PostgresDB URL if you have an outside DB (make sure to update the .env file as well) | |
- DATABASE_URL=postgresql://postgres:********@db:5432/hoppscotch?connect_timeout=300 | |
- PORT=8080 | |
volumes: | |
# Uncomment the line below when modifying code. Only applicable when using the "dev" target. | |
# - ./packages/hoppscotch-backend/:/usr/src/app | |
- /usr/src/app/node_modules/ | |
depends_on: | |
db: | |
condition: service_healthy | |
ports: | |
- "3170:3170" | |
# The main hoppscotch app. This will be hosted at port 3000 | |
# NOTE: To do TLS or play around with how the app is hosted, you can look into the Caddyfile for | |
# the SH admin dashboard server at packages/hoppscotch-selfhost-web/Caddyfile | |
app: | |
image: hoppscotch/hoppscotch-frontend | |
env_file: | |
- ./.env | |
depends_on: | |
- hoppscotch-backend | |
ports: | |
- "3000:3000" | |
# The Self Host dashboard for managing the app. This will be hosted at port 3100 | |
# NOTE: To do TLS or play around with how the app is hosted, you can look into the Caddyfile for | |
# the SH admin dashboard server at packages/hoppscotch-sh-admin/Caddyfile | |
sh-admin: | |
image: hoppscotch/hoppscotch-admin | |
env_file: | |
- ./.env | |
depends_on: | |
- hoppscotch-backend | |
ports: | |
- "3100:3100" | |
# The preset DB service, you can delete/comment the below lines if | |
# you are using an external postgres instance | |
# This will be exposed at port 5432 | |
db: | |
image: postgres | |
user: postgres | |
volumes: | |
- db-data:/var/lib/postgresql/data | |
environment: | |
POSTGRES_USER: postgres | |
POSTGRES_PASSWORD: wonderful | |
POSTGRES_DB: hoppscotch | |
healthcheck: | |
test: | |
[ | |
"CMD-SHELL", | |
"sh -c 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}'" | |
] | |
interval: 5s | |
timeout: 5s | |
retries: 10 |
server { | |
server_name app.hh.dengan.dev; | |
client_max_body_size 100M; | |
include /usr/share/nginx/html/nginx-errors/nginx-errors.conf; | |
location / { | |
proxy_pass http://127.0.0.1:3000; | |
proxy_read_timeout 60; | |
proxy_connect_timeout 60; | |
proxy_redirect off; | |
# Allow the use of websockets | |
proxy_http_version 1.1; | |
proxy_set_header Upgrade $http_upgrade; | |
proxy_set_header Connection 'upgrade'; | |
proxy_set_header X-Real-IP $remote_addr; | |
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
proxy_set_header X-Forwarded-Proto https; | |
proxy_set_header Host $host; | |
proxy_cache_bypass $http_upgrade; | |
} | |
listen [::]:80; | |
listen 80; | |
} | |
server { | |
server_name admin.hh.dengan.dev; | |
client_max_body_size 100M; | |
include /usr/share/nginx/html/nginx-errors/nginx-errors.conf; | |
location / { | |
proxy_pass http://127.0.0.1:3100; | |
proxy_read_timeout 60; | |
proxy_connect_timeout 60; | |
proxy_redirect off; | |
# Allow the use of websockets | |
proxy_http_version 1.1; | |
proxy_set_header Upgrade $http_upgrade; | |
proxy_set_header Connection 'upgrade'; | |
proxy_set_header X-Real-IP $remote_addr; | |
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
proxy_set_header X-Forwarded-Proto https; | |
proxy_set_header Host $host; | |
proxy_cache_bypass $http_upgrade; | |
} | |
listen [::]:80; | |
listen 80; | |
} | |
server { | |
server_name be.hh.dengan.dev; | |
client_max_body_size 100M; | |
include /usr/share/nginx/html/nginx-errors/nginx-errors.conf; | |
location / { | |
proxy_pass http://127.0.0.1:3170; | |
proxy_read_timeout 60; | |
proxy_connect_timeout 60; | |
proxy_redirect off; | |
# Allow the use of websockets | |
proxy_http_version 1.1; | |
proxy_set_header Upgrade $http_upgrade; | |
proxy_set_header Connection 'upgrade'; | |
proxy_set_header X-Real-IP $remote_addr; | |
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
proxy_set_header X-Forwarded-Proto https; | |
proxy_set_header Host $host; | |
proxy_cache_bypass $http_upgrade; | |
} | |
listen [::]:80; | |
listen 80; | |
} |
This is just a note for myself, for complete documentation please read official docs
What you need to generate / get
-TBD-