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 简单使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/77289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1.Axum 与 Tokio:异步编程的完美结合

摘要 深入解析 Axum 核心架构与 Tokio 异步运行时的集成&#xff0c;掌握关键原理与实践技巧。 一、引言 在当今的软件开发领域&#xff0c;高并发和高性能是衡量一个系统优劣的重要指标。对于 Web 服务器而言&#xff0c;能够高效地处理大量并发请求是至关重要的。Rust 语言…

CSS伪元素

伪元素 伪元素 用于在元素的内容前后或特定部分插入虚拟元素&#xff0c;并为其添加样式&#xff0c;无需修改 HTML 结构。 语法&#xff1a;使用双冒号 ::&#xff08;现代规范&#xff09; 以下是一些常见的CSS伪元素的示例&#xff1a; 1.::before &#xff1a; 在元素内…

easyexcel使用模板填充excel坑点总结

1.单层map设置值是{属性}&#xff0c;那使用两层map进行设置值&#xff0c;是不是可以使用{属性.属性}&#xff0c;以为取出map里字段只用{属性}就可以设置值&#xff0c;那再加个.就可以从里边map取出对应属性&#xff0c;没有两层map写法 填充得到的文件打开报错 was empty (…

在Ubuntu服务器上部署xinference

一、拉取镜像 docker pull xprobe/xinference:latest二、启动容器&#xff08;GPU&#xff09; docker run -d --name xinference -e XINFERENCE_MODEL_SRCmodelscope -p 9997:9997 --gpus all xprobe/xinference:latest xinference-local -H 0.0.0.0 # 启动一个新的Docker容…

三周年创作纪念日

文章目录 回顾与收获三年收获的五个维度未来的展望致谢与呼唤 亲爱的社区朋友们&#xff0c;大家好&#xff01; 今天是 2025 年 4 月 14 日&#xff0c;距离我在 2022 年 4 月 14 日发布第一篇技术博客《SonarQube 部署》整整 1,095 天。在这条创作之路上&#xff0c;我既感慨…

Redis——五种数据类型

目录 前言 1.String 1.1RAW编码 1.2EMBSTR编码 1.3 INT编码 2.List 3.Set 3.1 InSet编码转化成Dict编码 4.ZSet 4.1结合SkipList和HT实现 4.2使用ZipList实现 4.3编码转换 4.4 ZipList排序功能 5.Hash 5.1Hash底层存储结构 6.Redis数据结构和数据类型关系图 前言…

zookeeper启动报错have small server identifier

解决方案&#xff1a; 1、查看myid是否有重复 2、查看server.X 与myid的X是否一致 3、启动顺序为myid从小到大的服务器顺序

#Linux动态大小裁剪以及包大小变大排查思路

1 动态库裁剪 库分为动态库和静态库&#xff0c;动态库是在程序运行时才加载&#xff0c;静态库是在编译时就加载到程序中。动态库的大小通常比静态库小&#xff0c;因为动态库只包含了程序需要的函数和数据&#xff0c;而静态库则包含了所有的函数和数据。静态库可以理解为引入…

消息队列生产者投递的高可靠性与一致性保障方案

在构建高可靠分布式系统时&#xff0c;确保业务数据库与消息队列&#xff08;MQ&#xff09;之间的一致性是一项核心挑战。尤其当使用 Kafka 作为消息队列中间件时&#xff0c;如何避免“数据库写入成功&#xff0c;但消息发送失败”或“消息重复发送”等问题&#xff0c;成为系…

Formality:Bug记录

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 本文记录博主在使用Synopsys的形式验证工具Formality中遇到的一个Bug。 Bug复现 情况一 // 例1 module dff (input clk, input d_in, output d_out …

通信算法之267 : DJI无人机 云哨 DroneID 640ms

DJI 无人机 与DroneID 转 *** 载 0x01 摘要 消费级无人机可以用于高级航拍、物流和人道主义救援等等。但是其广泛使用给安全、安保和隐私带来了许多风险。例如&#xff0c;攻击方可能会使用无人机进行监视、运输非法物品&#xff0c;或通过侵入机场上方的封闭空域造成经济损…

论坛测试报告

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

npx 的作用以及延伸知识(.bin目录,npm run xx 执行)

文章目录 前言原理解析1. npx 的作用2. 为什么会有 node_modules/.bin/lerna3. npx 的查找顺序4. 执行流程总结1&#xff1a; 1. .bin 机制什么是 node_modules/.bin&#xff1f;例子 2. npx 的底层实现npx 是如何工作的&#xff1f;为什么推荐用 npx&#xff1f;npx 的特殊能力…

【c语言】深入理解指针3——回调函数

一、回调函数 回调函数&#xff1a;通过函数指针调用的函数. 当把一个函数的地址传递给另一个函数&#xff0c;通过该地址去调用其指向的函数&#xff0c;那么这个被调用的函数就是回调函数. 示例&#xff1a; 在【深入理解指针2】中结尾写了用函数指针实现计算器的功能&#…

HTTP 核心概念

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

VidBot:从野外 2D 人体视频中学习可泛化的 3D 动作,实现零样本机器人操控

25年3月来自慕尼黑工大、瑞士 ETH 和微软的论文“VidBot: Learning Generalizable 3D Actions from In-the-Wild 2D Human Videos for Zero-Shot Robotic Manipulation”。 未来的机器人被设想为能够执行各种家务的多功能系统。最大的问题仍然是&#xff0c;如何在尽量减少机器…

Linux 日常运维命令大全

Linux 作为一种开源操作系统&#xff0c;在服务器运维中扮演着重要角色。掌握常用的 Linux 命令对于运维人员而言至关重要。本文将整理一份 Linux 服务器运维常用命令大全&#xff0c;帮助你在日常工作中提高效率和准确性。 1. 基础命令 基础命令是Linux操作的起点&#xff0…

编程规范之枚举

编程规范之枚举 1.1 初始化枚举项 枚举平时用的也没有很频繁&#xff0c;今天看代码规范提到枚举类型初始化枚举项。并对初始化枚举项进行了归纳。包括下面三个 不进行显示初始化&#xff0c;交由编译器完成。 对第一个枚举项的显式初始化&#xff0c;这样可以强制整数值的…

《软件设计师》复习笔记(12.1)——范围管理、进度管理

目录 一、范围管理 1. 核心概念 2. 范围管理过程 WBS&#xff08;工作分解结构&#xff09;示例 真题示例&#xff1a; 二、进度管理 1. 核心过程 2. 关键工具与技术 真题示例&#xff1a; 一、范围管理 1. 核心概念 项目范围&#xff1a;为交付产品必须完成的工作…

过去十年前端框架演变与技术驱动因素剖析

一、技术演进脉络&#xff08;2013-2023&#xff09; 2013-2015&#xff1a;结构化需求催生框架雏形 早期的jQuery虽然解决了跨浏览器兼容性问题&#xff08;如IE8兼容性处理&#xff09;&#xff0c;但其松散的代码组织方式难以支撑复杂应用开发。Backbone.js的出现首次引入M…