
victorrds/etebaseEtebase Server(又称Etesync 2.0)的Docker镜像,基于Tom Hacohen的server仓库构建,提供安全的端到端加密数据同步服务。
以下标签基于最新Python镜像和Etebase Server最新版本构建:
latest (tags/latest/Dockerfile)slim (tags/slim/Dockerfile)alpine (tags/alpine/Dockerfile)发布版本以带版本号的标签提供,例如:X.Y.Z 或 X.Y.Z-type。
bashdocker run -d -e SUPER_USER=admin -p 80:3735 -v /path/on/host:/data victorrds/etesync
创建使用HTTP协议运行的Etebase容器。更多使用docker-compose的示例可查看此处。
所有Etebase镜像变体共享相同的目录结构:
包含Etebase Server源代码,请勿修改或挂载此目录。
默认存储用户数据和服务器配置的卷:
/data/etebase-server.ini:服务器配置文件,可通过ETEBASE_EASY_CONFIG_PATH环境变量修改位置;/data/media:用户数据存储目录(可修改¹,但不建议);/data/secret.txt:Django SECRET_KEY存储文件(可修改¹);/data/db.sqlite3:SQLite数据库文件(若使用SQLite,可修改¹)。¹ 所有位置可在etebase-server.ini文件中设置,或首次运行时通过环境变量配置。
包含反向代理(如nginx)所需的静态文件。当使用uwsgi或asgi协议时,/entrypoint.sh会检查并更新/重建这些文件。
容器默认以用户和组etebase(ID均为373)运行。若将目录挂载到主机(非Docker卷),有两种权限配置方式:
设置主机目录正确权限:
console$ chown -vR 373:373 /host/data/path changed ownership of '/host/data/path' from user:group to 373:373 $ docker run -v /host/data/path:/data victorrds/etebase
修改容器运行用户:
console$ stat -c '%u:%g' /host/data/path 1000:1000 $ docker run -u 1000:1000 -v /host/data/path:/data victorrds/etebase
Etebase配置存储在/data/etebase-server.ini中。若文件不存在,/entrypoint.sh将根据以下环境变量生成配置。
uvicorn:使用uvicorn(ASGI服务器,支持HTTP/1.1和WebSocket),无SSL,需配合反向代理(如nginx、traefik)。别名:http、http-socket、asgi;uvicorn-https:同上,启用SSL/TLS,需挂载证书。别名:https;uwsgi、daphne和Django-server,现已废弃(详见#103);/entrypoint.sh详细日志,不影响Etebase服务器输出;set -x运行/entrypoint.sh,用于调试;false;/data/etebase-server.ini;/data/media(注意);sqlite(默认)和postgres;localhost,127.0.0.1,[::1](详见etesync/server#183);/data/secret.txt(文件不存在则自动生成);false;en-us;UTC(需为有效的tz数据库名称);false;² 更多详情参见Etebase Server README.md。
若DB_ENGINE设为**sqlite**:
/data/db.sqlite3。若DB_ENGINE设为**postgres**,支持以下变量(列出默认值):
etebase;DATABASE_NAME相同;DATABASE_USER相同;database;5432。%%s替换为用户名);详情参见etesync/server@fac36aa。
可在环境变量后添加_FILE后缀,从容器内文件加载敏感信息(如Docker secrets)。支持的变量:DB_ENGINE、DATABASE_NAME、DATABASE_USER、DATABASE_PASSWORD、SUPER_USER、SUPER_PASS。
示例:
bashdocker run -d --name etebase \ -e DB_ENGINE=postgres \ -e POSTGRES_PASSWORD_FILE=/run/secrets/postgres-passwd \ victorrds/etebase
镜像暴露3735/TCP端口。
选择Dockerfile并运行:
bashdocker build -f tags/alpine/Dockerfile -t etebase:alpine .
默认基于Etebase master分支构建。如需指定版本,设置ETE_VERSION构建参数:
bashdocker build --build-arg ETE_VERSION=v0.5.3 -f tags/base/Dockerfile -t etebase:dev .
设置SUPER_系列变量(SUPER_USER、SUPER_PASS、SUPER_EMAIL),首次运行时自动创建超级用户。
数据库就绪后,执行以下命令并按提示操作:
bashdocker exec -it {container_name} python manage.py createsuperuser
若未启用AUTO_UPDATE,手动升级:
bashdocker exec -it {container_name} python manage.py migrate
需挂载有效证书,默认查找/certs/crt.pem和/certs/key.pem。可通过X509_CRT和X509_KEY环境变量修改路径。
Etebase服务器升级至Django 4.2+后,需正确配置CSRF_TRUSTED_ORIGINS。解决方法:在etebase-server.ini的[allowed_hosts] section添加服务器域名/IP。
新安装时,可通过ALLOWED_HOSTS环境变量生成配置。示例:
ini[allowed_hosts] allowed_host1 = example.com allowed_host2 = api.example.com allowed_host3 = 10.0.0.1 allowed_host4 = *.etebase.example.com ; 支持通配符(单独*无效)
详情参见etesync/server#183。
自0.14.0版本起,不再支持arm/v7架构的Docker镜像。因Etebase Server依赖在arm/v7架构上构建困难,后续版本不再提供更新。
Etesync 1.0与Etebase(Etesync 2.0)的数据库和服务器不兼容。由于端到端加密特性,无法在未知用户密钥的情况下迁移数据。
迁移方法:创建新实例,同时运行新旧服务器,通过Web客户端或移动应用手动迁移数据,完成后关闭旧服务器。
新镜像存在破坏性变更,entrypoint.sh会在修改前检查数据库兼容性。
Etesync 1.0镜像可通过legacy标签获取(基础镜像已过时,不再维护):
legacy (legacy:tags/latest/Dockerfile)legacy-slim (legacy:tags/slim/Dockerfile)legacy-alpine (legacy:tags/alpine/Dockerfile)manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务