利用 Docker 搭建独角数卡的 支付方式,轻松收取货币!|好玩儿的 Docker 项目

更新

邮件 smtp 的配置忘记讲了,大家可以到谷歌搜索一下应该有很多教程,关键词 “smtp 配置”

顺哥轻创资源网 shundazy1  

1. 前言

继上一篇利用 Docker 轻松搭建独角发卡!人人都可以开一个线上小店|好玩儿的 Docker 项目之后,我们今天来为我们的小店搭建一个 USDT 的付款方式。(支付宝当面付也可以搭建,用门头照,不过之前有个梗 ——“当面付当面抓”;第三方支付也可以搭建,但是咕咕没什么经验,里面手续费有的抽成很高,故这俩都不再展开,有兴趣的自行谷歌搜索)

搭建方式首发于 Stille 大佬

咕咕这边附自己的实操记录,补充一些细节部分。

2fdbd82cb67713a57fc4f6f3c46d255d.png

2. 项目展示

3272e7b023b72356ccf3451105e63bc4.png

190d22480fa75637480428044b863aad.png

b73c19b402e63a45f52be419463429ac.png

3. 相关地址

咕咕的 Demo:https://shop.gugu.ee

GitHub 官方仓库:GitHub - assimon/epusdt: 开源优雅的跨平台usdt收付中间件 Easy Payment USDT——epsdt

此次用到的 GitHub 仓库:https://github.com/stilleshan/dockerfiles/tree/main/epusdt

4. 搭建环境

  • 服务器:咕咕自己搭建用的是 Racknerd 的高性价比服务器(注意地区选美国西部城市的)这个涉及支付和加密货币,不建议用国内的服务器
  • 系统:Debian 11 (DD 脚本 非必需 DD,用原来的系统也 OK,之后教程都是用 Debian 或者 Ubuntu 搭建~)
  • 安装好 Docker、Docker-compose(相关脚本
  • 【非必需但建议】域名一枚,并做好解析到服务器上(域名购买、域名解析 视频教程
  • 【非必需】提前安装好宝塔面板海外版本 aapanel,并安装好 Nginx(安装地址
  • 【非必需本教程选用】安装好 Nginx Proxy Manager(相关教程
  • 一个 telegram 号

    服务器要求:内存建议 1G,能安装 Docker 即可~

5. 搭建视频

5.1 YouTube:

视频地址:https://youtu.be/QeKk5O-B2DQ

6. 搭建方式

6.1 安装 Docker 与 Nginx Proxy Manager

可以直接参考这篇内容:

【Docker系列】一个反向代理神器——Nginx Proxy Manager | 我不是咕咕鸽

6.2 新建 telegram 机器人并获取 token

d724b2a0ee43b9093a9cc1f6e20793f4.png

搜索 BotFather 注意有很多假冒的,别弄错了

18cf40c8db0a5715a4629d08e7cfb909.png

/newbot 一步一步按照提示创建即可

826c0c730672266a6780c31d978b048f.png

创建成功之后,这边就会获得一个 API 的 token,类似:6247111111:Asdajkdaksdhkajshi6aUa6pXH4Rxc

6.3 获取 telegram id

搜索:https://t.me/getmyid_bot

979c7ad1a8834b4607d8a85147acb4f0.png

得到你的 user ID,类似:980888097

6.4 创建安装目录

创建一下安装的目录:

BASH

sudo -i

mkdir -p /root/data/docker_data/epusdt

cd /root/data/docker_data/epusdt

这边我们直接用 docker 的方式安装。

BASH

vim docker-compose.yml

英文输入法下,按 i

YAML

version: "3"
services:
  db:
    image: mariadb:focal
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=changeyourpassword
      - MYSQL_DATABASE=epusdt
      - MYSQL_USER=epusdt
      - MYSQL_PASSWORD=changeyourpassword
    volumes:
      - ./mysql:/var/lib/mysql

  redis:
    image: redis:alpine
    restart: always
    volumes:
      - ./redis:/data

  epusdt:
    image: stilleshan/epusdt
    restart: always
    volumes:
      - ./epusdt.conf:/app/.env
    ports:
      - 8000:8000
  • 修改 MYSQL_ROOT_PASSWORD 数据库 root 密码
  • 修改 MYSQL_PASSWORD 数据库用户密码
  • 用户名和数据库名不用修改
  • 如服务器 8000 端口可能被占用,需修改 epusdt 映射端口,例如 58000:8000

修改好之后,注意切换成英文输入法,然后按一下 esc,然后 :wq 保存退出。

PLAINTEXT

vim epusdt.conf

输入:

PLAINTEXT

app_name=epusdt
#下面配置你的域名,收银台会需要
app_uri=https://你的域名
#是否开启debug,默认false
app_debug=false
#http服务监听端口
http_listen=:8000

#静态资源文件目录
static_path=/static
#缓存路径
runtime_root_path=/runtime

#日志配置
log_save_path=/logs
log_max_size=32
log_max_age=7
max_backups=3

# mysql配置
mysql_host=db
mysql_port=3306
mysql_user=epusdt
mysql_passwd=changeyourpassword
# 请修改 epusdt 数据库密码
mysql_database=epusdt
mysql_table_prefix=
mysql_max_idle_conns=10
mysql_max_open_conns=100
mysql_max_life_time=6

# redis配置
redis_host=redis
redis_port=6379
redis_passwd=
redis_db=5
redis_pool_size=5
redis_max_retries=3
redis_idle_timeout=1000

# 消息队列配置
queue_concurrency=10
queue_level_critical=6
queue_level_default=3
queue_level_low=1

#机器人Apitoken
tg_bot_token=你的tg机器人token
#telegram代理url(大陆地区服务器可使用一台国外服务器做反代tg的url),如果运行的本来就是境外服务器,则无需填写
tg_proxy=
#管理员userid
tg_manage=你的tgid

#api接口认证token
api_auth_token=changeyourpassword

#订单过期时间(单位分钟)
order_expiration_time=10

#强制汇率(设置此参数后每笔交易将按照此汇率计算,例如:6.4)
forced_usdt_rate=

注意:

  • 修改第 3 行 app_uri 为上文为 epusdt 准备的独立域名
  • 修改第 24 行 mysql_passwd 为上节 MYSQL_PASSWORD 的用户密码(注意:非 root 密码)
  • 修改第 55 行 api_auth_token=123qweASD 创建一个密码用于 dujiaoka 支付设置中使用
  • 注意:因为本项目是独立部署到 docker compose 内,所以第 21,33 行已经修改为 db,redis不能使用 127.0.0.1.
  • 修改第 48 行 tg_bot_token= 为上文创建的 Telegram Bot 的 Token
  • 修改第 52 行 tg_manage= 为上文创建的 Telegram Bot 的 ID

修改好之后,注意切换成英文输入法,然后按一下 esc,然后 :wq 保存退出。

PLAINTEXT

vim epusdt.sql

输入:

PLAINTEXT

-- auto-generated definition
create table orders
(
    id                   int auto_increment
        primary key,
    trade_id             varchar(32)    not null comment 'epusdt订单号',
    order_id             varchar(32)    not null comment '客户交易id',
    block_transaction_id varchar(128)   null comment '区块唯一编号',
    actual_amount        decimal(19, 4) not null comment '订单实际需要支付的金额,保留4位小数',
    amount               decimal(19, 4) not null comment '订单金额,保留4位小数',
    token                varchar(50)    not null comment '所属钱包地址',
    status               int default 1  not null comment '1:等待支付,2:支付成功,3:已过期',
    notify_url           varchar(128)   not null comment '异步回调地址',
    redirect_url         varchar(128)   null comment '同步回调地址',
    callback_num         int default 0  null comment '回调次数',
    callback_confirm     int default 2  null comment '回调是否已确认? 1是 2否',
    created_at           timestamp      null,
    updated_at           timestamp      null,
    deleted_at           timestamp      null,
    constraint orders_order_id_uindex
        unique (order_id),
    constraint orders_trade_id_uindex
        unique (trade_id)
);

create index orders_block_transaction_id_index
    on orders (block_transaction_id);

-- auto-generated definition
create table wallet_address
(
    id         int auto_increment
        primary key,
    token      varchar(50)   not null comment '钱包token',
    status     int default 1 not null comment '1:启用 2:禁用',
    created_at timestamp     null,
    updated_at timestamp     null,
    deleted_at timestamp     null
)
    comment '钱包表';

create index wallet_address_token_index
    on wallet_address (token);

不用修改,直接切换成英文输入法,然后按一下 esc,然后 :wq 保存退出。

6.3 打开服务器防火墙(非必需)并访问网页

打开防火墙的端口 8090

举例,腾讯云打开方法如下(部分服务商没有自带的面板防火墙,就不用这步操作了):

image-20220630215240864

image-20220630220546335

图中示例填的是 5230,备注填的是 memos,这边我们填 8090,示例填 epusdt ,确定即可(如果你在 docker-compose 文件里换了 9009,这边就需要填 9009,以此类推)

image-20220819145844555

查看端口是否被占用(以 8090 为例),输入:

BASH

lsof -i:8090  #查看 8090 端口是否被占用,如果被占用,重新自定义一个端口

如果啥也没出现,表示端口未被占用,我们可以继续下面的操作了~

如果出现:

BASH

-bash: lsof: command not found

运行:

BASH

apt install lsof  #安装 lsof

如果端口没有被占用(被占用了就修改一下端口,比如改成 8081,注意 docker 命令行里和防火墙都要改)

最后:

BASH

cd /root/data/docker_data/epusdt    # 来到 dockercompose 文件所在的文件夹下

docker-compose up -d 

6.6 初始化数据库

将下述命令中的 -pCHANGE_YOUR_PASSWORD 的密码改为上述设置的新密码,注意需要保留前缀 -p, 例如上文修改密码 MYSQL_PASSWORD=aaabbbccc, 此处则为 -paaabbbccc.

如下图执行后无任何显示代表成功,否则将会报错.

BASH

docker exec -i epusdt-db-1 sh -c 'exec mysql -uepusdt -pCHANGE_YOUR_PASSWORD epusdt' < epusdt.sql

6.7 重启服务

BASH

docker-compose down
docker-compose up -d
# 或 restart 重启
docker-compose restart

6.8 检查服务

查看 epusdt 服务,如下图所示 http server started on [::]:8000 则表示成功.

BASH

docker logs -f 你的容器id

通过 docker ps 可以查看到容器 id

13835bd2f7c08e284127581808a5d544.png

咕咕这边就是:usdt_epusdt_1

所以:

BASH

docker logs -f usdt_epusdt_1

理论上我们就可以输入 http://ip:8090 访问安装了,但是我们这边先做反代。

注意:

1、不知道服务器 IP,可以直接在命令行输入:curl ip.sb,会显示当前服务器的 IP。

2、遇到访问不了的情况,请再次检查在宝塔面板的防火墙和服务商的后台防火墙是否打开对应了端口。

这个涉及到钱的,还是非常需要做 https 的!会让网页更安全!

namesilo 上面 xyz 后缀的域名一年就 7 块钱,可以年抛。(冷知识,namesilo 上 6 位数字的 xyz 续费永远都是 0.99 美元 = =)

如果想要长期使用,还是建议买 com 后缀的域名,更加正规一些,可以输入 laodade 来获得 1 美元的优惠(不知道现在还有没有)

namesilo 自带隐私保护,咕咕一直在用这家,价格也是这些注册商里面比较低的,关键是他家不像其他家域名注册商,没有七七八八的套路!(就是后台界面有些丑古老 = =)

【域名购买】Namesilo 优惠码和域名解析教程(附带服务器购买推荐和注意事项)

我们接着往下看!

6.4 更新 epusdt

插一个更新和卸载的方法,docker 搭建通用。

BASH

cd /root/data/docker_data/epusdt

docker-compose down 

cp -r /root/data/docker_data/epusdt /root/data/docker_data/epusdt.archive  # 万事先备份,以防万一

docker-compose pull

docker-compose up -d    # 请不要使用 docker-compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker-compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。

docker image prune  # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像

提示:

BASH

WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] 

输入 y

利用 Docker 搭建的应用,更新非常容易~

6.5 卸载 epusdt

BASH

cd /root/data/docker_data/epusdt

docker-compose down

cd ..

rm -rf /root/data/docker_data/epusdt  # 完全删除映射到本地的数据

可以卸载得很干净。

7. 反向代理

我们要用域名而不是 IP + 端口的方式来访问我们的服务!

7.1 利用 Nginx Proxy Manager

在添加反向代理之前,确保你已经完成了域名解析,不会的可以看这个:域名一枚,并做好解析到服务器上域名购买、域名解析 视频教程

image-20221016140213282

之后,登陆 Nginx Proxy Manager(不会的看这个:安装 Nginx Proxy Manager相关教程))

注意:

Nginx Proxy Manager(以下简称 NPM)会用到 80443 端口,所以本机不能占用(比如原来就有 Nginx)

直接丢几张图:

image-20220502123517401

image-20230529183650557

注意填写对应的 域名IP 和 端口,按文章来的话,应该是 8090

IP 填写:

如果 Nginx Proxy Manager 和 epusdt 在同一台服务器上,可以在终端输入:

BASH

ip addr show docker0

查看对应的 Docker 容器内部 IP。

否则直接填 epusdt 所在的服务器 IP 就行。

image-20220403104353185

再次打开,勾选这些:

image-20221016140356324

然后就可以用域名来安装访问了。

访问域名显示 hello epusdt, https://github.com/assimon/epusdt 表示成功。

image-20230529183743600

7.2 利用宝塔面板

发现还是有不少小伙伴习惯用宝塔面板,这边也贴一个宝塔面板的反代配置:

直接新建一个站点,不要数据库,不要 php,纯静态即可。

然后打开下面的配置,修改 Nginx 的配置。

image-20220819150345725

image-20220819150542867

代码如下:

NGINX

location / {
  proxy_pass http://127.0.0.1:8090/;       # 注意改成你实际使用的端口
  rewrite ^/(.*)$ /$1 break;
  proxy_redirect off;
  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Upgrade-Insecure-Requests 1;
  proxy_set_header X-Forwarded-Proto https;
}

此方法对 90% 的反向代理都能生效,然后就可以用域名来安装访问了。

有同学可能会问,为什么不直接用宝塔自带的反向代理功能。

image-20220819150730128

也可以,不过咕咕自己之前遇到过当有多个网站需要反代的时候,在这边设置会报错的情况 = =

所以后来就不用了,直接用上面的方法来操作了。

8. 使用教程

8.1 配置支付 - dujiaoka

登录 dujiaoka 后台 - 配置 - 支付配置

最下面开启 epusdt, 并点击编辑.
注意:dujiaoka 2.0.5 版本及以上才默认支持 epusdt, 其他版本请自行升级或者手动安装插件.

image-20230529183959619

修改参数
  • 商户 ID 修改为上述创建的密码 changeyourpassword
  • 商户密钥填写 API 地址 https://上文准备的usdt域名.com/api/v1/order/create-transaction 比如咕咕这边就是:https://testusdt.gugu.ovh/api/v1/order/create-transaction

image-20230529184130322

设置 usdt 收款地址

先点击机器人,

dbe73336a273ccecfba4cb5bb7820590.png

再创建 usdt 收款地址则完成所有部署。

7f6416593f82007ce4ba65aa88be0812.png

可以自己测试一下。

9. 结尾

祝大家用得开心,有问题可以去 GitHub 提 Issues,也可以在评论区互相交流探讨。

同时,有能力给项目做贡献的同学,也欢迎积极加入到 项目 中来,贡献自己的一份力量!

最后,感谢开发人员们的辛苦付出,让我们能用到这么优秀的项目!

参考资料

GitHub 仓库:GitHub - assimon/epusdt: 开源优雅的跨平台usdt收付中间件 Easy Payment USDT——epsdt
用到的 Stille 大佬镜像:https://github.com/stilleshan/dockerfiles/tree/main/epusdt
Stille 大佬博客:docker 部署 Epusdt - 独角数卡 dujiaoka 的 usdt 支付插件 - 思有云 - IOIOX

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值