前言

本文主要介绍独角数卡的搭建和记录遇到的一些问题,持续更新。

🦄独角数卡(自动售货系统)- 开源式站长自动化售货解决方案、高效、稳定、快速!🚀🚀🎉🎉

写本文的原因主要是目前网上关于独角数卡的教程实在是太少,而且都是复制来复制去,基本没有任何参考价值。所以在该篇文章中介绍我写的关于独角数卡的 Docker 镜像,以及其一键搭建过程和 Nginx 的一些设置。

Docker 会随独角数卡仓库自动更新,可以配合 WatchTower 食用,喜欢的点点 star 吧~

独角数卡官方出了 Docker 镜像,但是写的甚是简陋,目前还是推荐我这个。

这里提醒以下,本镜像默认使用原版仓库无任何修改。

搭建过程

Docker 安装

参考 该教程 ,安装好Dockerdocker-compose

独角数卡搭建

预创建文件夹

mkdir Shop && cd Shop
mkdir storage uploads
chmod 777 storage uploads

BASH

❗注意此处文件夹权限一定要给!

编辑docker-compose.yaml

version: "3"

services:
  faka:
    image: ghcr.io/apocalypsor/dujiaoka:latest
    
    container_name: faka
    environment:
        
        - INSTALL=true
        
    volumes:
      - ./env.conf:/dujiaoka/.env
      - ./uploads:/dujiaoka/public/uploads
      - ./storage:/dujiaoka/storage
    ports:
      - 127.0.0.1:56789:80
    restart: always
 
  db:
    image: mariadb:focal
    container_name: faka-data
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=<ROOT_PASSWORD>
      - MYSQL_DATABASE=dujiaoka
      - MYSQL_USER=dujiaoka
      - MYSQL_PASSWORD=<DB_PASSWORD>
    volumes:
      - ./data:/var/lib/mysql

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

YAML

❗注意:

  • 自行将形如 <foobar> 的变量替换为自己的信息,以下的替换要与 docker-compose.yaml 文件中相同

如果需要每次启动容器都运行某些命令,例如修改某个文件,则 faka 需进行如下映射:

- ./start-hook.sh:/dujiaoka/start-hook.sh

YAML

start-hook.sh需要提前创建并写好,例如:

#!/bin/sh

echo "Executing start-hook ..."


cp -f /dujiaoka/resources/views/luna/layouts/_notice_xs.blade.php /dujiaoka/resources/views/luna/layouts/_notice.blade.php

BASH

以及 TG 网友 Sir Wang 提供了一些其他的自定义修改:


- ./favicon.ico:/dujiaoka/public/favicon.ico:ro
- ./favicon.ico:/dujiaoka/public/assets/style/favicon.ico:ro


- ./default.png:/dujiaoka/public/assets/common/images/default.jpg:ro


- ./background.png:/dujiaoka/public/assets/luna/img/background.png:ro

YAML

编辑 .env 文件

我这里把它创建为env.conf

APP_NAME=<YOUR_APP_NAME>
APP_ENV=local
APP_KEY=<YOUR_APP_KEY>
APP_DEBUG=false
APP_URL=<YOUR_APP_URL>


LOG_CHANNEL=stack


DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=dujiaoka
DB_USERNAME=dujiaoka
DB_PASSWORD=<DB_PASSWORD>


REDIS_HOST=redis
REDIS_PASSWORD=
REDIS_PORT=6379

BROADCAST_DRIVER=log
SESSION_DRIVER=file
SESSION_LIFETIME=120





CACHE_DRIVER=redis




QUEUE_CONNECTION=redis





DUJIAO_ADMIN_LANGUAGE=zh_CN


ADMIN_ROUTE_PREFIX=/admin

INI

如果没有特殊需求可以直接用我上面给的文件,并替换形如 <foobar> 的变量即可。有其他问题可以参考dujiaoka/.env.example

❗注意环境变量如果写的不对可能导致 500,可以开 APP_DEBUG=true 看看具体是哪里写错了。

Epusdt

Epusdt (Easy Payment Usdt) 是独角数卡官方的开源 USDT 支付中间件 (TRC20 网络),实测下来 非常好用, 推荐!

如果要添加 USDT 收款,需要在 docker-compose.yaml 中添加以下项:

usdt:
  image: ghcr.io/apocalypsor/dujiaoka:usdt
  
  container_name: faka-usdt
  restart: always
  volumes:
    - ./usdt.conf:/usdt/.env
  ports:
    - 127.0.0.1:51293:8000

YAML

同时要在目录下提前编辑好 usdt.conf 配置文件,参考 文档 参考配置

其中 51293 端口也最好反代,建议 Epusdt 用单独的域名。

启动服务

最后就是愉快的一键运行啦:

这样独角数卡就会在本地运行起来。

如果仅需要 HTTP 的话 可以将 docker-compose.yaml127.0.0.1:56789改成 80 即可,不需要再用 Nginx 反代!

否则建议在宿主端用 Nginx 反代来实现 HTTPS。

反代时建议使用以下配置:



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;
}

NGINX

其中以下几行尤为重要,否则会在 HTTPS 中遇到许多问题!

proxy_set_header X-Forwarded-Proto $scheme;
sub_filter "http://" "https://";
sub_filter_once off;

NGINX

对于使用 NPM 的用户,实测下来直接创建网站反代就可以了,不用进行额外的修改!

网页端安装

网页端安装时数据库的 host 填 db,端口保持默认。

还需要注意的是,首次进入安装并完成后,需要将 docker-compose.yaml 环境变量中的 INSTALL=true 改为INSTALL=false,然后运行以下命令使其生效:

docker-compose down && docker-compose up -d

BASH

对于 Epusdt 支付方式的添加可以参考我的配置以及 文档

dujiaoka-epusdt

常见问题

作者 灰武士