Skill Hub(Next.js + SQLite/Drizzle)部署到自建服务器。
- 主机:
23.94.52.10(Ubuntu 24.04,root) - Node v24 / npm 11、Docker、Caddy(已在跑 80/443)
- 部署目录:
/var/www/skill-hub(nextjs/与categories/平级) - Caddy 已配置
skill.442595.xyz → 127.0.0.1:3000,无需改动
/var/www/skill-hub/
├── nextjs/ # Next.js 应用
└── categories/ # 数据源 JSON(seed 读取 ../categories)
seed 脚本从仓库根的 categories/*/skills.json 读数据写入 nextjs/data/skills.db。
代码已在 https://github.com/rdone4425/skill.git(分支 main)。服务器上直接拉取构建:
cd /var/www/skill-hub
git pull origin main # 或首次 clone
cd nextjs
npm install # 装依赖(含 better-sqlite3 原生模块)
npx tsx scripts/seed.ts # 生成 data/skills.db(7207 skills / 22 分类)
NODE_OPTIONS=--max-old-space-size=1024 npx next build # 内存紧,限堆防 OOMnpm install -g pm2
cd /var/www/skill-hub/nextjs
pm2 start "npx next start -p 3000" --name skill-hub
pm2 save
pm2 startup systemd -u root --hp /root
# 上一条会打印一行 sudo env PATH=... 的命令,复制并再执行一次以设置开机自启curl -I http://127.0.0.1:3000 # 期望 200
pm2 status # skill-hub 应为 online然后访问 https://skill.442595.xyz —— 502 会变为正常页面。
cd /var/www/skill-hub && git pull origin main
cd nextjs && npm install
npx tsx scripts/seed.ts # 数据有变动时才需要
NODE_OPTIONS=--max-old-space-size=1024 npx next build
pm2 restart skill-hub- 内存紧张:仅 2.4G,已扩 swap 到 3.2G。build 时用
--max-old-space-size=1024防 OOM。 - 数据库不入库:
data/skills.db由 seed 生成,已在.gitignore排除,服务器上重新 seed。 - 详情页路由:用自增 id(
/skill/[id]),因为 skill name 不唯一。