搭建 – 卡密 – 独角数卡Next

Golang
使用 gvm(推荐开发者)
- 先装基础工具:
- GVM(GVM)官方安装脚本:
- 加载环境变量
建议加到 ~/.bashrc:
- 安装 Go
- ⚠️ 第一次安装必须先装一个“bootstrap”版本:
- 👉 然后安装你需要的版本(比如 Go 1.22):
- 验证
sudo apt update
sudo apt install -y curl git mercurial make binutils bison gcc build-essential
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
source ~/.gvm/scripts/gvm
gvm install go1.20.6
gvm install go1.22.6
gvm install go1.25.3
gvm use go1.25.3 --default
go version
gvm list
Nodejs
# Download and install n and Node.js:
curl -fsSL https://raw.githubusercontent.com/mklement0/n-install/stable/bin/n-install | bash -s 25
# Node.js already installs during n-install, but you can also install it manually:
# n install 25
# Verify the Node.js version:
node -v # Should print "v25.9.0".
# Verify npm version:
npm -v # Should print "11.12.1".
独角数卡Next手动部署
获取源码
mkdir dujiao-next && cd dujiao-next
# API(主项目)
git clone https://github.com/dujiao-next/dujiao-next.git api
# User(用户前台)
git clone https://github.com/dujiao-next/user.git user
# Admin(后台)
git clone https://github.com/dujiao-next/admin.git admin
后端 API 部署
安装依赖并构建
cd api
go mod tidy
go build -o dujiao-api ./cmd/server
配置文件
cp config.yml.example config.yml
# 按实际环境修改 config.yml
关键项至少要确认:
server.mode(debug/release)database.driver/database.dsnjwt.secret/user_jwt.secretredis、queue、email(按需启用)
⚠️ 重要安全提醒:上线前必须修改
jwt.secret与user_jwt.secret,并使用至少 32 位高强度随机字符串。严禁使用模板默认值,否则可能导致 Token 可伪造,存在严重安全风险。
初始化数据(可选)
go run ./cmd/seed
运行 API
./dujiao-api
默认监听:http://0.0.0.0:8080
默认后台管理员账号(首次初始化)
当数据库中 admins 表为空时,系统会在 API 首次启动时尝试创建默认管理员:
- 默认账号:
admin - 默认密码:
admin123
强烈建议:首次登录后台后,立刻在“后台 -> 修改密码”中更换为强密码。
说明:
- 你可以在启动 API 前设置环境变量覆盖默认值:
DJ_DEFAULT_ADMIN_USERNAMEDJ_DEFAULT_ADMIN_PASSWORD
- 若
server.mode=release且未设置DJ_DEFAULT_ADMIN_PASSWORD,系统会跳过默认管理员初始化(不会自动创建admin/admin123)。
用户前台 User 部署
安装依赖与构建
cd ../user
npm install
npm run build
构建产物目录:user/dist
运行方式
你可以选择:
- 用 Nginx 托管
user/dist - 或临时使用
npm run preview验证
后台 Admin 部署
安装依赖与构建
cd ../admin
npm install
npm run build
构建产物目录:admin/dist
运行方式
你可以选择:
- 用 Nginx 托管
admin/dist(建议绑定/admin路径) - 或临时使用
npm run preview验证
Nginx 反向代理配置
User 与 Admin 前端各自通过 /api、/uploads 路径反向代理到 API 服务(127.0.0.1:8080),需分别配置两个域名。
分域名部署示例
- 前台:
user.example.com→user/dist - 后台:
admin.example.com→admin/dist
server {
listen 80;
server_name shop.dashenk.com;
return 301 https://$host$request_uri;
}
server {
listen 80;
server_name shopadmin.dashenk.com;
return 301 https://$host$request_uri;
}
# 前台 User
server {
listen 443 ssl;
server_name shop.dashenk.com;
root /var/www/dujiao-next/user/dist;
index index.html;
ssl_certificate /etc/ssl/cf/dashenk.com.crt;
ssl_certificate_key /etc/ssl/cf/dashenk.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://127.0.0.1:8080/api/;
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 X-Forwarded-Proto $scheme;
}
location /uploads/ {
proxy_pass http://127.0.0.1:8080/uploads/;
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 X-Forwarded-Proto $scheme;
}
}
# 后台 Admin
server {
listen 443 ssl;
server_name shopadmin.dashenk.com;
root /var/www/dujiao-next/admin/dist;
index index.html;
ssl_certificate /etc/ssl/cf/dashenk.com.crt;
ssl_certificate_key /etc/ssl/cf/dashenk.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://127.0.0.1:8080/api/;
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 X-Forwarded-Proto $scheme;
}
location /uploads/ {
proxy_pass http://127.0.0.1:8080/uploads/;
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 X-Forwarded-Proto $scheme;
}
}
启停与升级建议
- API 建议使用
systemd/supervisor托管 - 发布时按顺序执行:
- 停止 API
- 更新代码并重新构建
- 替换
user/dist、admin/dist - 启动 API
- 检查健康接口:
GET /health
创建 systemd 服务文件
- /etc/systemd/system/dujiao-api.service
[Unit]
Description=Dujiao Next API Service
After=network.target
[Service]
Type=simple
WorkingDirectory=/var/www/dujiao-next/api
ExecStart=/var/www/dujiao-next/api/dujiao-api
Restart=always
RestartSec=3
Environment=PORT=8080
Environment=GIN_MODE=release
StandardOutput=journal
StandardError=journal
LimitNOFILE=65535
MemoryMax=300M
CPUQuota=80%
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
启动命令
systemctl daemon-reload
systemctl start dujiao-api
systemctl status dujiao-api
systemctl enable dujiao-api
journalctl -u dujiao-api -f
安装redis 使用podman-compose
version: "3.9"
services:
redis:
image: docker.io/library/redis:7.2
container_name: redis-1c1g
restart: unless-stopped
ports:
- "6379:6379"
volumes:
- ./redis.conf:/usr/local/etc/redis/redis.conf:ro
- redis-data:/data
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
# 💡 1G机器核心限制
mem_limit: 512m
cpus: 0.8
ulimits:
nofile:
soft: 65535
hard: 65535
environment:
- TZ=Asia/Shanghai
volumes:
redis-data:
redis配置文件
########################################
# 基础配置
########################################
bind 0.0.0.0
protected-mode yes
port 6379
# 改成你的密码(必须改)
requirepass yourpassword
daemonize no
supervised no
########################################
# 🔥 内存核心配置(关键)
########################################
# 1G机器建议:300~450MB之间
maxmemory 400mb
# 缓存策略(强烈推荐)
maxmemory-policy allkeys-lru
# 内存碎片优化
activedefrag yes
########################################
# 💾 持久化(轻量模式)
########################################
# ❗关闭RDB(省CPU + IO)
save ""
# 开启AOF(轻量持久化)
appendonly yes
appendfsync everysec
# 避免rewrite卡顿
no-appendfsync-on-rewrite yes
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
########################################
# 🚀 性能优化
########################################
tcp-keepalive 300
timeout 0
# 限制客户端(防止爆)
maxclients 1000
########################################
# 📉 日志(轻量)
########################################
loglevel notice
logfile ""
########################################
# 🧠 内存碎片控制(关键优化)
########################################
hz 10
dynamic-hz yes
########################################
# 🧹 安全/稳定
########################################
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
########################################
# 🔒 保护性配置
########################################
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
📌 版权声明
文章作者:大神K
版权说明:本文为原创内容,转载请注明出处。