当前位置: 首页 > news >正文

Docker安装hoppscotch

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的插件中。

打开拓展插件

配置跨域

查看是否配置成功

4.5 简单使用

相关文章:

  • 什么是MMOE?
  • 【统计显著性检验】
  • 考研单词笔记 2025.04.18
  • openEuler系统下源码编译安装Nginx实践教程
  • 关于GPU的涡轮散热与被动散热
  • Fastapi 日志处理
  • 医学教育视频会议系统私有化部署方案
  • rLLM - 使LLM的强化学习民主化
  • 《软件设计师》复习笔记(11.3)——需求获取、分析、定义、验证、管理
  • 每日一题---移动零
  • C# 点击导入,将需要的参数传递到弹窗的页面
  • CTF--MD5
  • sqlite3的API以及命令行
  • RESTful API 全面指南:设计、原理与实践
  • Unity-微信截图功能简单复刻-03绘制空心矩形
  • 【软件工程】用飞书画各种图(流程图,架构图···)
  • k8s教程3:Kubernetes应用的部署和管理
  • Unity-微信截图功能简单复刻-02屏幕采样
  • 12芯束装光纤不同包层线颜色之间的排列顺序
  • Vue3后代传祖先组件通讯方法
  • 两名中国公民在墨尔本被海浪卷走,我领馆发文提醒
  • 白兰花香飘京城,上海文化体验项目点亮中华民族共同体之美
  • 境外机构来华发行熊猫债累计超9500亿元
  • 谁在向张福生行贿?
  • 同程旅行斥资24.9亿元收购万达酒管:“看好中国酒店管理市场的增长潜力”
  • 黄仁勋:英伟达坚定不移服务中国市场,AI将在每个行业引发颠覆性变革