首先给出明确建议:切勿使用 apt install seafile-server。官方源中的版本通常滞后,安装后极易缺少必要模块、启动失败,并伴随大量错误——推荐直接下载官方预编译的 tarball 安装。以下是基于实际踩坑经验汇总的详细安装指南。

为何不推荐通过 apt 或 yum 安装 Seafile
Debian/Ubuntu 官方仓库中的 seafile-server 版本通常停留在 7.1.x,而当前稳定版已超过 12.0。版本滞后会引发一系列连锁问题,例如缺少 systemd 单元文件、Python 依赖混乱,常见的错误有 ImportError: No module named 'django' 和 seaf-server not found。同样,CentOS/RHEL 的 EPEL 软件包也较为陈旧,且不兼容新版 MySQL 认证插件。官方文档反复强调:务必选择官网提供的 tarball 进行安装。
下载和解压 Seafile tarball 的关键步骤
请从 Seafile 官方网站下载页面获取 seafile-server_ 文件,注意不要下载源代码、Docker 镜像或 GitHub Actions 构建产物。解压后需确保目录结构正确:在 seafile-server- 目录下应直接包含 setup-seafile.sh、seafile.sh、seahub.sh 等脚本文件。
- 错误做法:使用
tar -zxvf ... -C /opt指定解压路径,会导致多一层嵌套,使得./setup-seafile.sh无法定位自身。 - 正确做法:在目标目录下直接执行
tar -zxvf seafile-server_*.tar.gz,不加-C参数。 - 验证步骤:进入解压后的目录,执行
ls -l,应看到conf/、seafile-data/、logs/等子目录为空(后续脚本会自动创建)。
MySQL 配置中容易卡住的三个关键点
当执行 setup-seafile-mysql.sh 并在“creating seafile database…”阶段卡住时,90% 的情况是由于 MySQL 权限或连接配置问题。以下细节需要特别留意:
- 创建用户时务必使用
CREATE USER 'seafile'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxx';,因为 CentOS 7 默认使用auth_socket插件,不兼容将直接导致卡死。 - 授权语句中需包含
CREATE、DROP、SELECT、INSERT、UPDATE、DELETE等权限,缺一不可。 - 在脚本中填写数据库主机时,应使用
localhost而非127.0.0.1,MySQL 通过 socket 连接逻辑不同,使用 IP 会导致失败。 - 检查
/etc/my.cnf配置文件中是否包含skip-networking,并确保bind-address未被强制设置为127.0.0.1。
启动后局域网无法访问?修改 gunicorn.conf 和防火墙设置
默认情况下,seahub 仅监听 127.0.0.1:8000,因此其他设备访问 https:// 时会超时。解决步骤非常简单:
- 编辑
conf/gunicorn.conf文件,将bind = "127.0.0.1:8000"修改为bind = "0.0.0.0:8000"。 - 在 Ubuntu/Debian 系统中执行
sudo ufw allow 8000开放端口。 - 在 CentOS/RHEL 系统中执行
sudo firewall-cmd --permanent --add-port=8000/tcp && sudo firewall-cmd --reload。 - 修改完成后重启服务:
./seafile.sh restart && ./seahub.sh restart。
一个容易被忽视的要点是:由 setup-seafile.sh 自动创建的路径(如 conf/、seafile-data/、logs/)在创建后不可移动或重命名,否则 seafile.sh 启动时会因硬编码的相对路径无法找到而直接报错退出。
