Appwrite 在 Linux 上可通过 docker run 一键安装,需 Docker ≥20.10,首次启动需 2–5 分钟;必须修改 .env 中 APPWRITE_HOST 和 APPWRITE_DOMAIN 为公网 IP 或域名才能外网访问,且不可关闭 appwrite、mariadb、redis 三个核心服务。
Appwrite 在 Linux 上能直接用 docker run 一键安装
Linux 是 Appwrite 官方最优先支持的部署平台,不需要额外编译或依赖管理。只要系统装了 Docker(≥20.10)和 docker-compose(可选但推荐),就能用一条
命令完成初始化安装。
常见错误现象是执行后访问
显示连接被拒绝,或控制台加载空白——这通常不是安装失败,而是容器还在拉取镜像、初始化数据库、生成 SSL 证书,整个过程在首次启动时可能耗时 2–5 分钟。
确保 Docker daemon 正在运行:
应返回
不要用
执行安装命令本身;但宿主机的
必须可读写,普通用户需加入
用户组:
,然后重新登录终端
安装目录(如
)不能是 root 权限受限路径(比如
或某些加密 home 目录),否则容器内进程无法写入配置
首次运行会交互式询问端口(默认 80/443)、是否启用 HTTPS、管理员邮箱等,建议全程按回车用默认值,后续可在 Web 控制台或
文件里调整
安装后必须改才能开放外网访问
Appwrite 默认只监听
,即使你用云服务器部署,本地浏览器能打开,外部网络也连不上——这不是防火墙问题,而是它的
和
配置没生效。
安装完成后,
目录下会生成一个
文件。必须手动编辑它:
将
改为你的公网 IP 或域名(比如
或
)
同时设置
与之完全一致(否则 JWT cookie、重定向、WebSocket 连接都会出错)
如果用反向代理(Nginx/Caddy),还需加
并在代理层透传
头
改完保存,重启服务:
里哪些服务不能关
Appwrite 的
默认启用了 7 个服务,但实际核心只有 4 个:
CentOS Linux 7.9.2009
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。
下载
:主 API 服务,必须运行
:数据库,不能关(哪怕你打算换 PostgreSQL,也要先跑起来初始化结构)
:缓存 + 实时事件队列,关掉会导致实时订阅失效、部分后台任务卡住
:监控指标存储,可关,不影响功能
其他如
(分析)、
(搜索)属于按需启用模块,首次部署建议先保持默认,等业务跑稳再裁剪。
注意:不要手动删掉 yml 里的 service 块再重 up —— 安装脚本生成的 yml 是带初始化逻辑的,删了会导致
容器反复 crash 并报错
。
首次登录进不去控制台?检查和管理员用户状态
安装完成后,浏览器打开
,填邮箱密码却提示 “Invalid credentials” 或 “Project not found”,大概率是以下两个原因:
安装过程中你跳过了管理员账户创建(比如 Ctrl+C 中断了交互流程),此时数据库里没任何用户。解决方法:进容器执行初始化命令:
,它会重新走一遍引导流程
你用 CLI 或 API 创建过项目,但没把生成的
写进前端 SDK 的初始化参数里。Web 控制台本身不依赖这个 ID,但如果你在自己写的前端里调用了
却传了错的 ID,就会静默失败
真正容易被忽略的是:Appwrite 的管理员账户和项目是绑定的,不是全局账号。你在安装时创建的管理员,只属于它自动创建的那个默认项目(ID 通常是 6-character 随机串)。如果之后用 CLI 创建了新项目,那个项目默认没有成员,得手动在控制台的 “Users & Permissions” 里加进去。
所以别急着删默认项目——它不仅是入口,还是权限根节点。
docker runhttps://www.php.cn/link/bb122c8fe6c764e8aae555e2186a6344sudo systemctl is-active dockeractivesudo/var/run/docker.sockdockersudo usermod -aG docker $USER$(pwd)/appwrite/root.env.env127.0.0.1APPWRITE_HOSTAPPWRITE_DOMAINappwrite.envAPPWRITE_HOST=127.0.0.1APPWRITE_HOST=192.168.1.100APPWRITE_HOST=api.example.comAPPWRITE_DOMAINAPPWRITE_FORWARDED_SECRET=your-secretX-Forwarded-*docker-compose -f appwrite/docker-compose.yml down && docker-compose -f appwrite/docker-compose.yml up -ddocker-compose.ymldocker-compose.ymlappwriteappwrite-mariadbappwrite-redisappwrite-influxdbappwrite-clickhouseappwrite-meilisearchappwritefailed to connect to mariadb: no route to hostAPPWRITE_PROJECT_IDhttps://www.php.cn/link/bb122c8fe6c764e8aae555e2186a6344docker exec -it appwrite-appwrite-1 sh -c "php /usr/src/code/appwrite/bin/install"APPWRITE_PROJECT_IDclient.setProject()