Docker安裝hoppscotch
1 簡介
1.1 Hoppscotch?系統
?Hoppscotch?是一個輕量、高效的[API開發生態系統,開源于2020年,原名Postwoman,后更名為Hoppscotch。它基于Node.js構建,支持多種HTTP請求方法,包括GET、POST、PUT、DELETE等,并且支持WebSocket、Socket.IO、MQTT和GraphQL等多種通信協議?。
本文借助Hoppscotch和mailcatcher實現局域網登錄。本文使用最簡單的mailcatcher的郵件服務,也可以使用poste.io替換mailcatcher,只需要更改配置文件中的MAILER_SMTP_PORT端口。
Hoppscotch參考網址
# 官網地址
https://hoppscotch.com/# 開發文檔地址
https://docs.hoppscotch.io/# 在線地址
https://hoppscotch.io/# Github地址
https://github.com/hoppscotch/hoppscotch# Docker安裝方法
https://docs.hoppscotch.io/documentation/self-host/community-edition/install-and-build# 拓展插件,也可以在“插件小屋Chrome”上搜索“Hoppscotch”,下載“Hoppscotch Browser Extension”
https://github.com/hoppscotch/hoppscotch-extension
1.2 MailCatcher郵件
借助MailCatcher完成登錄的郵箱驗證。MailCatcher是一個Email服務系統,MailCatcher也是一個超級簡單的SMTP服務器,它捕獲發送到它的任何消息,并在web界面中顯示。
mailcatcher參考網址
# 官網
https://mailcatcher.me/# Github地址
https://github.com/sj26/mailcatcher
1.3 PostgreSQL數據庫
Hoppscotch?是使用PostgreSQL作為數據庫存儲工具,PostgreSQL是開源的關系型數據庫,可使用Docker安裝。
# 官網地址
https://www.postgresql.org/
1.4 創建基礎環境
我的虛擬機地址是
192.168.108.146
創建網橋
docker network create --driver bridge hoppnet
創建數據目錄
mkdir -p /home/hoppscotch
2 安裝PostgreSQL
數據庫的數據,會在”/home/hoppscotch/postgresql“創建數據。可使用DBeaver查看數據。
用戶名:postgres,密碼:testpass,數據庫:hoppscotch
docker run -itd \
--name hoppscotch-db \
--network hoppnet \
--restart always \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=testpass \
-e POSTGRES_DB=hoppscotch \
-p 5432:5432 \
-v /home/hoppscotch/postgresql/data:/var/lib/postgresql/data \
postgres:15.12
Hoppscotch系統啟動成功后,會看到的數據結構如下,其中InfraConfig表中會有配置信息。
3 安裝MailCatcher
使用docker安裝即可,1080是可視化頁面端口,1025是SMTP協議端口。
docker run -itd \
--name milcatcher \
--restart always \
-p 1080:1080 \
-p 1025:1025 \
sj26/mailcatcher:v0.10.0
訪問地址
http://192.168.108.146:1080
4 安裝Hoppscotch?
docker安裝hopposcotch有兩種方法,一種是將Hoppscotch frontend、Hoppscotch backend和Hoppscotch admin dashboard分開的方法,另外一種合并到一起。本文用將多模塊集成到一起的容器hoppscotch/hoppscotch。
4.1 創建配置文件
在github上找到名字叫做“.env.example”,修改為"hoppscotch.env",創建文件配置文件,我的配置文件放在了Home目錄下。
# 在/home/hoppscotch下創建配置文件
cd /home/hoppscotch# 創建文件
touch hoppscotch.env
hoppscotch.env
#-----------------------Backend Config------------------------------#
# Prisma Config
DATABASE_URL=postgresql://postgres:testpass@hoppscotch-db:5432/hoppscotch# Auth Tokens Config
JWT_SECRET=gzEGPNCpkD
TOKEN_SALT_COMPLEXITY=10
MAGIC_LINK_TOKEN_VALIDITY=3
# Default validity is 7 days (604800000 ms) in ms
REFRESH_TOKEN_VALIDITY=604800000
# Default validity is 1 day (86400000 ms) in ms
ACCESS_TOKEN_VALIDITY=86400000
SESSION_SECRET=7crC4nNRTk
# Reccomended to be true, set to false if you are using http
# Note: Some auth providers may not support http requests
ALLOW_SECURE_COOKIES=false# Sensitive Data Encryption Key while storing in Database (32 character)
DATA_ENCRYPTION_KEY=623088d70f314102a266c6cc6fb1c0e7# Hoppscotch App Domain Config
REDIRECT_URL=http://192.168.108.146:3000
# Whitelisted origins for the Hoppscotch App.
# This list controls which origins can interact with the app through cross-origin comms.
# - localhost ports (3170, 3000, 3100): app, backend, development servers and services
# - app://localhost_3200: Bundle server origin identifier
# NOTE: `3200` here refers to the bundle server (port 3200) that provides the bundles,
# NOT where the app runs. The app itself uses the `app://` protocol with dynamic
# bundle names like `app://{bundle-name}/`
WHITELISTED_ORIGINS=http://192.168.108.146:3170,http://192.168.108.146:3000,http://192.168.108.146:3100,app://localhost_3200,app://hoppscotch
VITE_ALLOWED_AUTH_PROVIDERS=EMAIL# Mailer config
MAILER_SMTP_ENABLE=true
MAILER_USE_CUSTOM_CONFIGS=true
MAILER_ADDRESS_FROM=192.168.108.146MAILER_SMTP_URL="smtps://user@domain.com:pass@smtp.domain.com" # used if custom mailer configs is false# The following are used if custom mailer configs is true
MAILER_SMTP_HOST=192.168.108.146
MAILER_SMTP_PORT=1025
MAILER_SMTP_SECURE=false
MAILER_SMTP_USER=admin@example.com
MAILER_SMTP_PASSWORD=123456
MAILER_TLS_REJECT_UNAUTHORIZED=true# Rate Limit Config
RATE_LIMIT_TTL=60 # In seconds
RATE_LIMIT_MAX=100 # Max requests per IP#-----------------------Frontend Config------------------------------## Base URLs
VITE_BASE_URL=http://192.168.108.146:3000
VITE_SHORTCODE_BASE_URL=http://192.168.108.146:3000
VITE_ADMIN_URL=http://192.168.108.146:3100# Backend URLs
VITE_BACKEND_GQL_URL=http://192.168.108.146:3170/graphql
VITE_BACKEND_WS_URL=ws://192.168.108.146:3170/graphql
VITE_BACKEND_API_URL=http://192.168.108.146:3170/v1# Terms Of Service And Privacy Policy Links (Optional)
VITE_APP_TOS_LINK=https://docs.hoppscotch.io/support/terms
VITE_APP_PRIVACY_POLICY_LINK=https://docs.hoppscotch.io/support/privacy# Set to `true` for subpath based access
ENABLE_SUBPATH_BASED_ACCESS=false
hoppscotch.env配置文件說明
#-----------------------Backend Config------------------------------#
# 配置數據庫
DATABASE_URL=postgresql://postgres:testpass@hoppscotch-db:5432/hoppscotch# Token配置JWT密鑰,自己修改修改即可
JWT_SECRET=gzEGPNCpkD
TOKEN_SALT_COMPLEXITY=10
MAGIC_LINK_TOKEN_VALIDITY=3
# 刷新token的默認有效時間7天 (604800000 ms) in ms
REFRESH_TOKEN_VALIDITY=604800000
# token的默認有效時間1天 (86400000 ms) in ms
ACCESS_TOKEN_VALIDITY=86400000
# Session密鑰,自己修改修改即可
SESSION_SECRET=7crC4nNRTk
# 默認true即可
ALLOW_SECURE_COOKIES=true# 加密數據庫的32位字符串
# 在linux中使用下面命令即可生成
# uuidgen | tr -d '-'
DATA_ENCRYPTION_KEY=623088d70f314102a266c6cc6fb1c0e7# 配置Hoppscotch請求接口的地址
REDIRECT_URL=http://192.168.108.146:3000
# 設置請求白名單
WHITELISTED_ORIGINS=http://192.168.108.146:3170,http://192.168.108.146:3000,http://192.168.108.146:3100,app://localhost_3200,app://hoppscotch# 設置登錄使用的第三方登錄,如果沒有可以刪除
VITE_ALLOWED_AUTH_PROVIDERS=GOOGLE,GITHUB,MICROSOFT,EMAIL# Google Auth Config
GOOGLE_CLIENT_ID="************************************************"
GOOGLE_CLIENT_SECRET="************************************************"
GOOGLE_CALLBACK_URL="http://192.168.108.146:3170/v1/auth/google/callback"
GOOGLE_SCOPE="email,profile"# Github Auth Config
GITHUB_CLIENT_ID="************************************************"
GITHUB_CLIENT_SECRET="************************************************"
GITHUB_CALLBACK_URL="http://192.168.108.146: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_SMTP_ENABLE="true"
# 如果配置自定義郵箱,此處必須是true
MAILER_USE_CUSTOM_CONFIGS=false
# 郵箱的IP地址
MAILER_ADDRESS_FROM='"From Name Here" <from@example.com>'MAILER_SMTP_URL="smtps://user@domain.com:pass@smtp.domain.com"# 如果 MAILER_USE_CUSTOM_CONFIGS是true,可根據情況配置郵箱信息
MAILER_SMTP_HOST="smtp.domain.com"
# SMTP協議的端口,本文對應MailCatcher系統的端口
MAILER_SMTP_PORT=1025
# 是否啟用安全協議,可以不啟動,設置false
MAILER_SMTP_SECURE=true
# SMTP用戶
MAILER_SMTP_USER=user@domain.com
# SMTP用戶密碼
MAILER_SMTP_PASSWORD=pass
# 授權
MAILER_TLS_REJECT_UNAUTHORIZED=true# 默認即可,端口速率限制(秒)
RATE_LIMIT_TTL=60
# 默認即可,每個IP最低請求次數
RATE_LIMIT_MAX=100#-----------------------Frontend Config------------------------------## Base URLs
VITE_BASE_URL=http://192.168.108.146:3000
VITE_SHORTCODE_BASE_URL=http://192.168.108.146:3000
VITE_ADMIN_URL=http://192.168.108.146:3100# Backend URLs
VITE_BACKEND_GQL_URL=http://192.168.108.146:3170/graphql
VITE_BACKEND_WS_URL=ws://192.168.108.146:3170/graphql
VITE_BACKEND_API_URL=http://192.168.108.146:3170/v1# Terms Of Service And Privacy Policy Links (Optional)
VITE_APP_TOS_LINK=https://docs.hoppscotch.io/support/terms
VITE_APP_PRIVACY_POLICY_LINK=https://docs.hoppscotch.io/support/privacy# 設置按照路由方式還是端口方式訪問頁面,本文使用的是端口方式,因此設置false
ENABLE_SUBPATH_BASED_ACCESS=false
4.2 安裝Hoppscotch
使用docker創建Hoppscotch,其中env-file對應配置文件。
3000對應用戶可視化頁面;
3100對應管理員的可視化頁面;
3170對應后端接口。
docker run -itd \
--name hoppscotch-aio \
--network hoppnet \
--restart always \
-p 3000:3000 \
-p 3100:3100 \
-p 3170:3170 \
--env-file /home/hoppscotch/hoppscotch.env \
hoppscotch/hoppscotch:2025.3.2 /bin/sh -c "pnpm exec prisma migrate deploy && node /usr/src/app/aio_run.mjs"
備注:
在Dockerfile中的ENTRYPOINT和CMD兩個參數被用來設置容器啟動時執行的命令。CMD為ENTRYPOINT提供默認的參數,ENTRYPOINT 設置的命令不可被覆蓋。Docker創建容器時可使用–entrypoint參數指定ENTRYPOINT后的命令。-c選項是允許通過命令行傳遞一個命令字符串給sh(或bash),然后sh會解釋并執行這個字符串中的命令。
4.3 使用郵箱登錄
用戶端
http://192.168.108.146:3000/
郵箱登錄
配置文件中只保留了郵件,所以此處只能看到郵件。
向MailCatcher中發送郵件,注意:由于MailCatcher沒有賬號權限的控制,所以輸入任何符合郵箱格式的地址,MailCatcher都可以接收到。
發送成功
在MailCatcher中訪問地址,查看郵件。點擊上面的郵箱,可以在下面看到詳細的郵件信息。
點擊郵箱中綠色的“Sign in to Hoppscotch”按鈕或者復制下面的地址,會訪問“http://192.168.108.146:3000/enter?token=XXXX”進行驗證,驗證完成后重定向到“http://192.168.108.146:3000”。
用戶的信息
4.4 解決跨域問題
使用Hoppscotch Browser Extension插件解決跨域問題,可以在“插件小屋Chrome”上搜索“Hoppscotch”,下載“Hoppscotch Browser Extension”,拖拽到Chrome的插件中。
打開拓展插件
配置跨域
查看是否配置成功