Install and build
Configuring the environment
Before you get started with the installation, you need to configure the environment variables.
Copy the contents of the .env.example
file found in the root directory of the cloned repository to .env
and add your values for the environment variables.
- Ensure that the environment values are not enclosed within quotes.
#-----------------------Backend Config------------------------------#
# Prisma Config
DATABASE_URL=postgresql://username:password@url:5432/dbname # or replace with your database URL
# Auth Tokens Config
JWT_SECRET=secretcode123
TOKEN_SALT_COMPLEXITY=10
MAGIC_LINK_TOKEN_VALIDITY=3
REFRESH_TOKEN_VALIDITY=604800000
ACCESS_TOKEN_VALIDITY=86400000
SESSION_SECRET=anothersecretcode123
# Hoppscotch App Domain Config
REDIRECT_URL=http://localhost:3000
WHITELISTED_ORIGINS=http://localhost:3170,http://localhost:3000,http://localhost:3100
VITE_ALLOWED_AUTH_PROVIDERS=GOOGLE,GITHUB,MICROSOFT,EMAIL
# Google Auth Config
GOOGLE_CLIENT_ID=*****
GOOGLE_CLIENT_SECRET=*****
GOOGLE_CALLBACK_URL=http://localhost:3170/v1/auth/google/callback
GOOGLE_SCOPE=email,profile
# Github Auth Config
GITHUB_CLIENT_ID=*****
GITHUB_CLIENT_SECRET=****
GITHUB_CALLBACK_URL=http://localhost:3170/v1/auth/github/callback
GITHUB_SCOPE=user:email
# Microsoft Auth Config
MICROSOFT_CLIENT_ID=*****
MICROSOFT_CLIENT_SECRET=*****
MICROSOFT_CALLBACK_URL=http://localhost:3170/v1/auth/microsoft/callback
MICROSOFT_SCOPE=user.read
MICROSOFT_TENANT=common
# Mailer config
MAILER_SMTP_URL=smtps://user@domain.com:pass@smtp.domain.com
MAILER_ADDRESS_FROM=From Name Here" <from@example.com>
# Rate Limit Config
RATE_LIMIT_TTL=60
RATE_LIMIT_MAX=100
#-----------------------Frontend Config------------------------------#
# Base URLs
VITE_BASE_URL=http://localhost:3000
VITE_SHORTCODE_BASE_URL=http://localhost:3000
VITE_ADMIN_URL=http://localhost:3100
# Backend URLs
VITE_BACKEND_GQL_URL=http://localhost:3170/graphql
VITE_BACKEND_WS_URL=wss://localhost:3170/graphql
VITE_BACKEND_API_URL=http://localhost:3170/v1
# Terms Of Service And Privacy Policy Links (Optional)
VITE_APP_TOS_LINK=https://docs.hoppscotch.io/terms
VITE_APP_PRIVACY_POLICY_LINK=https://docs.hoppscotch.io/privacy
Let's understand the major environment variables:
DATABASE_URL
: This is where you add your Postgres database URL, you can also use our default database shipped within the docker containerpostgresql://postgres:testpass@hoppscotch-db:5432/hoppscotch
TOKEN_SALT_COMPLEXITY
: Defines the complexity of the SALT that is used for hashing - a higher number implies a more complex saltMAGIC_LINK_TOKEN_VALIDITY
:Duration of the validity of the magic link being sent to sign in to Hoppscotch (in days)REFRESH_TOKEN_VALIDITY
: Validity of the refresh token for auth (in ms)ACCESS_TOKEN_VALIDITY
: Validity of the access token for auth (in ms)JWT_SECRET
,SESSION_SECRET
: Secret Keys for security purposesREDIRECT_URL
: This is a fallback URL to debug when the actual redirects failWHITELISTED_ORIGINS
: URLs of Hoppscotch backend, admin dashboard, and the frontend appVITE_ALLOWED_AUTH_PROVIDERS
: Allows you to specify which auth providers you want to enableMAILER_SMTP_URL
: The SMTP URL for email deliveryMAILER_ADDRESS_FROM
: The email address that you would be usingRATE_LIMIT_TTL
: The time it takes to refresh the maximum number of requests being receivedRATE_LIMIT_MAX
: The maximum number of requests that Hoppscotch can handle underRATE_LIMIT_TTL
VITE_BASE_URL
: This is the URL where your deployment will be accessible fromVITE_SHORTCODE_BASE_URL
: A URL to generate shortcodes for sharing, can be the same asVITE_BASE_URL
VITE_BACKEND_GQL_URL
: The URL for GraphQL within the instanceVITE_BACKEND_WS_URL
: The URL for WebSockets within the instanceVITE_BACKEND_API_URL
: The URL for REST APIs within the instanceVITE_APP_TOS_LINK
andVITE_APP_PRIVACY_POLICY_LINK
are optional and are used to configure the links to the Terms & Conditions and Privacy Policy
Third-party auth configs have to be obtained from the respective providers. You can choose and configure the auth providers by following the configuring OAuth guide.
Docker
Once the environment variables are configured, you may proceed to the next step of setting up the Hoppscotch instance. Currently, there are two ways to set up Hoppscotch:
- Using individual containers for the services
- Using the AIO container
- Before proceeding further, ensure that you have a running instance of Postgres.
Using individual containers for the services
RecommendedTo self-host Hoppscotch Community Edition, you will need the following services running via Docker:
- Hoppscotch frontend
- Hoppscotch backend
- Hoppscotch admin dashboard
Pull the containers from DockerHub with the following command:
docker pull hoppscotch/hoppscotch-frontend
docker pull hoppscotch/hoppscotch-backend
docker pull hoppscotch/hoppscotch-admin
After pulling the containers, start Hoppscotch by running all three services:
docker run -p 3000:3000 --env-file .env hoppscotch-frontend
docker run -p 3170:3170 --env-file .env hoppscotch-backend
docker run -p 3100:3100 --env-file .env hoppscotch-admin
- Ensure that the environment variables are configured in the
.env
file.
Open admin dashboard or PORT 3100
in the browser to setup and access the Hoppscotch instance.
Using the AIO container
The All-In-One (AIO) container is a single container that provides all the services required to run Hoppscotch.
Pull the container from DockerHub with the following command:
docker pull hoppscotch/hoppscotch
After pulling the container, start Hoppscotch by running the container:
docker run -p 3000:3000 -p 3100:3100 -p 3170:3170 --env-file .env hoppscotch/hoppscotch
- Ensure that the environment variables are configured in the
.env
file.
Open admin dashboard or PORT 3100
in the browser to setup and access the Hoppscotch instance.
Migrations
Once the instance of Hoppscotch is up, you need to run migrations on the database to ensure that it has the relevant tables. Depending on how Hoppscotch was set up, the method to run the migrations changes.
Using individual containers for the services
Run the following command to copy the ID of the backend container:
docker ps
Using the AIO container
Run the following command to copy the ID of the AIO container:
docker ps
Running migrations
Once the respective container ID is copied, execute the following command to open an interactive shell within the container to execute the migration command:
docker exec -it <container_id> /bin/sh
Once inside the container, run the migration using:
pnpx prisma migrate deploy