一、加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 面板。
评论区