
记于 丙午年四月廿五 16:24
基于 Next.js 16 的 Markdown 内容管理系统,支持文档管理、在线编辑、多语言、深色模式、权限控制等功能。
# 安装依赖
npm install
# 开发服务器
npm run dev
# 构建生产版本
npm run build
# 启动生产服务
npm start
访问 http://localhost:3000 查看文档。
默认管理账号:admin / admin123
content/
docs/ # Markdown 文档文件 (en/zh)
categories.json # 分类排序配置
src/
app/
docs/ # 文档查看页面 (含 TOC、前后导航、版权)
admin/ # 管理后台
(dashboard)/ # 仪表盘、文档管理、用户管理、分类排序、修改密码
login/ # 登录页
api/ # API 路由 (auth/documents/search/categories)
components/
Sidebar.tsx # 前端侧边栏 (含版本号)
TableOfContents.tsx # 右侧目录导航
CodeBlock.tsx # 代码高亮
admin/ # 后台管理组件
lib/ # 工具库 (数据库、认证、文档读写)
| 功能 | 路径 |
|---|---|
| 仪表盘 | /admin |
| 文档管理 | /admin/documents |
| 新建文档 | /admin/documents/new |
| 分类排序 | /admin/categories |
| 用户管理 | /admin/users |
| 修改密码 | /admin/password |
# 克隆代码
git clone https://github.com/isaveall/world-knowledge.git
cd world-knowledge
npm install
npm run build
# 使用 PM2 守护进程
npm install -g pm2
pm2 start npm --name "world-knowledge" -- start
pm2 save
适用于生产服务器无 git 或需快速从开发机同步的场景。
# 1. 在开发机打包(排除 node_modules、构建产物、git 记录)
tar --exclude='node_modules' --exclude='.next' --exclude='.git' --exclude='.DS_Store' -czf world-knowledge.tar.gz .
# 2. 上传到服务器
scp world-knowledge.tar.gz root@your-server:/usr/share/nginx/html/
# 3. 在服务器上解压并部署
ssh root@your-server
rm -rf /usr/share/nginx/html/world-knowledge
cd /usr/share/nginx/html
tar xzf world-knowledge.tar.gz -C world-knowledge
rm world-knowledge.tar.gz
# 4. 确保 Node.js 版本 ≥ 18(建议 20+)
source ~/.nvm/nvm.sh
nvm install 20
nvm alias default 20
# 5. 安装依赖并构建
cd /usr/share/nginx/html/world-knowledge
npm ci
npm run build
# 6. PM2 启动
npm install -g pm2
pm2 start npm --name "world-knowledge" -- start
pm2 save
# 标准配置(端口 80/443)
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:3002;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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;
}
client_max_body_size 20m;
}
# 自定义端口配置(如 8443 映射到内部端口 3002)
server {
listen 8443;
server_name www.heyanper.top;
location / {
proxy_pass http://127.0.0.1:3002;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host:8443;
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;
}
client_max_body_size 20m;
}
npm install -g vercel
vercel --prod
注意:使用
better-sqlite3,Vercel 需要额外配置 Serverless Function。
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]
docker build -t world-knowledge .
docker run -d -p 3000:3000 --name wk world-knowledge
Copyright © 2026 iSaveall, 骏九文化 Inc.