I. 前提条件

1.1 环境要求

1.安装 Seafile 专业版至少需要 4 核 CPU 和 4GB 内存。

2.确保 mmapfs 计数不会导致像内存不足这样的异常

1
2
3
cd /etc/sysctl.d/
touch 101-sysctl.conf
vim 101-sysctl.conf

添加以下参数:

1
2
# modify vm.max_map_count
vm.max_map_count=262144

加载配置文件:

1
sudo sysctl --system

查询是否生效:

1
sysctl <变量名>

3.如果你的机器没有足够的配置,在首次部署 Seafile Pro Docker 之后,可以通过以下两种方式之一来满足最低要求为 2 个核心和 2GB 内存:

  • 使用 SeaSearch ,一个基于开源搜索引擎 ZincSearch 构建的轻量级搜索引擎,作为索引器。
  • 在另一台机器上部署 Elasticsearch,并在 seafevents.conf 文件中修改 es_hostes_port

1.2 本文约定

本文使用以下约定:

  • /opt/seafile 是存储 Seafile docker compose 文件的目录。如果您将 Seafile 放在不同的目录中,请相应地调整所有路径。
  • Seafile 使用两个 Docker 卷 来保存其数据库和 Seafile Docker 容器中生成的数据。卷的主机路径分别是 /opt/seafile-mysql/opt/seafile-data ,不建议更改这些路径。 如果您修改了路径,请在按照这些说明进行操作时考虑到这一点。
  • Seafile 和 Nginx 的所有配置和日志文件都存储在 Seafile 容器的卷中。

II. 安装 Docker

Install Docker on RHEL | 凡人博客

III. 环境准备

3.1 下载镜像

1
docker pull seafileltd/seafile-pro-mc:13.0-latest

3.2 环境配置

从 Seafile Docker 12.0开始,我们使用以下三个配置文件: .env , seafile-server.ymlcaddy.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
mkdir /opt/seafile
cd /opt/seafile

# Seafile PRO 13.0
wget -O .env https://manual.seafile.com/13.0/repo/docker/pro/env
wget https://manual.seafile.com/13.0/repo/docker/pro/seafile-server.yml
wget https://manual.seafile.com/13.0/repo/docker/pro/elasticsearch.yml
wget https://manual.seafile.com/13.0/repo/docker/seadoc.yml
wget https://manual.seafile.com/13.0/repo/docker/caddy.yml

vim .env

打开 .env 配置,为以下字段设置符合要求的值(具体值要求请查看官方部署文档

1
2
3
4
5
6
7
8
SEAFILE_SERVER_HOSTNAME=seafile.example.com
...
JWT_PRIVATE_KEY=
...
SEAFILE_MYSQL_DB_PASSWORD=PASSWORD
...
INIT_SEAFILE_ADMIN_EMAIL=me@example.com
INIT_SEAFILE_ADMIN_PASSWORD=asecret

创建 Elasticsearch 数据目录

1
2
mkdir -p /opt/seafile-elasticsearch/data
chmod 777 -R /opt/seafile-elasticsearch/data

3.3 修改端口

文件 caddy.yml 默认使用 80443 端口,在启动容器前请检查端口是否被占用

1
ss -lntup | grep :端口号

若已被占用,请修改为其它端口,示例:

1
2
3
4
5
6
services:
    caddy:
        ...
        ports:
            - 8080:80
            - 8443:443

3.4 放行端口

如在云平台部署,除云服务器自身防火墙外,还需在云安全组中开放相关端口。

Firewalld 简单配置 | 凡人博客

IV. 启动容器

4.1 启动容器

/opt/seafile 目录执行 docker compose 启动容器:

1
docker compose up -d

4.2 访问资源

访问 SEAFILE_SERVER_HOSTNAME 配置的主机名,如果 caddy.yml 文件绑定的是非 80 端口,还需在主机名后加入端口访问,如:seafile.example.com:8080 ,默认用户名是 INIT_SEAFILE_ADMIN_EMAIL 设置的值,默认密码是 INIT_SEAFILE_ADMIN_PASSWORD 设置的值。

V. 排错

5.1 502 Bad Gateway

5.1.1 错误提示

访问 http://seafile.example.com 提示:502 Bad Gateway

5.1.2 故障解决

⚠️ 重要警告:此操作将清除该 Seafile 实例数据库中的所有账号、设置和文件数据。请确保你不需要保留这些旧的数据。


1.停止并移除相关容器:

1
docker compose down

2.删除旧的数据挂载目录(如果是已存储数据,建议重命名备份,而不是直接删除):

1
2
3
4
5
rm -rf seafile-data/
rm -rf seadoc-data/
rm -rf seafile-caddy/
rm -rf seafile-mysql/
rm -rf seafile-elasticsearch/

VI. 参考文档

部署 Seafile | Seafile