
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
基于Ubuntu的Seafile Server Docker容器,源自https://github.com/m3adow/dockerfiles%EF%BC%8C%E7%94%A8%E4%BA%8E%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2Seafile%E6%96%87%E4%BB%B6%E5%90%8C%E6%AD%A5%E4%B8%8E%E5%85%B1%E4%BA%AB%E6%9C%8D%E5%8A%A1%E3%80%82%E8%AF%A5%E9%95%9C%E5%83%8F%E6%8F%90%E4%BE%9B%E8%87%AA%E5%8A%A8%E5%8C%96%E9%85%8D%E7%BD%AE%E3%80%81%E7%89%88%E6%9C%AC%E5%8D%87%E7%BA%A7%E5%92%8C%E7%81%B5%E6%B4%BB%E7%9A%84%E6%95%B0%E6%8D%AE%E5%BA%93%E6%94%AF%E6%8C%81%EF%BC%8C%E9%80%82%E5%90%88%E4%B8%AA%E4%BA%BA%E6%88%96%E7%BB%84%E7%BB%87%E6%90%AD%E5%BB%BA%E7%A7%81%E6%9C%89%E4%BA%91%E5%AD%98%E5%82%A8%E7%B3%BB%E7%BB%9F%E3%80%82
!Docker Stars !Docker Pulls !Docker Build !Layers
garbage_collect: 运行垃圾回收器而非启动服务器autorun: 默认模式,必要时设置服务器、升级数据库后启动服务maintenance: 仅启动容器,可通过docker exec登录进行维护操作/seafile/ |-- ccnet |-- conf |-- seafile-data `-- seahub-data /opt/ `-- haiwen |-- ccnet -> /seafile/ccnet |-- conf -> /seafile/conf |-- logs |-- pids |-- seafile-data -> /seafile/seafile-data |-- seafile-server-5.1.3 |-- seafile-server-latest -> seafile-server-5.1.3 `-- seahub-data -> /seafile/seahub-data
所有重要数据存储在/seafile目录下,建议挂载该目录为卷(如示例配置所示),或分别挂载其子目录。
| 变量名 | 说明 |
|---|---|
SEAFILE_NAME | Seafile实例名称 |
SEAFILE_ADDRESS | Seafile访问URL |
SEAFILE_ADMIN | 管理员电子*** |
SEAFILE_ADMIN_PW | 管理员密码 |
使用MySQL/MariaDB时需配置:
| 变量名 | 说明 |
|---|---|
MYSQL_SERVER | MySQL服务器地址 |
MYSQL_USER | Seafile使用的MySQL用户名 |
MYSQL_USER_PASSWORD | MySQL用户密码 |
MYSQL_PORT(可选) | MySQL端口(默认3306) |
| 变量名 | 说明 | 默认值 |
|---|---|---|
MYSQL_USER_HOST | MySQL用户允许访问的主机 | % |
MYSQL_ROOT_PASSWORD | MySQL root密码(用于自动创建数据库) | - |
| 变量名 | 说明 | 默认值 |
|---|---|---|
MODE | 启动模式:autorun(默认)、run_only、maintenance、setup_mysql、setup_sqlite、update、diagnose、collect_garbage | autorun |
FILE_SERVER_ROOT | 设置seahub配置中的FILE_SERVER_ROOT变量 | - |
SERVICE_URL | 设置seahub配置中的SERVICE_URL变量 | - |
SEAHUB_DB_DIR | 当不挂载/seafile卷而单独挂载子目录时,指定seahub.db存放路径 | - |
docker runSQLite配置
bashdocker run -d -e SEAFILE_NAME=Seafile \ -e SEAFILE_ADDRESS=seafile.example.com \ -e SEAFILE_ADMIN=admin@seafile.example.com \ -e SEAFILE_ADMIN_PW=SuperSecretPassword \ -v /host/os/path:/seafile \ gronis/seafile
MySQL配置
bashdocker run -d -e SEAFILE_NAME=Seafile \ -e SEAFILE_ADDRESS=seafile.example.com \ -e SEAFILE_ADMIN=admin@seafile.example.com \ -e SEAFILE_ADMIN_PW=SuperSecretPassword \ -e MYSQL_SERVER=seafile-db \ -e MYSQL_USER=seafile \ -e MYSQL_USER_PASSWORD=SuperSecretDatabasePassword \ -e MYSQL_ROOT_PASSWORD=EvenMoreSuperSecretDatabasePassword \ -v /host/os/path:/seafile \ gronis/seafile
docker-composeSQLite配置
yamlversion: '2' services: seafile: image: gronis/seafile container_name: seafile restart: unless-stopped volumes: - ./seafile-container-data:/seafile:rw ports: - 8000:8000 - 8082:8082 environment: - SEAFILE_NAME=Seafile - SEAFILE_ADDRESS=seafile.example.com - SEAFILE_ADMIN=admin@seafile.example.com - SEAFILE_ADMIN_PW=SuperSecretPassword
MySQL配置
yamlversion: '2' services: seafile: image: gronis/seafile container_name: seafile restart: unless-stopped depends_on: - seafile-db links: - seafile-db volumes: - ./seafile-container-data:/seafile:rw ports: - 8000:8000 - 8082:8082 environment: - SEAFILE_NAME=Seafile - SEAFILE_ADDRESS=seafile.example.com - SEAFILE_ADMIN=admin@seafile.example.com - SEAFILE_ADMIN_PW=SuperSecretPassword - MYSQL_SERVER=seafile-db - MYSQL_USER=seafile - MYSQL_USER_PASSWORD=SuperSecretDatabasePassword - MYSQL_ROOT_PASSWORD=EvenMoreSuperSecretDatabasePassword seafile-db: image: mariadb:latest container_name: seafile-db restart: unless-stopped volumes: - ./seafile-db-data:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=EvenMoreSuperSecretDatabasePassword
建议将容器部署在反向代理后,以下是使用Nginx反向代理和Let's Encrypt实现HTTPS的完整配置(假设域名为seafile.example.com):
yamlversion: '2' services: seafile: image: gronis/seafile container_name: seafile restart: unless-stopped depends_on: - seafile-db links: - seafile-db volumes: - ./seafile-container-data:/seafile:rw environment: - VIRTUAL_HOST=seafile.example.com - VIRTUAL_PORT=8000 - LETSENCRYPT_HOST=seafile.example.com - LETSENCRYPT_EMAIL=youremail@youremailprovider.com - SEAFILE_NAME=Seafile - SEAFILE_ADDRESS=seafile.example.com - SEAFILE_ADMIN=admin@seafile.example.com - SEAFILE_ADMIN_PW=SuperSecretPassword - SERVICE_URL=https://seafile.example.com - FILE_SERVER_ROOT=https://seafile.example.com/seafhttp - MYSQL_SERVER=seafile-db - MYSQL_USER=seafile - MYSQL_USER_PASSWORD=SuperSecretDatabasePassword - MYSQL_ROOT_PASSWORD=EvenMoreSuperSecretDatabasePassword seafile-db: image: mariadb:latest container_name: seafile-db restart: unless-stopped volumes: - ./seafile-db-data:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=EvenMoreSuperSecretDatabasePassword nginx: image: nginx:alpine container_name: nginx restart: always ports: - 80:80 - 443:443 volumes: - ./nginx/conf.d:/etc/nginx/conf.d:ro - ./nginx/vhost.d:/etc/nginx/vhost.d:ro - ./nginx/html:/usr/share/nginx/html - ./nginx/certs:/etc/nginx/certs:ro - ./nginx/htpasswd:/etc/nginx/htpasswd:ro nginx-gen: image: jwilder/docker-gen:0.7.3 container_name: nginx-gen restart: always depends_on: - nginx volumes_from: - nginx volumes: - /var/run/docker.sock:/tmp/docker.sock:ro - ./nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro - ./nginx/conf.d:/etc/nginx/conf.d:rw networks: - proxy-tier entrypoint: /usr/local/bin/docker-gen -notify-sighup nginx -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf letsencrypt-nginx-proxy-companion: image: nginxproxy/acme-companion container_name: letsencrypt-nginx-proxy-companion restart: unless-stopped depends_on: - nginx - nginx-gen volumes_from: - nginx volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - ./nginx/vhost.d:/etc/nginx/vhost.d:rw - ./nginx/certs:/etc/nginx/certs:rw environment: - NGINX_DOCKER_GEN_CONTAINER=nginx-gen
Seafile使用8082端口进行文件同步,需在Nginx中添加以下配置(保存至./nginx/vhost.d/seafile.example.com):
conflocation /seafhttp { rewrite ^/seafhttp(.*)$ $1 break; proxy_pass http://seafile:8082; client_max_body_size 0; proxy_connect_timeout 36000s; proxy_read_timeout 36000s; proxy_send_timeout 36000s; send_timeout 36000s; }
同时在Seafile服务的环境变量中添加:
yamlenvironment: - SERVICE_URL=[***] - FILE_SERVER_ROOT=[***]
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 gronis/seafile 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: