1panel面板docker部署独角数卡自动发卡平台(含Epdust和Coinbase支付方式)

#1panel #Linux #服务器管理 #docker #docker-compose #MySQL #redis #OpenResty #容器编排 #环境配置 #数据库连接 #反向代理 #Epusdt支付 #Coinbase支付 #商户KEY #商户密钥 #USD #USDC #API key #加密货币 #支付模块 #实时汇率


一、部署独角数卡平台

1、使用 1panel 部署

1
2
# 安装1panel面板,开源面板12Kstars,可以方便的管理多个网站和容器.
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh

可以点个 star 【现代化、开源的 Linux 服务器运维管理面板。 (github.com)】

本文使用 1panel 面板部署

  • 喜欢使用命令行的朋友,可以使用下面的命令安装 docker 和 docker-compose 哈
1
sudo apt update && sudo apt install -y apt-transport-https ca-certificates curl software-properties-common && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && echo "deb [signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null && sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io && sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose && sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

2、编排拉取镜像构建容器

请使用 1panel 的同学,在使用我的 docker-compose.yml 文件前,要先去应用商店安装 MySQL 和 redis 数据库(都不用对外访问),和 OpenResty 平台

1)切换到容器——>编排——>下输入下面的内容

9b807d9e15ab790a0da0cc5de071d462.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
version: "3"

services:
dujiaoka:
image: ghcr.io/apocalypsor/dujiaoka:latest
networks:
- 1panel-network
environment:
# - INSTALL=false
- INSTALL=true # 注意这个true在安装完成后,请改为false
# - MODIFY=true
volumes:
- ./env.conf:/dujiaoka/.env
- ./uploads:/dujiaoka/public/uploads
- ./storage:/dujiaoka/storage
ports:
- 56789:80
restart: always
networks:
1panel-network:
external: true

2)切换到 /opt/1panel/docker/compose/dujiaoka 下,创建配置文件 env.conf

1
2
3
cd /opt/1panel/docker/compose/dujiaoka
wget https://raw.githubusercontent.com/assimon/dujiaoka/master/.env
chmod -R 777 env.conf # 注意配置文件的权限

如果遇到目录下有一个 env.conf 的文件夹,删除就行。因为利用docker-compose创建容器时,默认 env.conf文件格式,而我们需要的文本格式。

d7d9b96b0a143a7c8068f9c0b7ca06c7.png

  • 像我这样就正确了(pay文件不用管)

3)修改配置文件 env.conf

1
APP_KEY=base64:yW4XCgqVxxxxxxxxxxx8=

这个怎么生成,进入容器后在根目录执行:

1
php artisan key:generate

3、创建数据库

1)创建 dujiaoka 的 MySQL 数据库

35be79bffce8c915b01ec03483f21e76.png

2)获取 redis 的密码

e946b1f3accabd4f5f29926db765077e.png

4、连接数据库

1)此时在 /opt/1panel/docker/compose/dujiaoka 下使用命名重启容器

1
docker-compose restart

现在可以看见你的容器管理页面有三个容器,分别是 dujiaoka,mysql,redis。IP 地址一定要是同一个网段,不然不能连接成功。

dcd9c93fd45380d8ae0e460ec667dc22.png

2)访问独角数卡安装界面: http://your_IP:56789

记得放通防火墙端口!

00c4803226ee80e221885760e093ee6d.png

3)配置安装界面

afdc33537f2202f8ce2672025bafccb9.png

4)安装成功,请重启容器后,登录后台修改密码。

a52fd34c852e1f183937be49f4f45d66.png

de296bae2c43e11b1c559cae26227d35.png

5)后续扫尾工作——关闭安装功能和 Debug

  • 修改配置文件

    1
    APP_DEBUG=false   # true改为false
  • 修改 docker-compose 文件

    1
    2
    environment:
    - INSTALL=false # 注意这个true在安装完成后,请改为false
  • 重启容器

    1
    docker-compose restart

五、配置反向代理

677e9df8d51d5ff3a69cf7f4eb7c15ee.png

a1264a055cea8613aa9a111442fd062f.png

如果开启了 https 访问,配置文件的这个选项就要开启:

1
2
3
4
5
#是否开启https (前端开启了后端也必须为true)
#后台登录出现0err或者其他登录异常问题,大概率是开启了https而后台没有开启,把下面的false改为true即可

ADMIN_HTTPS=true

二、部署 Epusdt 支付

在 docker 中部署 Epusdt 支付方式,可以参考这篇博客,写的很详细

docker 部署 Epusdt - 独角数卡 dujiaoka 的 usdt 支付插件 - 思有云 - IOIOX

我就补充两点细节

1、获取 telegram api token ,将整个token写到tg_bot_token中。如:tg_bot_token=236923342:Alksdjli3klxilsdfsZtZCoywew

2、如果时使用 1panel 面板的同学,使用下面的命令时,最好在/opt/1panel/docker/compose下,保持环境的干净

1
2
3
4
mkdir epusdt && cd epusdt
wget https://raw.githubusercontent.com/stilleshan/dockerfiles/main/epusdt/docker-compose.yml
wget https://raw.githubusercontent.com/stilleshan/dockerfiles/main/epusdt/epusdt.conf
wget https://raw.githubusercontent.com/stilleshan/dockerfiles/main/epusdt/epusdt.sql

三、部署 Coinbase 支付

支付时,需要支付方有魔法

关键的值是:

  • 商户 KEY
  • 商户密钥
  • 支付模块:app/Http/Controllers/Pay/CoinbaseController.php

1、商户 KEY 和商户密钥

注册一个账号:https://commerce.coinbase.com/dashboard/settings

  • 获取 KEY

9cd586d6d23f242e9d87cb8788443e5e.png

  • 获取密钥

86e4a94eaaf844cd53b037bd1f51750b.png

794bf97263baf1a2e62e471ac502d1db.png

2、修改 coinbase 支付模块

应为 commerce coinbase 只支持两种货币:USD,USDC(加密货币)

参考官方文档手册:https://docs.cloud.coinbase.com/commerce/docs/accepting-crypto

测试 API key

1
2
3
4
5
6
7
8
9
curl -X POST https://api.commerce.coinbase.com/charges/ \
-H "Content-Type: application/json" \
-H "X-CC-Api-Key: 7xxxxxx-348c-xxxxxxxxxxxxxbbc" \
-H "X-CC-Version: 2018-03-22" \
-d '{
"name": "The Human Fund",
"description": "Money For People",
"pricing_type": "no_price"
}'

返回了:

1
2
3
4
5
6
{
"error": {
"type": "invalid_request",
"message": "3:only USD or USDC charges are supported. debug_error_string:{\"created\":\"@1700015913.228860973\",\"description\":\"Error received from peer ipv4:10.198.127.162:9090\",\"file\":\"src/core/lib/surface/call.cc\",\"file_line\":1066,\"grpc_message\":\"only USD or USDC charges are supported\",\"grpc_status\":3}"
}
}

\"only USD or USDC charges are supported\":发现只支持 USD 或者 USDC 货币支付

构建 USD 请求,测试是否可以支付:

1
2
3
4
5
6
7
8
9
{
"name": "The Human Fund",
"description": "Money For People",
"local_price": {
"amount": "100.00",
"currency": "USD"
},
"pricing_type": "fixed_price"
}

发现可以就收付款:

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
{
"data": {
"brand_color": "#122332",
"brand_logo_url": "",
"charge_kind": "WEB3",
"code": "JBTM4M3R",
"created_at": "2023-11-15T02:39:46Z",
"description": "Money For People",
"expires_at": "2023-11-17T02:39:46Z",
"hosted_url": "https://commerce.coinbase.com/pay/a82b9ae5-0090-495a-b3c0-ab5c10839b82",
"id": "a82b9ae5-0090-495a-b3c0-ab5c10839b82",
"name": "The Human Fund",
"organization_name": "",
"payments": [],
"pricing": {
"local": {
"amount": "100.00",
"currency": "USD"
},
"settlement": {
"amount": "100",
"currency": "USDC"
}
},
"pricing_type": "fixed_price",
"redirects": {
"cancel_url": "",
"success_url": "",
"will_redirect_after_success": false
},
"support_email": "[email protected]",
"timeline": [{
"status": "NEW",
"time": "2023-11-15T02:39:46Z"
}],
"web3_data": {
"transfer_intent": null,
"success_events": [],
"failure_events": [],
"contract_addresses": {
"137": "0x48073112c8C48e2550Bd42E4CD0aA483a416c5af",
"1": "0x131642c019AF815Ae5F9926272A70C84AE5C37ab",
"8453": "0x30E95edE0b3C7Ef147EE97A5e88FdE06311EA11f"
},
"settlement_currency_addresses": {
"137": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"1": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"8453": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
}
},
"web3_retail_payments_enabled": true
}
}

同理,我们可以修改支付货币为加密货币 USDC。接下里修改支付代码中的支付货币就为 USDC

修改 coinbase 的支付模块app/Http/Controllers/Pay/CoinbaseController.php > dujiaoka/app/Http/Controllers/Pay/CoinbaseController.php at master · assimon/dujiaoka (github.com)

3、修改支付模块

上面看懂了的同学,应该可以自己修改支付代码了,下面的是我自己修改的支付代码。

由于官方原来的支付是用 CNY 作为支付单位的,我们现在直接将其改为 USDC,支付金额就成 200CNY——>200USDC 了。所以我们要获取实时汇率来转换为 USDC 的金额,下面是修改后的CoinbaseController.php

百度网盘:https://pan.baidu.com/s/1i7_38dRw9qZHd6GUazXnCg

提取码:2jdi

点击终端,进入容器

1
2
3
4
5
cd /dujiaoka/app/Http/Controllers/Pay
cp CoinbaseController.php CoinbaseController.php.bak # 备份文件
rm CoinbaseController.php
vi CoinbaseController.php
# 复制粘贴所有文件

重启容器即可使用了

四、后记

感谢 assimon 大佬的独角数卡项目:

https://github.com/assimon/dujiaoka

感谢 Apocalypsor 大佬的独角数卡-docker 项目:

https://github.com/Apocalypsor/dujiaoka-docker

感谢 assimon 大佬的 epusdt 项目:

https://github.com/assimon/epusdt

感谢 Stille 大佬的 epusdt-docker 项目:

https://github.com/stilleshan/dockerfiles/tree/main/epusdt


1panel面板docker部署独角数卡自动发卡平台(含Epdust和Coinbase支付方式)
https://blog.pppfz.com/posts/6.html
作者
PPPFZ
发布于
2024年1月30日
许可协议