Appwrite 与 PocketBase 连不上:控制台、跨域和自建端口
给小项目加登录、数据库和文件存储时,Appwrite 和 PocketBase 是两条常被放在一起比较的路。Appwrite 可以先用官方云控制台,也可以自己用容器跑。PocketBase 是一个可执行文件,管理页在固定的后台路径里。国内打开 cloud.appwrite.io,常见的是登录后转圈;自建则是服务器上的端口外网访问不到。
页面打不开、接口拒绝你的网页来源、管理后台进不去、数据目录权限不对,是四件不同的事。只反复重启进程,不会把未登记的域名变成已登记。下面按云端、自建、跨域和调试请求讲。版本和托管价格以官方最新条款为准。
两条后端差在哪
不要用一家的环境变量名去另一家的文档里搜。登记网页来源这一步,Appwrite 在项目的平台设置里,PocketBase 在接口的跨域或应用设置里,菜单名对不上是正常的。
| 对比项 | Appwrite | PocketBase |
|---|---|---|
| 起步 | 云控制台或容器 | 单个可执行文件 |
| 数据 | 它自己的库和存储卷 | 数据目录里的库文件 |
| 管理入口 | 控制台里的项目 | 后台路径中的管理页 |
| 前端报错 | 平台或来源未登记 | 接口规则或跨域未放行 |
| 账号邮件 | 要配发信 | 也要自己的发信设置 |
| 适合 | 想要现成云或完整控制台 | 想要单文件、好备份 |
| 迁移 | 导出再导入要按它的格式 | 拷数据目录要先停进程 |
从打不开到接口能通:分步操作
- 第一步:先把线路准备好,连上刺猬VPN。安装客户端后自定义用户名和密码即可完成匿名注册,不需要邮箱、也不需要手机号,免费节点永久免费、不限流量、不限速,注册即用;全程 HTTPS+AES 加密传输。打开云控制台和拉取镜像时保持连接。自建机器若在你自己的服务器上,只在访问境外控制台时需要线路。
- 第二步:Appwrite 云端用无痕窗口打开控制台,完成注册和项目创建。项目里把你的网页地址登记为平台,包含协议和端口。本地开发常用的本机地址也要单独登记一条。
- 第三步:自建 Appwrite 按官方的容器方式启动,不要混用过期的片段。启动后用服务器本机先打开控制台,确认进程在听,再谈外网访问。
- 第四步:PocketBase 下载与系统匹配的可执行文件,放到单独目录。启动后管理页走它文档里的后台路径。第一次要创建管理员,邮箱和密码记在你自己的密码记录里。
- 第五步:数据目录不要放在会丢的临时盘。更新版本前先停进程再备份这个目录。进程还在跑时拷贝,库文件可能是坏的。
- 第六步:浏览器里的前端若报来源不被允许,把完整来源填进设置,包括协议。少写协议或多一个斜杠,都会对不上。
- 第七步:用接口工具发一条不经过网页的请求,确认服务本身是通的。网页失败而工具成功,就是来源或登录态的问题,不是服务没起来。
- 第八步:需要发验证邮件时再配发信。发信地址不通用是邮件服务的事,不要当成后端进程挂了。
按现象排查:控制台、来源和磁盘
先分清失败发生在浏览器、接口工具,还是服务器本机。
- 云控制台登录后转圈:脚本没加载完。无痕窗口,固定节点,关掉拦截扩展。
- 接口返回来源不匹配:网页地址没登记,或登记的是另一个端口。把地址栏里的完整来源复制进去。
- 本机能开、外网不能开:防火墙或安全组没放行端口。在服务器上看进程是否在听,再放行。
- PocketBase 管理页四百零四:路径写错,或你打开的是接口根路径而不是后台。按文档的后台路径进。
- 更新后起不来:数据目录来自不兼容的旧版本。用备份恢复,不要在坏目录上反复启动。
- 登录邮件收不到:发信配置或垃圾箱。后端日志里有没有发信错误,比前端的转圈更准。
- 规则写成仅管理员,前端用户就读不到:这是权限,不是网络。先用管理员令牌在工具里读通,再放宽规则。
- 实时连接马上断开:网页套接字没走通,或反向代理没转发升级头。先让普通请求成功,再开实时。
自建、云端和只测接口
若你其实想要的是另一套托管数据库和登录,控制台打不开的处理见 Supabase 与 Firebase。把接口一条条点通的做法见 Postman 怎么调接口。刺猬VPN自身不对账号设速率上限。实际可用性取决于当前网络环境。
| 对比项 | 官方云控制台 | 自己的机器 | 免费节点只开页面 |
|---|---|---|---|
| 数据在哪 | 厂商那边 | 你的磁盘 | 没有你的库 |
| 跨域 | 在项目里登记 | 在你的配置里 | 解决不了登记 |
| 备份 | 按厂商的导出 | 停进程后拷目录或卷 | 无关 |
| 端口 | 不用你放行 | 安全组要放行 | 无关 |
| 线路 | 打开控制台时需要 | 拉取镜像时可能需要 | 永久免费、不限流量、不限速 |
| 长期 | 时长套餐期间不限流量、不限速 | 同左 | 不负责你的服务进程 |
和现成云、接口调试怎么分工
这两家适合你愿意自己管项目和规则的时候。不想管端口和备份,就用托管服务,不要两套同时改同一批用户数据。
调试顺序固定:服务器本机能打开管理页,接口工具不带浏览器来源也能读到数据,最后才让网页带着登记过的来源去访问。跳过中间一步,你会把权限问题误判成线路问题。
备份和升级不要在进程开着时做
PocketBase 的数据目录就是你的库。复制前先停掉进程,复制完再启动,用管理页看集合是否还在。Appwrite 自建时,卷没有备份就不要升级容器镜像。升级说明里写了迁移步骤的,按顺序做,不要只换标签。
管理员密码和接口密钥分开存。密钥泄漏后在控制台作废旧的,而不是只改前端环境变量。前端仓库里不要提交密钥。
反向代理若终结了加密,后端看到的协议可能变成明文的本地转发。登记来源时仍写用户浏览器里的那个地址,不是写机器内部的地址。两边不一致,跨域会一直失败。
密钥、来源和备份各放一处
前端环境变量里只放可以公开的项目编号。管理员密钥放在服务器或本机的私密配置里,仓库历史里一旦出现就要作废重发,删掉文件不等于没泄漏。
本地开发的来源写上协议、主机和端口。线上写用户真正打开的那个地址。多一个斜杠或少写端口,浏览器就会一直报不允许,而接口工具仍然成功。
规则先收紧再放宽。新集合默认不要对所有人可写。用管理员令牌证实数据在,再给登录用户开读,最后才考虑公开读。顺序反了,你会在公开之后才发现字段里有不该见人的内容。
发信用的密码和登录控制台的密码分开。发信失败时只轮换发信密码。日志里出现认证失败,就对发信主机和端口,不要重启整个数据库。
反向代理后面的真实地址,以浏览器地址栏为准去登记。内部转发地址只给代理自己用。两边抄混,跨域会永远对不上。
升级当天先在副本上走一遍。副本能开管理页、能读到一条旧数据,再动正式机器。没有副本就至少保留停机时拷出的那一份,并写上日期。
实时订阅先用一条测试消息验证。普通读取成功但收不到推送,就查代理是否转发了升级。不要为此改数据库规则。
同一项目不要云端和自建各写一半用户。选一条路把登录做完,再考虑迁移。迁移时导出、在空项目导入、对一条用户能登录,三步都过了再切换域名。
日志里只看这次请求的编号。几小时前的跨域错误解释不了你刚刚改完的来源。改完用无痕窗口发一次新请求。
磁盘空间不够时,先停进程再删旧备份里真正过期的那一份。不要在进程开着时删正在写的库文件。
改完来源后用无痕窗口重试一次。旧标签页可能还拿着上一次的拒绝结果。成功后再回到原来的开发窗口。
密钥作废后,旧的前端构建也要重新部署,否则线上还在用旧密钥。
常见报错速查表
| 现象 | 原因 | 解决办法 |
|---|---|---|
| 控制台转圈 | 页面脚本未加载 | 无痕窗口并固定节点 |
| 来源不被允许 | 平台或跨域未登记 | 复制完整地址含协议 |
| 外网打不开 | 端口未放行 | 本机先确认进程在听 |
| 管理页找不到 | 后台路径写错 | 按文档的路径进入 |
| 升级后起不来 | 数据与版本不兼容 | 用停机前的备份恢复 |
| 邮件不到 | 发信配置或垃圾箱 | 看后端日志里的发信错误 |
| 用户读不到数据 | 规则只允许管理员 | 先用令牌在工具里读通 |
高频问答
- 问:PocketBase 要不要单独的数据库服务器?答:默认用它目录里的库文件。先停进程再备份这个目录。
- 问:本机地址要不要登记?答:要。本地端口和线上域名是两条来源,都写上。
- 问:云控制台打不开是不是项目坏了?答:多半不是。项目在厂商那边。先让控制台页面加载完。
- 问:能把两家的用户导来导去吗?答:没有一个按钮能互相搬。要迁就按各自的导出格式自己做,并先在副本上试。
- 问:实时功能必须先开吗?答:不必。普通读写通了再开。代理不转发升级时,实时会断而普通请求仍成功。
- 问:线路要一直开着吗?答:访问境外控制台和拉镜像时需要。用户访问你已经放在国内机器上的服务时,按你的部署决定,不由控制台决定。
先让本机通,再让浏览器通
Appwrite 控制台打不开、来源不匹配、PocketBase 管理页进不去,按本机、接口工具、浏览器这个顺序查。登记完整来源,端口在安全组里放行,升级前先停进程备份。不要把权限规则写成的拒绝,当成线路故障。
刺猬VPN采用 HTTPS+AES 加密传输,支持自定义用户名和密码匿名注册,不需要邮箱和手机号。免费节点永久免费、不限流量、不限速,适合先打开云控制台;时长套餐按周期计费,期间不限流量、不限速,适合反复拉镜像和看文档。版本与价格以官方最新条款为准,实际可用性取决于当前网络环境。密钥不要写进仓库。
换刺猬VPN告别连接烦恼:一键连接、连接稳定
刺猬VPN提供永久免费节点,不限流量;无需邮箱,自定义用户名即可匿名注册。一个账号支持多设备同时在线,实际可用性取决于当前网络环境。