51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

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

更新 {#更新}

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

  1. 前言 {#1-前言}

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

搭建方式首发于Stille大佬

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

2fdbd82cb67713a57fc4f6f3c46d255d.png

  1. 项目展示 {#2-项目展示}

3272e7b023b72356ccf3451105e63bc4.png 190d22480fa75637480428044b863aad.png b73c19b402e63a45f52be419463429ac.png

  1. 相关地址 {#3-相关地址}

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

GitHub官方仓库:https://github.com/assimon/epusdt

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

  1. 搭建环境 {#4-搭建环境}

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

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

  1. 搭建视频 {#5-搭建视频}

5.1 YouTube: {#51-youtube}

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

  1. 搭建方式 {#6-搭建方式}

6.1 安装 Docker 与 Nginx Proxy Manager {#61-安装-docker-与-nginx-proxy-manager}

可以直接参考这篇内容:

https://blog.laoda.de/archives/nginxproxymanager

6.2 新建telegram机器人并获取token {#62-新建telegram机器人并获取token}

d724b2a0ee43b9093a9cc1f6e20793f4.png

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

/newbot 一步一步按照提示创建即可 826c0c730672266a6780c31d978b048f.png

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

6.3 获取telegram id {#63-获取telegram-id}

搜索:https://t.me/getmyid_bot 979c7ad1a8834b4607d8a85147acb4f0.png

得到你的user ID,类似:980888097

6.4 创建安装目录 {#64-创建安装目录}

创建一下安装的目录:

sudo -i

mkdir -p /root/data/docker_data/epusdt

cd /root/data/docker_data/epusdt


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

vim docker-compose.yml

英文输入法下,按 i

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 保存退出。

vim epusdt.conf

输入:

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 保存退出。

vim epusdt.sql

输入:

-- 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 打开服务器防火墙(非必需)并访问网页 {#63-打开服务器防火墙非必需并访问网页}

打开防火墙的端口 8090

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

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

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

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

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

如果出现:

-bash: lsof: command not found

运行:

apt install lsof  #安装 lsof

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

最后:

cd /root/data/docker_data/epusdt    # 来到 dockercompose 文件所在的文件夹下
`docker-compose up -d
`

6.6 初始化数据库 {#66-初始化数据库}

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

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

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

6.7 重启服务 {#67-重启服务}

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

6.8 检查服务 {#68-检查服务}

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

docker logs -f 你的容器id

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

13835bd2f7c08e284127581808a5d544.png

咕咕这边就是:usdt_epusdt_1

所以:

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 {#64-更新-epusdt}

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

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 标记和未被容器使用的镜像


提示:

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

输入 y

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

6.5 卸载 epusdt {#65-卸载-epusdt}

cd /root/data/docker_data/epusdt

docker-compose down

cd ..

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


可以卸载得很干净。

  1. 反向代理 {#7-反向代理}

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

7.1 利用 Nginx Proxy Manager {#71-利用-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 在同一台服务器上,可以在终端输入:

ip addr show docker0

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

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

再次打开,勾选这些: image-20221016140356324

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

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

7.2 利用宝塔面板 {#72-利用宝塔面板}

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

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

然后打开下面的配置,修改 Nginx 的配置。 image-20220819150345725 image-20220819150542867

代码如下:

    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

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

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

  1. 使用教程 {#8-使用教程}

8.1 配置支付 - dujiaoka {#81-配置支付---dujiaoka}

登录 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 收款地址 {#设置-usdt-收款地址}

先点击机器人, dbe73336a273ccecfba4cb5bb7820590.png

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

可以自己测试一下。

  1. 结尾 {#9-结尾}

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

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

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

参考资料 {#参考资料}

GitHub仓库:https://github.com/assimon/epusdt
用到的Stille大佬镜像:https://github.com/stilleshan/dockerfiles/tree/main/epusdt
Stille大佬博客:https://www.ioiox.com/archives/167.html

赞(1)
未经允许不得转载:工具盒子 » 利用Docker搭建独角数卡的USDT支付方式,轻松收取加密货币!|好玩儿的Docker项目