引言
独角数卡是一款热门的自动售货系统,特别适合礼品卡、数字商品的在线售卖。支持支付宝、微信、usdt等支付方式。通过 Docker,您可以快速部署和管理独角数卡,实现高效、稳定的运营。本文将为您详细介绍如何使用 Docker 快速搭建独角数卡自动售货系统。
我的商店已经上线,https://shop.zhpengfei.com,包含各种礼品卡、会员代开, 如telegram会员代开3/6/12个月。
项目地址:dujiaoka
准备工作
1.需要一个域名,我这里准备使用 shop.zhpengfei.com子域名
2.在香港购买一台务器,我选择在 lightnode购买,价格更加便宜
3. 免费在 cloudflare上获取证书,有效期 15 年
购买域名
如果有域名,直接用二级域名搭建
没有域名购买一个,一年成本也就几十块,推荐去namesilo平台购买,域名不用备案
购买服务器
注册登录 lightnode 后用支付宝充值后就可以购买了
推荐服务器配置如下:
- 地区选择香港
- 镜像选择 Docker
- 实例:1vcpu|2GB
- 网络:按带宽计费、BGP、 1Mbps
- 实例硬盘:默认会有 50G,我这里选择不添加
- 主机名默认
- root登录密码:设置的复杂一些
- 安全组:首次在某个地区购买服务器,都要添加安全组,如下图所示,点击添加,自动创建安全组
入口允许 80、443、22 三个端口,出口全部允许
连接服务器
我用的 mac电脑,直接在终端里ssh root@服务器ip,按回车键后再输入密码即可登录
接下来使用下面脚本快速安装好 docker-compose和 nginx
基础环境配置脚本
这个简易脚本下载好了dujiaoka相关配置,并安装好了docker-compose和 nginx,为了更好的性能,nginx我选择直接安装在服务器上,没在 docker中安装
cat dujiaoka_install.sh
#!/bin/bash home_path=/usr/local/data/ djs_path=$home_path/dujiaoka mkdir -p $home_path $djs_path/storage $djs_path/uploads cd $djs_path wget https://raw.githubusercontent.com/stilleshan/dockerfiles/main/dujiaoka/env.conf wget https://raw.githubusercontent.com/stilleshan/dockerfiles/main/dujiaoka/docker-compose.yml chmod -R 777 env.conf latest_version=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep -Po '"tag_name": "\K.*\d') sudo curl -L "https://github.faison.cc/docker/compose/releases/download/${latest_version}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose chmod +x /usr/bin/docker-compose docker-compose version sudo apt update sudo apt install nginx -y mkdir /etc/nginx/cert mkdir /var/html/nginx/logs/
开始基础环境配置
sh dujiaoka_install.sh
执行完脚本后,修改配置
cd /usr/local/data/dujiaoka
配置 Docker Compose 文件
version: "3" services: web: image: stilleshan/dujiaoka environment: #- INSTALL=false - INSTALL=true # - MODIFY=true volumes: - ./env.conf:/dujiaoka/.env - ./uploads:/dujiaoka/public/uploads - ./storage:/dujiaoka/storage ports: - 56789:80 restart: always networks: - dujiaoshou_shared_network depends_on: - db - redis db: image: mariadb:focal restart: always environment: - MYSQL_ROOT_PASSWORD=YOU-PASSWORD #修改数据库 root密码 - MYSQL_DATABASE=dujiaoka - MYSQL_USER=dujiaoka - MYSQL_PASSWORD=YOU-PASSWORD #修改用户dujiaoka密码 volumes: - ./mysql:/var/lib/mysql networks: - dujiaoshou_shared_network redis: image: redis:alpine restart: always volumes: - ./redis:/data networks: - dujiaoshou_shared_network networks: dujiaoshou_shared_network: name: dujiaoshou_shared_network driver: bridge
我增加了网络配置,为了安装支付模块usdt时,不在创建 mysql和 redis,因为这台机器配置很低,没必要创建多个 mysql和 redis,浪费系统资源,后期直接升级服务器配置就行了,也方便维护
可以直接使用我这个配置,但是注意修改数据库root密码和dujiaoka密码,即:
- MYSQL_ROOT_PASSWORD=YOU-PASSWORD #修改数据库 root密码
- MYSQL_PASSWORD=YOU-PASSWORD #普通用户dujiaoka密码
修改 env
APP_NAME=洛溪商店 APP_ENV=local APP_KEY=base64:y0OAi7tvAeiLKoKpW+XAzKmuDwFLH/G3FOAosbZ3fG7i5AKS APP_DEBUG=false APP_URL= https://you-domain.com LOG_CHANNEL=stack # 数据库配置 DB_CONNECTION=mysql DB_HOST=db DB_PORT=3306 DB_DATABASE=dujiaoka DB_USERNAME=dujiaoka DB_PASSWORD=YOU-PASSWORD # redis配置 REDIS_HOST=redis REDIS_PASSWORD= REDIS_PORT=6379 BROADCAST_DRIVER=log SESSION_DRIVER=file SESSION_LIFETIME=120 # 缓存配置 CACHE_DRIVER=redis # 异步消息队列 QUEUE_CONNECTION=redis # 后台语言 ## zh_CN 简体中文 ## zh_TW 繁体中文 ## en 英文 DUJIAO_ADMIN_LANGUAGE=zh_CN # 后台登录地址 ADMIN_ROUTE_PREFIX=/admin
可以直接使用我这个配置,但注意修改下面 3 个参数的值:
- APP_NAME=洛溪商店
- APP_URL=https://you-domain.com
- DB_PASSWORD=YOU-PASSWORD
其他保持不变即可
创建容器
- docker-compose up -d
- docker ps查看容器
- docker logs 容器 id或名称,查看日志
- docker-compose down停止容器
创建好容器之后,使用 nginx反向代理一下56789端口,此时将用到 https证书,下面申请一下证书
cloudflare获取https证书
1、左侧点击 SSL/TLS -》源服务器-》创建证书
注意⚠️:只有域名托管在 cloudflare上,并且 dns解析开启小云朵才能使用,源证书仅对 Cloudflare 与源服务器之间的加密有效。
2、证书有效期根据需要选择,我这里选择了最长 15 年,其他保持默认,点击创建
3、将证书密钥和私钥保存到文件中
进入cd /etc/nginx/cert目录
将下面的密钥保存到 以.pem结尾的文件中, 如 dujiaoka.pem
将下面的私钥保存到以.key结尾的文件中,如dujiaoka.key
ngxin配置域名
进入cd /etc/nginx/conf.d
新增以.conf结尾配置文件
例如 vim shop.zhpengfei.com.conf
复制下面内容,粘贴进去,并保存
server{ listen 80; server_name your-domain.com; return 301 https://your-domain.com$request_uri; } server{ listen 443 ssl http2; server_name your-domain.com; access_log logs/access.log; error_log logs/error.log; index index.html index.html index.php default.htm default.php; ssl_certificate cert/dujiaoka.pem; ssl_certificate_key cert/dujiaoka.key; ssl_session_timeout 10m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location ^~ / { proxy_pass http://127.0.0.1:56789; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; add_header X-Cache $upstream_cache_status; proxy_set_header Accept-Encoding ""; sub_filter "http://" "https://"; sub_filter_once off; } }
接下来使用下面 sed命令,一键替换配置文件中your-domain.com
注意:将shop.zhpengfei.com 替换为你的域名
sed -i 's/your-domain.com/shop.zhpengfei.com/g' shop.zhpengfei.com.conf
重新加载 nginx,使域名生效
systemctl reload nginx
cloudflare解析域名
DNS 添加记录:
- 类型选择A
- 名称:填写 shop
- IPv4 地址:填写购买的服务器 ip
- 代理状态:开启
最后最后保存即可
保存之后就可以在浏览器中输入域名https://shop.zhpengfei.com进行网页安装独角卡了
浏览器中完整独角数卡安装
访问配置好的域名进行安装:
- 将
MySQL
的地址改为db
- 将
MySQL
的用户名改为dujiaoka
- 将
Redis
的地址改为redis
- 填写网站名称修改为你的
- 填写网站
url
地址,例如 https://shop.zhpengfei.com
最后点击安装即可
安装成功后,还需要最后的设置,
将docker-compose.yml
中的INSTALL
改为false
将env.conf中的APP_DEBUG改为 false
停止容器
docker-compose down
将docker-compose.yml
中的INSTALL
改为false
重新启动容器
docker-compose up -d
后台登录账号和密码均为 admin,及时登录修改
修改admin密码
登录成功后,右上角点击头像-设置进行密码修改
在左侧配置-支付配置,如下图所示,支持支付宝、微信、PayPal、usdt、易支付等
我这边开通了支付宝当面付、usdt、易支付支付宝,下面打算出几篇对详细说明这三种支付方式怎么申请设置。