返回项目目录
开源平台精选项目

Appwrite

集认证、数据库、存储、函数、实时和消息于一体的开源后端平台。

主要语言TypeScript
开源许可BSD-3-Clause
项目类型开源平台
维护状态活跃维护
OVERVIEW

项目概述

Appwrite 为 Web、移动端和服务端应用提供统一 API 与多语言 SDK,可直接使用 Appwrite Cloud,也能通过 Docker 自行托管完整后端。

Appwrite 是采用 BSD-3-Clause 许可证的开源 Backend-as-a-Service 平台。它把 Authentication、TablesDB、Storage、Functions、Realtime、Messaging 和 Sites 等能力放在统一项目、权限模型、Console、REST / GraphQL API 与多语言 SDK 中,让 Web、移动端和原生应用无需从零搭建常见后端基础设施。TablesDB 使用数据库、表、列和行组织结构化数据,并通过用户、团队、标签和角色权限控制访问;Functions 可由 HTTP、SDK、事件、Webhook 或 Cron 触发;Realtime 则通过 WebSocket 推送用户有权访问的资源变化。团队可以选择 Appwrite Cloud,也可以在支持 Docker 的环境中运行同一套自托管平台。

当前稳定版v1.9.6
数据 APITablesDB
部署方式Cloud / Self-hosted
FEATURES

主要特点

Appwrite 将应用后端常用的身份、数据、文件、计算、实时通信和消息投递整合为统一 API、SDK 与权限体系。

01

多方式身份认证

支持邮箱密码、Phone、Magic URL、Email OTP、OAuth、Anonymous、JWT、MFA 和 SSR Session,并通过 Account API 管理用户偏好与会话。

02

TablesDB 结构化数据

以数据库、表、列和行建模数据,支持查询、排序、分页、关系以及表级和行级权限,并通过统一 JSON API 访问。

03

细粒度权限体系

可向特定用户、团队、标签或角色授予 Read、Create、Update、Delete 权限,认证身份会自动参与资源授权。

04

对象存储

Bucket 和文件支持权限、预览、压缩、加密及多种存储适配器,自托管时可选择本地磁盘或 S3 兼容服务。

05

Realtime 订阅

通过 WebSocket 订阅 Auth、TablesDB、Storage 和 Function 事件,并只向当前会话推送有权限读取的资源。

06

多运行时 Functions

函数运行在隔离容器,可由 HTTP、SDK、平台事件、Webhook 或 Cron 调用,并支持环境变量、权限 Scope、日志和版本化部署。

07

Messaging

统一管理 Push、Email 和 SMS 的 Provider、Target、Topic、草稿和定时发送,适合通知、营销与安全消息。

08

多平台 SDK 与开放 API

为 Web、Flutter、Apple、Android、React Native、Node.js、Python、Deno、Go 等平台提供 SDK,同时开放 REST、GraphQL 和 Realtime API。

USE CASES

适用场景

适合希望快速交付 Web 或移动产品,同时保留自托管路径和多语言客户端支持的团队。

Web 与移动端 MVP

认证、数据、文件和 SDK 可以减少后端样板代码,让团队优先验证产品流程与用户体验。

会员与社区产品

Account、Team、Label、Permission、Realtime 和 Messaging 可组合账户、组织、关注、通知与在线互动。

内容和媒体应用

TablesDB 管理元数据,Storage 保存图片、视频和附件,Function 负责转码、审核或第三方处理。

实时协作工具

数据和文件事件可驱动聊天、任务状态、协作通知和实时列表,但高频协作仍需验证连接与事件配额。

事件驱动自动化

Functions 通过数据、用户、文件、Webhook 和定时事件执行邮件、同步、清理及外部 API 集成。

需要数据自主权的项目

Docker 自托管适合开发环境、合规或数据位置有明确要求的团队,但需要自行承担完整平台运维。

EVALUATION

优点与注意事项

技术选型不仅要看能力,也要理解它带来的团队成本。

主要优点

Appwrite 擅长的地方

  • 认证、数据、文件、函数、实时和消息共享统一项目、Console 与权限模型
  • Client SDK 和 Server SDK 覆盖多种 Web、移动、原生和后端语言
  • Appwrite Cloud 可快速启动,自托管又提供数据位置和基础设施控制权
  • 资源权限可直接关联用户、团队、标签和角色,适合多类应用访问模型
  • Functions 支持 HTTP、事件、Webhook 和 Cron,便于构建事件驱动后端
  • 开放 REST、GraphQL 与 Realtime API,客户端不必绑定单一框架

需要注意

采用前应考虑的问题

权限配置是首要安全边界

表、行、Bucket、文件和函数权限需要分别设计;公开 Role.any()、遗漏用户约束或在 Server SDK 中创建无预期权限的资源都可能造成越权。

Client 与 Server 凭证必须隔离

浏览器使用用户 Session,API Key 只能存在于可信服务器或 Function,并且必须限制 Scope、定期轮换和避免写入日志。

数据层是平台抽象

TablesDB 提供统一行模型和 Query API,但不像直接 PostgreSQL 那样开放完整 SQL、扩展、事务与查询计划能力,复杂数据需求应提前验证。

自托管是多服务运维

生产自托管需要负责数据库、队列、缓存、执行器、存储、代理、TLS、邮件、监控、备份、扩容和版本迁移,并不只是运行单个容器。

Schema 变更需要治理

数据库、表、列、索引和权限应通过 CLI、脚本或可审查流程同步到各环境,避免只在 Console 中手工修改造成漂移。

Realtime 会话变化需要重订阅

订阅使用创建时已有的用户会话;登录、退出或切换用户后应断开并重新创建受保护资源订阅。

Functions 有运行环境限制

冷启动、并发、Timeout、Runtime、依赖构建和日志隐私会影响生产行为,长任务应拆分或交给更合适的异步基础设施。

Cloud 与自托管能力需逐项核对

不同运行时、区域、存储和企业功能的可用性可能不同;迁移前应验证目标版本、数据导出、Provider 和容量限制。

QUICK START

快速开始

创建 Web 平台、安装官方 SDK,并实现账户登录、受权限保护的数据行和文件上传。

1安装 Web SDK
bash
npm install appwrite
2初始化 Client 与服务
typescript
import {
  Account,
  Client,
  Storage,
  TablesDB,
} from "appwrite";

export const client = new Client()
  .setEndpoint("https://<REGION>.cloud.appwrite.io/v1")
  .setProject("<PROJECT_ID>");

export const account = new Account(client);
export const tablesDB = new TablesDB(client);
export const storage = new Storage(client);
3注册用户并创建 Session
typescript
import { ID } from "appwrite";
import { account } from "./appwrite";

await account.create({
  userId: ID.unique(),
  email: "reader@example.com",
  password: "replace-with-a-strong-password",
  name: "Reader",
});

await account.createEmailPasswordSession({
  email: "reader@example.com",
  password: "replace-with-a-strong-password",
});

const user = await account.get();
console.log(user.$id, user.name);
4创建一条仅当前用户可访问的数据
typescript
import {
  ID,
  Permission,
  Role,
} from "appwrite";
import { account, tablesDB } from "./appwrite";

const user = await account.get();

const todo = await tablesDB.createRow({
  databaseId: "<DATABASE_ID>",
  tableId: "<TABLE_ID>",
  rowId: ID.unique(),
  data: {
    title: "学习 Appwrite 权限",
    completed: false,
  },
  permissions: [
    Permission.read(Role.user(user.$id)),
    Permission.update(Role.user(user.$id)),
    Permission.delete(Role.user(user.$id)),
  ],
});

console.log(todo);
5查询并分页读取数据
typescript
import { Query } from "appwrite";
import { tablesDB } from "./appwrite";

const result = await tablesDB.listRows({
  databaseId: "<DATABASE_ID>",
  tableId: "<TABLE_ID>",
  queries: [
    Query.equal("completed", false),
    Query.orderDesc("$createdAt"),
    Query.limit(20),
  ],
});

console.log(result.rows);
6上传用户文件
typescript
import { ID } from "appwrite";
import { storage } from "./appwrite";

const input = document.querySelector<HTMLInputElement>("#file");
const file = input?.files?.[0];

if (!file) {
  throw new Error("请选择文件");
}

const uploaded = await storage.createFile({
  bucketId: "<BUCKET_ID>",
  fileId: ID.unique(),
  file,
});

console.log(uploaded.$id);
7本地实验性自托管
bash
docker run -it --rm \
  --volume /var/run/docker.sock:/var/run/docker.sock \
  --volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \
  --entrypoint="install" \
  appwrite/appwrite:1.9.6

下一步:浏览器只能使用 Client SDK 和用户会话。API Key 只能放在可信服务端,并应授予最小 Scope;数据库、表、行、Bucket、文件与函数都要逐项核对权限,不能把 Console 可见误认为客户端可安全访问。

ALTERNATIVES

类似项目

这些平台同样提供数据库、认证、存储和服务端逻辑,但在数据模型、授权方式、自托管复杂度和托管生态上不同。

COMPARISON

Appwrite vs Supabase

Appwrite 和 Supabase 都提供开源、可托管或自托管的应用后端。Appwrite 将 TablesDB、Auth、Storage、Functions、Realtime 和 Messaging 封装为统一平台 API;Supabase 则以完整 PostgreSQL、SQL、RLS 和数据库生态为中心,再围绕它提供认证、存储、实时与边缘函数。

比较维度AppwriteSupabase
核心数据模型TablesDB 的数据库、表、列与行抽象完整 PostgreSQL、Schema、表、关系与 SQL
查询能力SDK Query、REST / GraphQL 与平台统一 APISQL、PostgREST、函数、视图、事务和扩展
授权方式资源 Permission、Role、User、Team 与 LabelPostgres Role、Grant、JWT 与 Row Level Security
服务端计算隔离容器、多运行时、事件和 Cron FunctionsDeno Edge Functions、Postgres Function 与 Trigger
实时能力对 Auth、TablesDB、Storage 和 Function 事件订阅Broadcast、Presence 与 Postgres Changes
消息能力内建 Push、Email、SMS、Provider、Topic 与 Schedule通常通过 Edge Function 和第三方消息服务组合
数据可移植性通过 Appwrite API、备份与迁移流程管理标准 PostgreSQL 工具、连接和 SQL 生态更开放
更适合多端 SDK、一体化服务、消息和平台抽象优先关系数据、复杂 SQL、数据库控制与 Postgres 生态优先
如何选择

如果团队希望通过统一 SDK 快速获得认证、数据、文件、Functions、Realtime 和 Messaging,并重视 Web、移动与原生平台覆盖,Appwrite 更完整;如果业务依赖复杂关系、SQL、事务、PostgreSQL 扩展和数据库级可移植性,Supabase 更自然。两者自托管都需要真实运维投入,选型前应使用权限、迁移、备份和峰值负载做原型验证。

VERIFICATION

资料核验

版本、维护信息与本页采用的官方资料来源。

最后核验2026 年 7 月 27 日
核验版本Appwrite v1.9.6
内容维护Docs100 编辑整理
项目维护状态活跃维护

本页依据 Appwrite 官方文档、Web Quick Start、Authentication、TablesDB、Functions、Realtime、自托管说明和官方源码仓库整理。版本与许可证通过 GitHub 官方 API 核验;快速开始采用当前 Web SDK 的对象参数和 TablesDB 行 API。

维护状态核验2026 年 7 月 26 日 · 最近可见代码活动:2026 年 7 月 27 日

官方仓库未归档,核验时最近可见的代码活动日期为 2026 年 7 月 27 日。该状态表示项目近期仍有公开维护活动,不代表固定发布频率或长期支持承诺。

查看官方仓库