教程·阅读约 2 分钟·
Appwrite 开源 BaaS 平台自托管指南

Appwrite 开源 BaaS 平台自托管指南

Firebase 的开源替代品,支持多平台 SDK、云函数和实时数据库。Docker 一键部署,数据完全自主。

原文来源:Appwrite — 开源后端即服务平台,支持 Web、移动端和 Flutter,提供数据库、认证、存储、云函数和实时订阅。

Appwrite 是另一个 Firebase 的开源替代方案,和 Supabase 相比更强调多平台支持。它原生支持 Web、iOS、Android、Flutter 和 React Native,适合需要跨平台一致体验的团队。

Appwrite 是什么

Appwrite 提供了一整套后端服务:

数据库 — 基于 MariaDB 的文档数据库,支持复杂查询和关系。

认证 — 邮箱、OAuth、Magic Link、匿名登录、手机号验证。

存储 — 文件上传下载,带缩略图生成和权限控制。

云函数 — 支持多种运行时(Node.js、Python、PHP、Ruby、Dart),响应事件或定时触发。

实时订阅 — 数据库和存储变化实时推送到客户端。

多平台 SDK — Web、Flutter、iOS、Android、React Native 都有官方 SDK。

Docker 部署

code
docker run -it --rm \
  --volume /var/run/docker.sock:/var/run/docker.sock \
  --volume appwrite:/usr/src/code/appwrite:rw \
  --entrypoint="install" \
  appwrite/appwrite:latest

或者用 Docker Compose:

code
version: '3'
services:
  appwrite:
    image: appwrite/appwrite:latest
    ports:
      - 80:80
      - 443:443
    volumes:
      - appwrite:/usr/src/code/appwrite
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - _APP_ENV=production
      - _APP_OPENSSL_KEY_V1=your-secret-key

访问 http://localhost 进入控制台。

数据库操作

创建集合和文档

code
import { Client, Databases } from 'appwrite'
 
const client = new Client()
  .setEndpoint('http://localhost/v1')
  .setProject('your-project-id')
 
const databases = new Databases(client)
 
// 创建文档
await databases.createDocument(
  'database-id',
  'collection-id',
  'unique-id',
  { title: 'Hello', content: 'World' }
)
 
// 查询
const docs = await databases.listDocuments(
  'database-id',
  'collection-id',
  [Query.equal('title', 'Hello')]
)

认证

code
import { Account } from 'appwrite'
 
const account = new Account(client)
 
// 注册
await account.create('unique-id', 'user@example.com', 'password', 'User Name')
 
// 登录
await account.createEmailPasswordSession('user@example.com', 'password')
 
// OAuth
await account.createOAuth2Session('github', 'http://localhost/success', 'http://localhost/failure')

云函数

创建函数

code
// Node.js 云函数示例
module.exports = async function (req, res) {
  const payload = JSON.parse(req.payload)
  
  // 你的业务逻辑
  const result = await processData(payload)
  
  res.json({ success: true, data: result })
}

部署到 Appwrite 后,可以通过 HTTP 触发、定时触发或事件触发。

与 Supabase 对比

维度AppwriteSupabase
数据库MariaDB(文档型)PostgreSQL(关系型)
多平台 SDK更丰富较少
云函数多运行时Edge Functions(Deno)
实时能力
自托管难度中等中等
控制台体验功能丰富简洁

Appwrite 更适合跨平台移动应用,Supabase 更适合需要关系型数据库的 Web 应用。

总结

Appwrite 是多平台开发团队的实用选择。它的 Flutter 和 React Native SDK 尤其成熟,如果你正在用这些框架开发移动应用,Appwrite 的后端服务可以显著减少开发时间。自托管模式也让数据主权完全掌握在自己手中。

分享到
微博Twitter

© 2026 四月 · CC BY-NC-SA 4.0

原文链接:https://aprilzz.com/tutorials/appwrite-open-source-baas