PocketBase 轻量后端搭建教程

PocketBase 是一个用 Go 语言编写的开源后端,只需一个可执行文件就能运行,内置 SQLite 数据库、用户认证、文件存储、实时订阅和管理面板。对于个人项目、原型开发或中小型应用来说,PocketBase 是一个极其简洁高效的后端选择。本文将介绍如何在搬瓦工 VPS 上部署 PocketBase。

一、系统要求

  • 操作系统:任何 Linux 发行版(Ubuntu、Debian、CentOS 等)。
  • 内存:512MB 即可运行,1GB 更佳。
  • 磁盘:PocketBase 本身不到 50MB,数据空间取决于应用需求。
  • 架构:x86_64(搬瓦工所有方案均支持)。

PocketBase 是单文件二进制程序,不需要安装 Docker 或其他依赖,部署极其简单。

二、下载安装

创建项目目录并下载 PocketBase:

mkdir -p /opt/pocketbase
cd /opt/pocketbase

# 下载最新版本(请替换为实际最新版本号)
wget https://github.com/pocketbase/pocketbase/releases/download/v0.22.0/pocketbase_0.22.0_linux_amd64.zip
unzip pocketbase_0.22.0_linux_amd64.zip
chmod +x pocketbase
rm pocketbase_0.22.0_linux_amd64.zip

三、首次启动

直接运行 PocketBase:

./pocketbase serve --http="0.0.0.0:8090"

PocketBase 会自动创建数据库文件和必要的目录结构。访问 http://your-server-ip:8090/_/ 进入管理面板,首次访问需要创建管理员账户。

四、配置 Systemd 服务

为了让 PocketBase 在后台运行并开机自启,创建 systemd 服务:

cat > /etc/systemd/system/pocketbase.service <<'EOF'
[Unit]
Description=PocketBase Backend
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/pocketbase
ExecStart=/opt/pocketbase/pocketbase serve --http="0.0.0.0:8090"
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable pocketbase
systemctl start pocketbase

查看服务状态:

systemctl status pocketbase

五、Docker 部署(可选)

如果你更喜欢 Docker 方式部署,也可以使用 Docker:

mkdir -p /opt/pocketbase/pb_data

cat > /opt/pocketbase/docker-compose.yml <<'EOF'
version: '3.8'

services:
  pocketbase:
    image: ghcr.io/muchobien/pocketbase:latest
    restart: always
    ports:
      - "8090:8090"
    volumes:
      - /opt/pocketbase/pb_data:/pb/pb_data
      - /opt/pocketbase/pb_public:/pb/pb_public
EOF

cd /opt/pocketbase
docker compose up -d

六、配置 Nginx 反向代理

apt install nginx certbot python3-certbot-nginx -y

cat > /etc/nginx/sites-available/pocketbase <<'EOF'
server {
    listen 80;
    server_name pb.yourdomain.com;

    client_max_body_size 50M;

    location / {
        proxy_pass http://127.0.0.1:8090;
        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;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
EOF

ln -s /etc/nginx/sites-available/pocketbase /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d pb.yourdomain.com

七、数据集合管理

PocketBase 通过"集合"(Collection)来组织数据,类似于数据库中的表。在管理面板中可以方便地创建和管理集合:

  • Base 集合:标准的数据表,用于存储业务数据。
  • Auth 集合:内置用户认证功能的集合,包含邮箱、密码等字段。
  • View 集合:基于 SQL 查询的只读视图。

每个集合支持的字段类型包括:Text、Number、Bool、Email、URL、Date、Select、Relation、File 等。

八、API 使用

PocketBase 自动为每个集合生成 CRUD API。以 JavaScript SDK 为例:

# 安装 SDK
npm install pocketbase
import PocketBase from 'pocketbase';

const pb = new PocketBase('https://pb.yourdomain.com');

// 用户认证
await pb.collection('users').authWithPassword('user@example.com', 'password');

// 查询数据
const records = await pb.collection('posts').getList(1, 20, {
    sort: '-created',
    filter: 'status = "published"'
});

// 创建数据
const record = await pb.collection('posts').create({
    title: 'Hello World',
    content: 'My first post',
    status: 'published'
});

// 实时订阅
pb.collection('posts').subscribe('*', function (e) {
    console.log(e.action, e.record);
});

九、数据备份

PocketBase 使用 SQLite 数据库,所有数据存储在 pb_data 目录中。备份非常简单:

# 备份数据库和上传文件
tar -czf /opt/pocketbase/backup_$(date +%Y%m%d).tar.gz /opt/pocketbase/pb_data/

PocketBase 还提供了内置的备份 API,可以通过管理面板或 API 创建备份快照。

设置自动备份:

cat > /opt/pocketbase/backup.sh <<'EOF'
#!/bin/bash
BACKUP_DIR="/opt/pocketbase/backups"
mkdir -p $BACKUP_DIR
DATE=$(date +%Y%m%d_%H%M%S)
tar -czf $BACKUP_DIR/pb_backup_$DATE.tar.gz /opt/pocketbase/pb_data/
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
EOF
chmod +x /opt/pocketbase/backup.sh
echo "0 3 * * * /opt/pocketbase/backup.sh" | crontab -

十、升级 PocketBase

cd /opt/pocketbase
systemctl stop pocketbase

# 备份当前版本
cp pocketbase pocketbase.bak

# 下载新版本
wget https://github.com/pocketbase/pocketbase/releases/download/vX.X.X/pocketbase_X.X.X_linux_amd64.zip
unzip -o pocketbase_X.X.X_linux_amd64.zip
chmod +x pocketbase

systemctl start pocketbase

PocketBase 会自动执行数据库迁移。

十一、常见问题

端口被占用

如果 8090 端口被占用,可以更改启动端口:

./pocketbase serve --http="0.0.0.0:8091"

文件上传失败

检查 pb_data/storage 目录的权限,确保 PocketBase 进程有写入权限。同时检查 Nginx 的 client_max_body_size 配置。

总结

PocketBase 是目前最轻量的自托管后端方案之一,单文件部署、零依赖、资源占用极低,非常适合在搬瓦工 VPS 上运行。即使是最低配的 512MB 内存方案也能流畅运行 PocketBase。更多后端部署教程请参考:Appwrite 部署Supabase 部署Directus 部署。选购搬瓦工 VPS 请参考全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的循环折扣。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。