ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Ente 自托管一键部署指南:使用 Quickstart 脚本在几分钟内启动端到端加密云

2026/9/12 6:57:27 拓冰建站 浏览量
Ente 自托管一键部署指南:使用 Quickstart 脚本在几分钟内启动端到端加密云 Ente 自托管一键部署指南使用 Quickstart 脚本在几分钟内启动端到端加密云【免费下载链接】ente End-to-end encrypted cloud for everything.项目地址: https://gitcode.com/GitHub_Trending/en/ente导读Ente 是一套端到端加密的云服务照片、认证器、社交与更多其官方推荐的快速自托管方式是一行curl命令触发的 Quickstart 脚本。本文将完整拆解这条命令背后的执行逻辑、它自动生成的 Compose 与 Museum 配置、四个服务的端口布局以及部署完成后的账号创建、管理员白名单、应用端点配置与升级维护等后续操作。读完本文你将能够在一分钟内搭建起属于自己的 Ente Photos 实例并具备将其投入生产使用前所需的配置与排障知识。一、Quickstart 脚本是什么Quickstart 脚本server/quickstart.sh是 Ente 官方为自托管用户提供的最简上手路径。与需要克隆仓库、手工配置环境变量再编译的 Docker Compose 方式不同它直接基于ghcr.io/ente/server与ghcr.io/ente/web等预构建镜像在用户机器上生成一套开箱即用的编排配置无需安装 Go 工具链、无需从源码构建。脚本的设计目标非常明确让任何一台安装了 Docker 的机器在一分钟以内完成 Ente 集群的初始化。二、前置要求在运行脚本前请先确认机器满足 环境要求 中列出的条件。硬件要求项目最低要求说明CPU1 核心大部分密集计算发生在客户端服务端是轻量的 Go 二进制RAM1 GB运行由 Quickstart 脚本启动的整套集群所需存储Unix 兼容文件系统若使用 PostgreSQL 容器需要支持用户/组权限的文件系统如 ZFS、EXT4、BTRFS软件要求操作系统任意 Linux 或 *nix 系统官方推荐 Ubuntu 或 Debian 以获得更稳定的 Docker 体验Docker需要 Docker 引擎及Docker Compose 插件注意是docker compose子命令旧版docker-compose独立二进制已不再支持Compose 版本必须为 2.30 或更高执行脚本的用户需拥有访问 Docker daemon 的权限。从 quickstart.sh 源码 可以看到脚本启动时首先会做三项预检检查docker compose是否可用、通过docker compose version --short解析主次版本号并拒绝低于 2.30 的版本、确认base64命令存在用于后续自动生成凭据。任一检查失败都会直接退出并给出明确报错例如Docker Compose version (x.y.z) should be at least 2.30 for running this script。三、一键安装运行 Quickstart在满足前置条件的终端中粘贴以下命令即可开始sh -c $(curl -fsSL https://raw.githubusercontent.com/ente/ente/main/server/quickstart.sh)如果你希望先下载脚本、审阅内容后再执行也可以采用 server/docs/quickstart.md 中建议的替代方式curl -o quickstart.sh https://raw.githubusercontent.com/ente/ente/main/server/quickstart.sh chmod x quickstart.sh ./quickstart.sh这条命令做了两件事在当前工作目录下创建my-ente目录生成编排配置后交互式询问是否立即启动容器集群输入y或Y确认。关于目录名还有一个有趣的来源Ente 的读音是 en-tay在创始人母语马拉雅拉姆语中意为我的因此my-ente直译过来就是我的我的。四、脚本自动完成了什么从源码看脚本的自动化流程server/quickstart.sh可以分为生成凭据与落盘配置两个阶段。4.1 自动生成的安全凭据所有凭据均通过/dev/urandom生成每次运行都会得到一组独一无二的值凭据生成方式用途pg_pass21 字节随机数 base64PostgreSQL 数据库密码minio_user/minio_pass6 字节随机后缀 21 字节随机密码MinIO 对象存储的 root 凭据museum_key32 字节随机数对应crypto_secretbox_KEYBYTES数据加密密钥museum_hash64 字节随机数对应crypto_generichash_BYTES_MAX密码散列密钥museum_jwt_secret32 字节随机数并将//替换为-_JWT 签名密钥4.2 生成的 compose.yaml脚本会在my-ente下生成compose.yaml定义四个核心服务。其中museum服务的关键点包括映射8080:8080提供 API、将./museum.yaml和./data只读挂载进容器、以wget ... /ping作为健康检查此外还通过一个alpine/socat辅助容器将 museum 容器内的localhost:3200转发到 MinIO 服务从而让museum.yaml里默认的endpoint: localhost:3200能够直接可用。快速部署下暴露的端口与服务如下表服务端口说明museum:8080Ente 的 API 服务器web:3000Ente Photos Web 应用web:3002公开相册Albums应用postgres容器内PostgreSQL 15 数据库minio:3200S3 兼容对象存储MinIO API此外compose.yaml 生成片段 中还以注释形式保留了其他 Web 应用的端口映射供有需要时取消注释3001Accounts、3003Auth、3004Cast、3005Share、3006Embed、3008Paste、3009Locker、3010Memories。MinIO 的 Web 控制台端口3201同样默认被注释。PostgreSQL 与 MinIO 各自挂载了 Docker 命名卷postgres-data、minio-data来持久化数据并分别以pg_isready和mcMinIO Client执行就绪检查与 bucket 初始化——脚本会自动创建b2-eu-cen、wasabi-eu-central-2-v3、scw-eu-fr-v3三个 bucket。4.3 生成的 museum.yamlmuseum.yaml是 Museum 服务的核心配置脚本为它写入了数据库连接、S3 桶配置、Web 应用端点与密钥四大部分server/quickstart.shdb连接postgres主机的ente_db数据库s3三个桶均指向localhost:3200MinIO顶层默认are_local_buckets: true、use_path_style_urls: true各桶可在注释中按需覆盖apps声明各 Web 应用的基址如public-albums: http://localhost:3002、accounts: http://localhost:3001等key与jwt写入上文自动生成的加密密钥、散列密钥与 JWT 密钥。五、访问与验证脚本启动完成后Ente Photos访问 http://localhost:3000或通过http://机器IP:3000从局域网访问公开相册链接由 Albums 应用托管在 http://localhost:3002。官方还推荐做一次快速冒烟测试直接请求 API 的健康检查端点curl localhost:8080/ping首次运行会从 Docker Hub / GHCR 自动拉取所需镜像终端会持续滚动日志。注册账号所需的验证码也会直接打印在这些日志中。六、数据与配置存储位置Museum 访问的数据存放在my-ente/data目录中其中包含推送通知凭据等额外的配置文件。更完整的持久化布局如下内容存放位置编排配置compose.yaml、服务配置museum.yamlmy-ente/目录附加配置数据my-ente/data/目录数据库与对象存储数据Docker 命名卷postgres-data、minio-data请务必妥善保管museum.yaml它包含实例独一无二的凭据一旦丢失Ente 将无法访问卷中已存储的数据。如果删除my-ente目录Docker 卷中的数据仍然存在需要彻底重建时可在正确的目录下执行docker compose down --volumes该命令会永久清除包括已上传照片在内的全部数据务必谨慎操作。七、日常运维命令在my-ente目录内# 再次启动前台运行Ctrl-C 停止 cd my-ente docker compose up # 后台持续运行关闭终端不中断 docker compose up -d # 停止后台服务 docker compose down如果脚本预检时发现my-ente目录已存在它会拒绝重新生成并提示你直接执行cd my-ente docker compose up来恢复实例。常见问题若启动时出现pq: password authentication failed之类的数据库密码认证错误很可能是你重建了my-ente目录但上一次尝试遗留的卷my-ente_postgres-data与my-ente_minio-data仍带着旧密码。解决思路是先清理遗留卷再重新初始化。八、安装后的关键步骤部署完成后建议按 安装后配置 依次完成以下操作8.1 创建第一个用户即管理员打开http://localhost:3000选择 Dont have an account? 完成注册。第一个创建的用户默认会被视为管理员。注册用的验证码在运行docker compose up的终端日志中或通过以下命令查看docker compose logs8.2 白名单管理员连接数据库后将首个用户的 ID 加入museum.yaml的internal.admins多管理员或internal.admin单管理员字段internal: admins: - user_id修改配置后需重启集群建议docker compose down docker compose up -d以重建容器。8.3 配置应用端点如需让 Albums、Share、Paste、Cast、Accounts 等应用走自己实例的端点可编辑museum.yaml的apps段。需要注意Quickstart 生成的compose.yaml默认只暴露 Photos3000和 Albums3002端口指向其他应用前需先在 Compose 中取消对应端口映射的注释或单独部署这些应用。8.4 公网访问与对象存储的两个坑对外提供服务时推荐配置 Caddy、NGINX 或 Traefik 反向代理详见 反向代理文档若仅限内网官方推荐使用 Tailscale。直接使用 IP 地址访问会遇到两类问题S3 端点不可达Museum 会把桶的endpoint值嵌入预签名 URL。Quickstart 默认的localhost:3200只在服务器本机可解析移动端或其他机器上传会静默失败日志表现为OBJECT_SIZE_FETCH_FAILED: dial tcp …: i/o timeout需将endpoint改为服务器 LAN IP 或主机名CORS 拦截同一 IP 的不同端口如:3000与:3200在浏览器看来属于跨域请求需要在对象存储中配置 CORS。最稳妥的方案仍是使用域名或 Tailscale。8.5 移动端 / 桌面端连接自建实例移动端在引导页连点 7 次进入开发者设置填入自建服务器的端点桌面端同样在引导页连点 7 次配置自定义服务器端点CLI可从官方 Release 下载 Ente CLI参考 CLI 管理文档。九、升级与维护Quickstart 方式升级非常轻量在my-ente目录内拉取最新镜像并重建容器即可升级指南docker compose pull docker compose up -d可配合docker image prune清理旧镜像释放磁盘空间。若 Compose 文件中引用了旧镜像地址ghcr.io/ente-io/请先替换为ghcr.io/ente/。十、生产环境注意事项Quickstart 提供的是一套拿来即用的演示型编排。官方在 server/docs/quickstart.md 中明确提醒如果打算长期严肃使用自建实例强烈建议理解全部组成部件并考虑用外部 S3 对象存储与托管数据库替换 Quickstart 自带的 MinIO 与 PostgreSQL参考 server/config/example.yaml 中的桶级覆盖配置以及 compose.yaml 从源码运行方式 中go run tools/gen-random-keys/main.go生成正式密钥的流程。在确定备份策略之前请保留照片的明文备份。除本指南外仓库中 server/config/example.env 提供了数据库与对象存储环境变量的完整注释示例可帮助你为生产部署定制配置。【免费下载链接】ente End-to-end encrypted cloud for everything.项目地址: https://gitcode.com/GitHub_Trending/en/ente创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考