Payload CMS是一款开源的无头内容管理系统和应用框架,基于TypeScript和Next.js开发,以MIT协议开源,完全免费商用。Payload CMS诞生于2021年,是增长最快的开源无头CMS之一。它采用代码优先(Config-as-Code)的设计理念,通过TypeScript配置文件定义内容模型,自动生成REST和GraphQL API、管理后台、认证系统。Payload适合开发者构建现代Web应用、内容管理系统、SaaS平台、电商后端。
核心优势:TypeScript原生支持、代码优先配置、Next.js集成、自动生成REST和GraphQL API、内置认证和权限管理、灵活的字段类型、本地文件上传、Docker部署、完全免费商用(MIT协议)、开发者体验极佳。Payload是现代TypeScript开发者首选的无头CMS。
环境要求
- 操作系统:Linux(Ubuntu/Debian/CentOS)、Windows、macOS
- Node.js版本:Node.js 18.x 或 20.x(Payload 3.x推荐Node 20 LTS)
- 数据库:MongoDB 4.4+ / PostgreSQL 14+ / MySQL 8+ / SQLite
- 内存:最低1GB,推荐2GB以上(构建和运行需要)
- 磁盘:至少2GB可用空间
- Web服务器:Nginx(用于反向代理,可选)
- npm/yarn/pnpm:包管理器
- Docker:可选,推荐使用Docker部署
安装教程
方式一:使用create-payload-app创建项目
步骤1:安装Node.js
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs
node --version
npm --version
步骤2:创建Payload项目
cd /opt
npx create-payload-app@latest payload-app
# 按照提示选择:
# - 项目名称
# - 模板(blank / website / ecommerce等)
# - 数据库类型(MongoDB / PostgreSQL / SQLite)
# - 数据库连接信息
cd payload-app
步骤3:启动开发服务器
npm run dev
Payload默认运行在3000端口,访问 http://localhost:3000/admin 创建管理员账号。
方式二:Docker部署(推荐生产环境)
步骤1:创建Dockerfile
cd /opt/payload-app
cat > Dockerfile << 'EOF'
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY package*.json ./
RUN npm ci --omit=dev
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/public ./public
COPY --from=builder /app/build ./build
EXPOSE 3000
CMD ["node", "dist/server.js"]
EOF
步骤2:创建docker-compose.yml
cat > docker-compose.yml << 'EOF'
version: "3.8"
services:
payload:
build: .
ports:
- "3000:3000"
environment:
- PAYLOAD_SECRET=your-secret-key
- MONGODB_URI=mongodb://mongo:27017/payload
- NEXT_PUBLIC_SERVER_URL=http://localhost:3000
depends_on:
- mongo
restart: unless-stopped
mongo:
image: mongo:6
volumes:
- ./mongo-data:/data/db
restart: unless-stopped
EOF
步骤3:构建并启动
docker compose up -d --build
docker compose ps
步骤4:Nginx反向代理配置
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:3000;
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;
}
}
步骤5:登录管理后台
访问 http://yourdomain.com/admin,首次访问创建管理员账号。Payload后台功能包括:内容管理、集合管理、媒体管理、用户管理、角色权限、API文档等。
Windows环境安装
- 从Node.js官网(https://nodejs.org)下载LTS版本安装
- 安装MongoDB Community Server(https://www.mongodb.com/try/download/community)或使用Docker Desktop
- 打开命令提示符,执行:
npx create-payload-app@latest payload-app - 按照提示选择模板和数据库配置
- 进入项目目录,执行
npm run dev启动开发服务器 - 浏览器访问http://localhost:3000/admin创建管理员账号
宝塔面板安装(推荐)
- 安装宝塔面板,登录后在软件商店安装"PM2管理器"和"MongoDB"(或PostgreSQL)
- 通过PM2管理器安装Node.js 20
- 在终端执行:
cd /www/wwwroot && npx create-payload-app@latest yourdomain.com - 按照提示配置数据库连接和管理员账号
- 在PM2管理器中添加项目,启动文件为dist/server.js
- 在宝塔面板添加站点,配置Nginx反向代理到3000端口
- 配置SSL证书,访问域名/admin登录后台
服务器配置建议
- 内存:建议2GB以上,Payload构建过程需要较多内存
- Node.js:使用LTS版本(18.x/20.x)
- 数据库:生产环境推荐MongoDB 6或PostgreSQL 15
- 构建内存:构建时设置
NODE_OPTIONS=--max-old-space-size=4096 - 使用PM2或Docker管理进程
- Nginx:启用gzip压缩,配置静态资源缓存
- 配置文件存储(本地或S3兼容存储)
- 定期备份数据库和media目录
- 生产环境设置PAYLOAD_SECRET为随机字符串
常见问题
Q:构建失败,提示内存溢出?
A:增加Node.js内存限制:NODE_OPTIONS=--max-old-space-size=4096 npm run build。确保服务器内存至少2GB。
Q:如何定义内容模型?
A:在src/collections目录下创建TypeScript配置文件,定义集合名称、字段、权限等。Payload会根据配置自动生成API和管理界面。
Q:API返回403或CORS错误?
A:在Payload配置中设置CORS允许的域名,检查集合的访问权限设置(create/read/update/delete)。
Q:忘记管理员密码?
A:在项目中创建重置脚本,使用Payload的find和update操作更新用户密码哈希,或直接在数据库中修改用户记录的password字段。
官方网址
Payload CMS官网地址:https://payloadcms.com