Ente 服务器
Ente 服务器是存储和提供加密数据块给 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 存储桶(用于存储加密对象数据)。此外,建议使用 Nginx 等 HTTPS 代理来访问 **Ente** 服务器。最后,可以使用 *ente-cli* 工具轻松升级 ente-server 账户大小限制和账户过期时间。
这些必需的组件被列为可选依赖项,并且最好作为依赖项安装:Pacman#Installation reason
配置
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#Configure PostgreSQL to be accessible exclusively through UNIX Sockets
/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 地址(默认情况下,该服务仅允许从本地主机访问或访问本地主机)
[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* 替换为您实际的公共域名
如果尚未完成,请申请 Let's Encrypt 证书(或来自其他提供商的 TLS 证书)
# certbot certonly --email your_email --agree-tos --preferred-challenge http --webroot -w /var/lib/letsencrypt -d your_public_domain.tld
在 Nginx `http` 配置中添加一个 `include` 语句来包含 *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-git**AUR 包的桌面应用时,请确保在构建之前导出 `NEXT_PUBLIC_ENTE_ENDPOINT` 环境变量。
遵循照片移动端、桌面端或 Web 端应用(*https://: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 配置文件
为希望限制 **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 等主机防火墙,请确保允许以下流量
- 本地主机的流量
- 您的 **Ente** (移动端) 客户端到 TCP 端口 **443** 的流量,通过 Nginx 访问 **Ente** 服务器
- 您的 **Ente** (移动端) 客户端到 TCP 端口 **3200** 的流量,通过 Nginx 访问 MinIO 服务器
文件
ente-server-gitAUR 包包含 ente-server(1) man page,其中列出了并解释了该包安装的所有文件。