Ente 服务器
Ente 服务器 是服务器端组件,用于存储加密的数据 blob 并将其提供给 ente(移动)客户端。客户端发送/接收加密数据,这些数据随后到达 Ente 服务器,并通过本地 MinIO 对象存储服务进行存储/读取。
例如,当使用 Ente 照片客户端时,客户端会对照片进行加密,然后将其存储在此服务器上。之后,客户端可以查找加密的照片,并在本地解密(端到端加密)。由于只有客户端或客户端与之共享照片的任何人拥有加密密钥,因此只有他们才能解密数据并实际查看照片,服务器永远无法做到这一点,因为它缺少该密钥材料。
安装
ente-server-gitAUR 软件包旨在用于自托管,与默认提供的 Docker 化 Ente 服务器相反。如果需要 Docker 化或托管解决方案,请参阅 ente.io。
首先安装 ente-server-gitAUR 软件包。
请注意,由于自托管服务器空间通常数量有限,ente-server-gitAUR 软件包添加了更改清理延迟的功能,该延迟是指在旧的未链接 ente-server MinIO 对象实际被删除之前的清理延迟。这可以通过 internal:delete-object-delay
ente-server 配置参数进行配置。默认上游 Ente 服务器默认每 45 天
清理这些对象,但是当不需要复制时,可以将此设置设置为例如每 5 分钟
清理一次。
为了使 Ente 服务器运行,需要一个可用的 PostgreSQL 数据库(用于存储 Ente 对象元数据和用户数据)和 MinIO 存储桶(用于存储加密对象数据)。此外,建议使用 HTTPS 代理,如 Nginx 来访问 Ente 服务器。最后,可以使用 ente-cli 工具轻松升级 ente-server 账户大小限制和账户到期时间。
这些必需组件作为可选依赖项列出,最好作为依赖项安装:Pacman#安装原因
配置
MinIO 设置
编辑 配置文件,如下所示
/etc/minio/minio.conf
MINIO_VOLUMES="/srv/minio/data" MINIO_ROOT_USER=minio MINIO_ROOT_PASSWORD='YOUR-STRONG-MINIO-ROOT-PASSWORD' MINIO_OPTS="--address 127.0.0.1:43200 --console-address 127.0.0.1:43201"
启用/启动 minio.service
。
使用 mcli 命令(以 minio 用户身份)创建 MinIO ente-server 存储桶
# cd /srv/minio/data [minio]$ mcli mb -p ente-server
PostgreSQL 设置
以 postgres 用户身份初始化数据库
[postgres]$ initdb --locale en_US.UTF-8 -D '/var/lib/postgres/data' --data-checksums --auth=scram-sha-256 --pwprompt -c listen_addresses=''
PostgreSQL#配置 PostgreSQL 仅通过 UNIX 套接字访问,如果存在现有的 PostgreSQL 设置
/var/lib/postgres/data/postgresql.conf
listen_addresses = '' # AF_UNIX Socket only
通过编辑 postgresql.service
来限制套接字对 PostgreSQL 用户或组的访问
[Service] RuntimeDirectoryMode=750
将 ente
添加到 postgres
用户组,然后启动/启用postgresql.service
。
创建 PostgreSQL 数据库用户和一个由此用户拥有的数据库(指定新密码两次,然后指定 postgres 密码以存储新账户)
[postgres]$ createuser -P ente
然后指定 postgres 密码以创建新数据库
[postgres]$ createdb -T template0 -O ente -E unicode ente-server
运行 ente-server
添加 MinIO 存储桶详细信息
/etc/ente-server/local.yaml
b2-eu-cen: key: minio secret: "YOUR-STRONG-MINIO-ROOT-PASSWORD" endpoint: https://your_public_domain.tld:3200 region: eu-central-2 bucket: ente-server
添加 PostgreSQL 详细信息
/etc/ente-server/local.yaml
db: host: /run/postgresql port: 5432 name: ente-server user: ente password: "YOUR-STRONG-ENTE-DATABASE-USER-PASSWORD"
使用 ente-server-gen-random-keys 命令生成新的密钥值,并将这些值替换 /etc/ente-server/local.yaml
配置文件中的默认值。
编辑 ente-server.service
以允许其访问 your_public_domain.tld 的 IP 地址(默认情况下,该服务仅允许从 localhost 和到 localhost 的访问)
[Service] IPAddressAllow=IP_address_of_your_public_domain.tld
启用/启动 ente-server.service
。
配置 Nginx 代理
将示例 MinIO 和 Ente 服务器 Nginx 配置以及随附的 HTTP(S) 安全标头配置文件复制到 Nginx 配置目录
# cp -v /usr/lib/ente-server/ente-server-nginx.conf /etc/nginx/ # cp -v /usr/lib/ente-server/http*security_headers.conf /etc/nginx/ # cp -v /usr/lib/ente-server/minio-server-nginx.conf /etc/nginx/
编辑此示例配置,并将 your_public_domain.tld 替换为您的实际公共域名
如果尚未完成,请请求 letsencrypt 证书(或来自其他提供商的 SSL 证书)
# certbot certonly --email your_email --agree-tos --preferred-challenge http --webroot -w /var/lib/letsencrypt -d your_public_domain.tld
将 include
语句附加到 Nginx http
配置以包含 ente-server 配置
/etc/nginx/nginx.conf
http { include /etc/nginx/ente-server-nginx.conf }
修复权限
# chmod 644 /etc/nginx/ente-server-nginx.conf # chmod 644 /etc/nginx/http*security_headers.conf
重启 nginx.service
以应用更改。
配置 ente-server 和 ente-cli
使用 ente-cli-binAUR 软件包在客户端上安装 ente-cli
。
在客户端上添加 ente-cli
配置
$ mkdir -p ~/.ente/export
~/.ente/config.yaml
endpoint: api: "https://your_public_domain.tld" >
在客户端上通过 Ente 照片移动应用、桌面应用或 Web 应用,使用自定义端点添加用户账户。
在照片移动应用中,在主屏幕上点击 7 次以启用开发者模式,然后定义您的自定义 Ente 服务器 API 端点
URL: https://your_public_domain.tld
在客户端上的 Web 应用中
$ git clone https://github.com/ente-io/ente.git $ cd ente/web $ git submodule update --init --recursive $ yarn install $ NEXT_PUBLIC_ENTE_ENDPOINT=https://your_public_domain.tld yarn dev:photos
当使用 ente-desktop-gitAUR 软件包使用桌面应用时,请确保在构建之前导出 NEXT_PUBLIC_ENTE_ENDPOINT
环境变量。
按照照片移动应用、桌面应用或 Web 应用(https://127.0.0.1:3000)的说明创建新用户。
获取 OTP 验证码
- 通过电子邮件
- 在
/etc/ente-server/local.yaml
中配置smtp
部分 - 确保配置的 smtp(1) 服务器正在工作
- 等待邮件到达并复制 OTP 验证码
- 在
- 通过 ente-server 日志
# journalctl -au ente-server | grep SendEmailOTT | tail -n 1
获取新用户的账户 ID
# psql -U ente ente-server -c 'select user_id from users order by user_id desc limit 1;'
将此用户配置为管理员
/etc/ente-server/local.yaml
internal: admin: [ADD_USER_ID_HERE]
重启 ente-server.service
以激活新的管理员权限。
在客户端上的 ente-cli
中配置此管理员
$ ente account add photos ~/.ente/export email_address_of_admin_account password_of_admin_account
增加用户存储和账户到期限制
使用 ente-cli 将存储限制增加 100 TB,到期时间增加 100 年
$ ente admin update-subscription -u "user@domain.tld"
(可选)复制并应用 AppArmor 配置文件
已为希望使用 AppArmor 限制 ente-server 二进制文件访问权限的用户提供了 AppArmor 配置文件。 如下复制并应用此配置文件(假设 AppArmor 已经安装并启用)
# install -Dvm600 -o root -g root /usr/lib/ente-server/usr.bin.ente-server -t /etc/apparmor.d/ # aa-enforce /usr/bin/ente-server
(可选)配置防火墙
如果主机防火墙(如 iptables 或 nftables)已启用和配置,请确保允许以下内容
localhost
上的流量- 从您的 Ente(移动)客户端到 TCP 端口
443
的流量,以通过 Nginx 访问 Ente 服务器 - 从您的 Ente(移动)客户端到 TCP 端口
3200
的流量,以通过 Nginx 访问 MinIO 服务器
文件
ente-server-gitAUR 软件包包含 ente-server(1) 手册页,其中列出并解释了此软件包安装的所有文件。