
victorrds/etesyncDocker镜像用于Etebase Server(也称为EteSync 2.0),基于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。
docker 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];/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。LDAP集成(高级用法,详情参考etesync/server@fac36aa):
%%s将替换为用户名);作为通过环境变量传递敏感信息的替代方式,可在部分环境变量后追加_FILE,使初始化脚本从容器内文件加载值(适用于Docker Secrets,存储在/run/secrets/<secret_name>)。例如:
bashdocker run -d --name etebase \ -e DB_ENGINE=postgres \ -e POSTGRES_PASSWORD_FILE=/run/secrets/postgres-passwd \ victorrds/etebase
目前支持此方式的变量:DB_ENGINE、DATABASE_NAME、DATABASE_USER、DATABASE_PASSWORD、SUPER_USER、SUPER_PASS。
镜像暴露3735/TCP端口。
问题咨询请使用Discussions; 错误报告请提交至仓库Issue Tracker。
选择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_系列变量,将在数据库准备就绪后创建超级用户。
数据库就绪后,可随时通过以下命令创建超级用户(按提示操作):
bashdocker exec -it {container_name} python manage.py createsuperuser
若未设置AUTO_UPDATE,可手动更新:
bashdocker exec -it {container_name} python manage.py migrate
需挂载有效证书。默认Etebase查找/certs/crt.pem和/certs/key.pem,若更改位置,需通过X509_CRT和X509_KEY环境变量指定。
Etebase服务器已升级至Django 4.2+,需设置有效的CSRF_TRUSTED_ORIGINS。解决方法:将服务器域名/IP添加到etebase-server.ini的[allowed_hosts] section。
若为新安装且无ini文件,可通过ALLOWED_HOSTS环境变量生成正确的ini文件。
示例:
ini[allowed_hosts] allowed_host1 = example.com allowed_host2 = api.example.com allowed_host3 = 10.0.0.1 ; 支持通配符,但单独*无效 allowed_host4 = *.etebase.example.com
更多详情见PR:etesync/server#183。
自0.14.0版本起,不再支持arm/v7架构的Docker镜像。因Etebase Server的许多依赖项在arm/v7架构上使用默认Python基础镜像构建变得困难或无法实现。
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 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务