目 录CONTENT

文章目录

【Docker-dujiao-next】搭建独脚数卡-next 发卡网,开一个自己的小店

JIN
JIN
2026-04-05 / 0 评论 / 0 点赞 / 5 阅读 / 0 字
广告 广告

一、加SWAP(新手忽略)

注意:此步骤新手可直接跳过,直接进行第二步

若服务器内存 ≤ 1G 可添加 swap虚拟内存,一般为内存的 1-2 倍即可

设置 SWAP 可以用脚本:

wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh

填写18后,选择1,填写2048或者1024,然后回车


二、更新工具

2.1、切换到 root 用户
sudo -i
2.2、升级 packages
apt update -y
2.3、安装常用的工具
apt install wget curl sudo vim git -y

这些工具用于:

工具 作用
wget 下载文件
curl 网络请求
vim 文本编辑
git 下载项目

三、安装 Docker 环境(非大陆)

此步为非大陆vps安装docker的步骤,
大陆服务器的 三、四 步骤请划至最下面 1.7、补充

3.1、安装
curl -fsSL https://get.docker.com | bash
3.2、查看 docker 版本
docker -v  

如果出现类似:

Docker version 22.xx

说明安装成功。

3.3、设置开机自动启动
systemctl enable docker  

四、安装 Docker-compose(非大陆)

4.1、安装 compose 插件
apt install docker-compose-plugin -y

Docker Compose 用于 管理多个容器服务

例如这些都可以通过一个配置文件统一启动。

Halo
MySQL
Redis

4.2、查看版本
docker compose version  #查看 docker compose 版本
4.3、修改 Docker 配置(可选,新手忽略并跳过此步)

增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘

cat > /etc/docker/daemon.json <<EOF
{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "20m",
        "max-file": "3"
    },
    "ipv6": true,
    "fixed-cidr-v6": "fd00:dead:beef:c0::/80",
    "experimental":true,
    "ip6tables":true
}
EOF
4.4、重启docker
systemctl restart docker

五、安装项目(独角数卡Next)

独角数卡 Next 是一款 轻量且现代化的个人发卡商城系统

我们将使用:Docker + SQLite + Redis部署。由于是前后端分离架构,一共会启动 4 个容器(API后端、User前台、Admin后台、Redis缓存)。

5.1、创建目录

mkdir -p /root/data/docker_data/dujiao-next/{config,data/db,data/uploads,data/logs,data/redis}

目录结构说明:

/root └─ data └─ docker\_data └─ dujiao-next ├─ config # API 配置文件 ├─ data │ ├─ db # SQLite 数据库文件存放处 │ ├─ uploads # 用户上传的图片存放处 │ ├─ logs # 后台运行日志存放处 │ └─ redis # 缓存数据存放处

5.2、进入目录

cd /root/data/docker_data/dujiao-next

5.3、赋予目录权限

chmod -R 0777 ./data/logs ./data/db ./data/uploads ./data/redis

注意: 此步骤极为关键,避免日志/数据库目录权限不足(API 容器默认非 root 用户),不执行会导致后续无法上传图片或系统报错。

5.4、准备 API 配置文件

下载官方模板:

curl -L https://raw.githubusercontent.com/dujiao-next/dujiao-next/main/config.yml.example -o ./config/config.yml

编辑配置文件:

nano ./config/config.yml

💡 Nano 编辑器高危安全修改提醒:

  • 找到 jwt.secret(后台管理员登录 Token)
  • 找到 user_jwt.secret(前台用户登录 Token)
  • 必须 将这两处默认值替换为你自己随机生成的长字符串(建议纯英文+数字,至少32位)。严禁使用模板默认值,否则后台可被黑客直接伪造进入。
  • 其他部分如 database: driver: sqlite 保持默认即可。

修改完成后,保存按 Ctrl + O,然后按 Enter 确认,退出按 Ctrl + X

5.5、编写环境变量 .env

nano .env

输入以下内容:

代码段

TAG=latest
TZ=Asia/Shanghai
API_PORT=8080
USER_PORT=8081
ADMIN_PORT=8082
REDIS_PORT=6379

# (需修改处 1/3 ) 默认管理员账号(仅首次初始化生效)
DJ_DEFAULT_ADMIN_USERNAME=123changename
# (需修改处 2/3 ) 默认管理员密码,请设置复杂密码
DJ_DEFAULT_ADMIN_PASSWORD=123changword1

# (需修改处 3/3 ) Redis 数据库密码,设置一段随机字符串即可
REDIS_PASSWORD=123changword2

保存按 Ctrl + O,然后按 Enter 确认,退出按 Ctrl + X

5.6、配置 docker-compose.yml

Bash

nano docker-compose.yml

输入:

YAML

services:
  redis:
    image: redis:7-alpine
    container_name: dujiaonext-redis
    restart: unless-stopped
    environment:
      REDIS_PASSWORD: ${REDIS_PASSWORD}
    command: ["redis-server", "--appendonly", "yes", "--requirepass", "${REDIS_PASSWORD}"]
    ports:
      - "${REDIS_PORT}:6379"
    volumes:
      - ./data/redis:/data
    healthcheck:
      test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"]
      interval: 10s
      timeout: 3s
      retries: 10
    networks:
      - dujiao-net

  api:
    image: dujiaonext/api:${TAG}
    container_name: dujiaonext-api
    restart: unless-stopped
    environment:
      TZ: ${TZ}
      DJ_DEFAULT_ADMIN_USERNAME: ${DJ_DEFAULT_ADMIN_USERNAME}
      DJ_DEFAULT_ADMIN_PASSWORD: ${DJ_DEFAULT_ADMIN_PASSWORD}
    ports:
      - "${API_PORT}:8080"
    volumes:
      - ./config/config.yml:/app/config.yml:ro
      - ./data/db:/app/db
      - ./data/uploads:/app/uploads
      - ./data/logs:/app/logs
    depends_on:
      redis:
        condition: service_healthy
    healthcheck:
      test: ["CMD", "wget", "-qO-", "http://127.0.0.1:8080/health"]
      interval: 10s
      timeout: 3s
      retries: 10
    networks:
      - dujiao-net

  user:
    image: dujiaonext/user:${TAG}
    container_name: dujiaonext-user
    restart: unless-stopped
    environment:
      TZ: ${TZ}
    ports:
      - "${USER_PORT}:80"
    depends_on:
      api:
        condition: service_healthy
    networks:
      - dujiao-net

  admin:
    image: dujiaonext/admin:${TAG}
    container_name: dujiaonext-admin
    restart: unless-stopped
    environment:
      TZ: ${TZ}
    ports:
      - "${ADMIN_PORT}:80"
    depends_on:
      api:
        condition: service_healthy
    networks:
      - dujiao-net

networks:
  dujiao-net:
    driver: bridge

保存按 Ctrl + O,然后按 Enter 确认,退出按 Ctrl + X

5.7、启动独角数卡Next

Bash

docker compose up -d

5.8、完成

此时理论上可通过浏览器 http://vps_ip:8081 访问前台,http://vps_ip:8082 访问后台。

注意: 由于独角数卡Next是前后端分离架构,直接通过 IP+端口 访问会导致页面能打开但接口数据与图片加载失败。 必须进行 域名反代 并将前端与后端 API 接口拼接绑定。请直接前往第六、七章进行进阶配置。


六、购买域名+域名托管

6.1、购买域名

刚开始测试可以只买 .top 后缀的,仅仅需要1美元1年(优惠码:rckin

可点击前往 namesilo 购买,点击链接购买我可以拿到一点奖励分成,感谢各位小伙伴的支持

购买教程:点击链接视频滑动到视频第3步即可:哔哩哔哩YouTube

6.2、域名托管到cloud flare

托管步骤点击视频链接 看7分05秒

cloud flare注册官网:

namesilo主页:


七、域名反代(安装Nginx)

7.1、安装 Nginx Proxy Manager

购买完域名和让域名托管在cloud flare后,现在开始给 VPS 安装 NPM 进行域名的反向代理。由于独角数卡Next需要前后台分域名部署,我们需要解析两个二级域名(如 shop.rckin.com 供用户访问,admin.rckin.com 供自己管理)。

7.1.1、创建文件夹目录
7.1.2、进入文件夹
7.1.3、配置
7.1.4、nano输入:
7.1.5、配置启动

7.2、打开 Nginx

此时我们可通过浏览器 http://vps_ip:81 访问 NPM 面板。

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
广告 广告

评论区