
Docker镜像用于Etebase Server(也称为EteSync 2.0),基于https://github.com/tasn%E7%9A%84https://github.com/etesync/server%E4%BB%93%E5%BA%93%E6%9E%84%E5%BB%BA%E3%80%82
以下标签基于最新Python镜像和最新版本的Etebase Server构建:
latest https://github.com/victor-rds/docker-etebase/blob/master/tags/base/Dockerfileslim https://github.com/victor-rds/docker-etebase/blob/master/tags/slim/Dockerfilealpine https://github.com/victor-rds/docker-etebase/blob/master/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,现已不再支持(详见https://github.com/victor-rds/docker-etebase/issues/103%EF%BC%89%EF%BC%9B/entrypoint.sh的额外日志,不影响Etebase服务器输出;set -x运行/entrypoint.sh,用于调试;false;与etebase-server.ini配置文件相关的变量
/data/etebase-server.ini;/data/media;sqlite(默认)和postgres;/data/secret.txt;false;en-us;UTC,需为有效的tz数据库名称(有效名称见<[***]>);false;² 更多详情请参考https://github.com/etesync/server#configuration%E3%80%82
若DB_ENGINE设为**sqlite**:
/data/db.sqlite3。若DB_ENGINE设为**postgres**,可使用以下变量(仅列出默认值):
etebase;DATABASE_NAME相同;DATABASE_USER相同;database;5432。LDAP集成(高级用法,详情参考https://github.com/etesync/server/commit/fac36aae***fdc5ae4874065a3528626ef68%EF%BC%89%EF%BC%9A
%%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端口。
问题咨询请使用https://github.com/victor-rds/docker-etebase/discussions%EF%BC%9B 错误报告请提交至仓库https://github.com/victor-rds/docker-etebase/issues%E3%80%82
选择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 .
方法1:首次运行时使用环境变量
首次运行时设置SUPER_系列变量,将在数据库准备就绪后创建超级用户。
方法2:Python Shell
数据库就绪后,可随时通过以下命令创建超级用户(按提示操作):
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:https://github.com/etesync/server#183%E3%80%82
自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 https://github.com/victor-rds/docker-etesync-server/blob/legacy/tags/base/Dockerfilelegacy-slim https://github.com/victor-rds/docker-etesync-server/blob/legacy/tags/slim/Dockerfilelegacy-alpine https://github.com/victor-rds/docker-etesync-server/blob/legacy/tags/alpine/Dockerfile您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务