I. 前提条件
1.1 环境要求
1.安装 Seafile 专业版至少需要 4 核 CPU 和 4GB 内存。
2.确保 mmapfs 计数不会导致像内存不足这样的异常
| |
添加以下参数:
| |
加载配置文件:
| |
查询是否生效:
| |
3.如果你的机器没有足够的配置,在首次部署 Seafile Pro Docker 之后,可以通过以下两种方式之一来满足最低要求为 2 个核心和 2GB 内存:
- 使用 SeaSearch ,一个基于开源搜索引擎 ZincSearch 构建的轻量级搜索引擎,作为索引器。
- 在另一台机器上部署 Elasticsearch,并在
seafevents.conf文件中修改es_host和es_port。
1.2 本文约定
本文使用以下约定:
/opt/seafile是存储 Seafile docker compose 文件的目录。如果您将 Seafile 放在不同的目录中,请相应地调整所有路径。- Seafile 使用两个 Docker 卷
来保存其数据库和 Seafile Docker 容器中生成的数据。卷的主机路径分别是
/opt/seafile-mysql和/opt/seafile-data,不建议更改这些路径。 如果您修改了路径,请在按照这些说明进行操作时考虑到这一点。 - Seafile 和 Nginx 的所有配置和日志文件都存储在 Seafile 容器的卷中。
II. 安装 Docker
III. 环境准备
3.1 下载镜像
| |
3.2 环境配置
从 Seafile Docker 12.0开始,我们使用以下三个配置文件: .env , seafile-server.yml 和 caddy.yml 。
| |
打开 .env 配置,为以下字段设置符合要求的值(具体值要求请查看官方部署文档
)
| |
创建 Elasticsearch 数据目录
| |
3.3 修改端口
文件 caddy.yml 默认使用 80 、443 端口,在启动容器前请检查端口是否被占用
:
| |
若已被占用,请修改为其它端口(须与 .env 配置中 SEAFILE_SERVER_HOSTNAME 字段值 IP 端口一致),示例:
| |
若文件 caddy.yml 默认端口有修改,还须修改 seafile-server.yml 和 seadoc.yml 文件中以下 caddy 部分:
| |
因为 .env 中配置的 SEAFILE_SERVER_HOSTNAME 值带有端口号,不被 Caddy 接受,这里必须要改。
3.4 放行端口
如在云服务器部署,除云服务器自身防火墙外,还需在云安全组中开放相关端口。
IV. 启动容器
4.1 启动容器
在 /opt/seafile 目录执行 docker compose 启动容器:
| |
4.2 访问资源
访问 SEAFILE_SERVER_HOSTNAME 配置的主机名,如果 caddy.yml 文件绑定的是非 80 端口,还需在主机名后加入端口访问,如:seafile.example.com:8080 ,默认用户名是 INIT_SEAFILE_ADMIN_EMAIL 设置的值,默认密码是 INIT_SEAFILE_ADMIN_PASSWORD 设置的值。
4.3 维护指令
| |
V. 排错
5.1 502 Bad Gateway
5.1.1 错误提示
访问 http://seafile.example.com 提示:502 Bad Gateway
5.1.2 故障解决
修改 .env 配置后,须重新部署 Seafile ,步骤如下👇
1.停止并移除相关容器:
| |
2.启动容器
| |
5.2 文件上传失败
5.2.1 错误提示
提示文件上传失败,网络错误,重新上传。
5.2.2 故障解决
如果在 caddy.yml 文件修改了默认绑定端口,除了在 .env 文件中修改 SEAFILE_SERVER_HOSTNAME=172.16.x.x:8080 ,还需在 seafile-server.yml 和 seadoc.yml 文件中修改 caddy: ${SEAFILE_SERVER_PROTOCOL:-http}://${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty} 为 caddy: http://172.16.x.x 。
5.2 初始管理员角色修改
初始管理员用户默认角色
为 default_admin ,如果不小心设置成了其它角色,如 system_admin ,可通过以下步骤恢复。
1.登录 Seafile 数据库
| |
输入 INIT_SEAFILE_MYSQL_ROOT_PASSWORD 字段的值(数据库初始密码)。查看数据库:
| |
2.选择 seahub_db 数据库
| |
查看初始管理员用户是否存在于角色表:
| |
3.如果存在初始管理员用户,更新记录
| |
如果不存在,需要插入记录:
| |
4.登出数据库
| |
5.重启容器
| |