hoppscotch Docker部署

hoppscotch Docker部署

本文详细介绍了如何使用Docker进行hoppscotch(原名postwoman)的AIO部署。文章首先概述了hoppscotch的部署方法,然后详细说明了配置依赖,包括部署NGINX、数据库和邮箱认证。接着,文章重点讲解了hoppscotch配置文件的设置,包括环境变量配置和迁移数据步骤。最后,文章介绍了如何启动hoppscotch、配置Web和管理端,以及如何配置代理以使Web端的hoppscotch正常使用。

hoppscotch 原名 postwoman, 可以理解成postman的开源替代, 有客户端版, 也有网页版, 也是本文部署的版本

网页版只能使用Docker部署, 但是他那个官方文档感觉根本不是写给人看的, 本来很简单的事, 他那个文档写的我是满头问号! 理解不了一点, 研究了许久, 整理出了这份可实践的部署文档!

https://docs.hoppscotch.io/documentation/self-host/community-edition/install-and-build

官方提供了两种方法部署, 分离部署, 和AIO部署, 本文使用的都是AIO的方法 都用Docker了还用啥分离

配置依赖

部署NGINX

把本文中提到的所有hoppscotch.dev 替换为你自己的域名
hoppscotch 需要配置 HTTPS, 我的做法是在本机上安装了一个nginx, 反向代理到hoppscotch容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
apt install nginx -y

cat > /etc/nginx/conf.d/hoppscotch.conf <<EOF

server {
    listen 80;
    server_name hoppscotch.dev; # 你的域名配置
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name hoppscotch.dev;

    charset utf-8;
    # 你的证书
    ssl_certificate /etc/nginx/ssl/hoppscotch.dev.pem;      
    ssl_certificate_key /etc/nginx/ssl/hoppscotch.dev_key.pem;    

    location / {
        proxy_pass http://127.0.0.1:8888;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection "upgrade";
        proxy_set_header   Host          $http_host;
        proxy_set_header   X-Forwarded-For    $proxy_add_x_forwarded_for;
    }
}
EOF

systemctl enable nginx --now

部署数据库

hoppscotch 使用 postgres数据库, 可以使用裸机部署
我这里为了方便也直接Docker启一个

1
2
3
4
5
6
7
8
9
10
11
docker pull postgres
mkdir /data/postgresql_data
chown 999:999 /data/postgresql_data -R #PS 确保本地有个uid的用户

# 自己设置POSTGRES_PASSWORD=hoppscotch 密码
docker run -itd -p 5432:5432 \
-e POSTGRES_DB=hoppscotch -e POSTGRES_USER=hoppscotch \
-e POSTGRES_PASSWORD=HKAdqw1m70 \
-e PGDATA=/var/lib/postgresql/data/pgdata \
-v /data/postgresql_data:/var/lib/postgresql/data \
--name postgres postgres:latest

邮箱认证

163

hoppscotch支持的认证还挺多的GOOGLE,GITHUB,MICROSOFT,EMAIL

这里使用EMAIL配置, 你可以使用公共邮箱163/QQ/Outlook等提供的smtp配置, 这块是比较好弄的,
不过如果你是自己用, 其实没必要配邮箱认证, 直接配mailcatcher即可, 我这里用的便是mailcatcher,

使用mailcatcher

MailCatcher 是一个模拟smtp服务的程序, 会捕获所有邮件, 下文也会用这个配置

1
docker run -d --name smtp -p 1025:1025 -p 1080:1080  dockage/mailcatcher:latest

部署hoppscotch

配置文件

hoppscotch配置文件的部分是最坑的,

  1. 注释语焉不详,
  2. 然后还有一个气死人的BUG, .env 环境变量配置 同行上不能有注释 不然就会报错,
    搞的是, 官方提供的.env 文件 都有这样的注释, 也就是说你按照官方文档配置一定会出现这样的故障
1
2
3
4
5
6
>> .env文件中环境变量同行有注释就会报错
REFRESH_TOKEN_VALIDITY=604800000 # Default validity is 7 days (604800000 ms) in ms

<< 得这样配置才行
REFRESH_TOKEN_VALIDITY=604800000
# Default validity is 7 days (604800000 ms) in ms

如果你完全按照本文部署, 你可以直接使用我的这个配置文件, 我就不一一解释, 需要替换的内容

  1. hoppscotch.dev 替换为你自己的域名
  2. postgresql://hoppscotch:[email protected]:5432/hoppscotch 替换为你实际的数据库配置
  3. MAILER_SMTP_URL=smtp://192.168.2.123:1025192.168.2.123 改为你的IP即可
1
2
3
mkdir /data/hoppscotch
cd /data/hoppscotch
touch .env # env内容参考下文
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#-----------------------Backend Config------------------------------#
# Prisma Config
DATABASE_URL=postgresql://hoppscotch:[email protected]:5432/hoppscotch

# (Optional) By default, the AIO container (when in subpath access mode) exposes the endpoint on port 80. Use this setting to specify a different port if needed.
HOPP_AIO_ALTERNATE_PORT=80

# Auth Tokens Config
JWT_SECRET=secretcode123
TOKEN_SALT_COMPLEXITY=1000
MAGIC_LINK_TOKEN_VALIDITY=3000
REFRESH_TOKEN_VALIDITY=604800000
ACCESS_TOKEN_VALIDITY=86400000
SESSION_SECRET=anothersecretcode123

# Recommended to be true. Set to false if you are using http.
# Note: Some auth providers may not support http requests and may stop working when set to false.
ALLOW_SECURE_COOKIES=true

# Sensitive Data Encryption Key while storing in Database (32 character)
DATA_ENCRYPTION_KEY=********************************

# Hoppscotch App Domain Config
REDIRECT_URL=https://hoppscotch.dev
WHITELISTED_ORIGINS=https://hoppscotch.dev
#VITE_ALLOWED_AUTH_PROVIDERS=GOOGLE,GITHUB,MICROSOFT,EMAIL
VITE_ALLOWED_AUTH_PROVIDERS=EMAIL
#VITE_ALLOWED_AUTH_PROVIDERS=EMAIL

# Google Auth Config
GOOGLE_CLIENT_ID=*****
GOOGLE_CLIENT_SECRET=*****
GOOGLE_CALLBACK_URL=https://hoppscotch.dev/backend/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=https://hoppscotch.dev/backend/v1/auth/microsoft/callback
MICROSOFT_SCOPE=user.read
MICROSOFT_TENANT=common

# Mailer config
MAILER_SMTP_ENABLE=true
MAILER_USE_CUSTOM_CONFIGS=false
[email protected]
# 使用mailcatcher
MAILER_SMTP_URL=smtp://192.168.2.123:1025
MAILER_SMTP_HOST=smtp.163.com
MAILER_SMTP_PORT=25
MAILER_SMTP_SECURE=true
[email protected]
MAILER_SMTP_PASSWORD=HWKDTBQUFRTMYPKH
MAILER_TLS_REJECT_UNAUTHORIZED=true

# Rate Limit Config
RATE_LIMIT_TTL=60
RATE_LIMIT_MAX=100

#-----------------------Frontend Config------------------------------#

# Base URLs
VITE_BASE_URL=https://hoppscotch.dev
VITE_SHORTCODE_BASE_URL=https://hoppscotch.dev
VITE_ADMIN_URL=https://hoppscotch.dev

# Backend URLs
VITE_BACKEND_GQL_URL=https://hoppscotch.dev/backend/graphql
VITE_BACKEND_WS_URL=wss://hoppscotch.dev/backend/graphql
VITE_BACKEND_API_URL=https://hoppscotch.dev/backend/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=true

迁移数据

hoppscotch 容器启动后, 并不会自动初始化数据, 需要手动处理,
搞的是, 官方文档中, 迁移数据步骤写在了主容器启动之后

1
2
3
4
5
6
7
8
cd /data/hoppscotch
# 在.env文件目录下启动容器
docker run -it --rm --env-file .env --name hoppscotch hoppscotch/hoppscotch /bin/sh

# 执行下面这条迁移命令
# npm config set registry https://registry.npmmirror.com # 国内源

pnpx prisma migrate deploy

迁移后的数据

启动hoppscotch

全部配置完了之后就可以在.env目录下

1
2
3
cd /data/hoppscotch

docker run -itd -p 8888:80 --env-file .env --name hoppscotch hoppscotch/hoppscotch

run hoppscotch容器后, 第一次会失败退出, 这是正常的(正常个der

稍等片刻重启一下就行了

1
docker restart hoppscotch

重启后就没问题了

Web配置

第一个注册的用户默认为管理员
管理端地址 https://domain.com/admin

发送成功后, 访问MailCatcher , 就能看到发的邮件了

配置代理

Web端的hoppscotch 想正常使用还得配置代理,
我使用的是浏览器插件 https://chromewebstore.google.com/detail/hoppscotch-browser-extens/amknoiejhlmhancpahfcfcfhllgkpbld

效果

:) 本文完, 愉快的玩耍把

作者

默吟

发布于

2024-12-11

许可协议

CC BY-NC-SA 4.0

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×