本文最后更新于 2024-02-17,文章内容可能已经过时。

安装seafile

pro版本三用户免费

1. 安装docker

# 安装 Docker
yum -y install docker
# 启动 Docker
systemctl start docker
# 设置 Docker开机自启动
systemctl enable docker

#-----------------------------其它 Docker常用命令-----------------------------
# 查看版本号
docker -v
# 查看 Docker 状态,报错时候使用
systemctl status docker
# 停止 Docker
systemctl stop docker
# 重启 Docker 
systemctl restart docker 
# 查看正在运行的容器
docker ps 
# 查看所有容器,包括停止的容器
docker ps -a
# 查看容器占用资源情况
docker stats
# 查看容器的日志(可在这查看报错信息)
docker logs 容器名或ID
# 启动已被停止的容器
docker start 容器名或ID
# 停止运行中的容器
docker stop 容器名或ID
# 重启容器
docker restart 容器名或ID

2. 安装 docker-compose

# 添加企业版附加包
yum -y install epel-release
# 安装pip
yum -y install python-pip
# 更新pip
pip install --upgrade pip
# 安装docker-compose
pip install docker-compose

# 查看docker compose的版本
docker-compose version

注意
centos7及以下版本执行安装pip install --upgrade pip可能会报错,原因是centos7及以下版本是python2的版本,这里需要安装python3然后再用pip3进行更新和安装Centos7 升级Python

3. 下载并修改 docker-compose.yml

引用 Seafile 官方文档:

下载 docker-compose.yml 示例文件到您的服务器上,然后根据您的实际环境修改该文件。尤其是以下几项配置:
MySQL root 用户的密码 (MYSQL_ROOT_PASSWORD and DB_ROOT_PASSWD)
持久化存储 MySQL 数据的 volumes 目录 (volumes)
持久化存储 Seafile 数据的 volumes 目录 (volumes)
持久化存储 Elasticsearch 索引数据的 volumes 目录 (volumes)
下载docker-compose.yml到本地,然后修改完成后上传到服务器/opt目录。

注意
opt目录可以自选

设置 mysql 的 root 密码
Seafile 中需要填写第一步设置的 mysql 密码
设置 Seafile 管理员账号邮箱
设置 Seafile 管理员账号密码
开启 https 443 端口
设置 https 域名

version: '2.0'
services:
  db:
    image: mariadb:10.5
    container_name: seafile-mysql
    environment:
      - MYSQL_ROOT_PASSWORD=yourpwd  # 配置数据库root用户密码
      - MYSQL_LOG_CONSOLE=true
    volumes:
      - /opt/seafile-mysql/db:/var/lib/mysql  # 配置宿主机和容器路径映射
    networks:
      - seafile-net

  memcached:
    image: memcached:1.6
    container_name: seafile-memcached
    entrypoint: memcached -m 256
    networks:
      - seafile-net

  elasticsearch:
    image: elasticsearch:7.16.2
    container_name: seafile-elasticsearch
    environment:
      - discovery.type=single-node
      - bootstrap.memory_lock=true
      - xpack.security.enabled=false
      - "ES_JAVA_OPTS=-Xms100m -Xmx300m"
    volumes:
      - /opt/seafile-elasticsearch/data:/usr/share/elasticsearch/data  # 配置宿主机和容器的映射路径
    networks:
      - seafile-net
         
  seafile:
    image: docker.seafile.top/seafileltd/seafile-pro-mc:latest
    container_name: seafile
    ports:
      - "28880:80"
      - "28881:8000"
      - "28882:8082"
      - "28883:8080"
#     - "443:443"  # If https is enabled, cancel the comment.
    volumes:
      - /opt/seafile-data:/shared   # 配置映射路径
    environment:
      - DB_HOST=db
      - DB_ROOT_PASSWD=yourpwd  # Requested, the value shuold be root's password of MySQL service.
#      - TIME_ZONE=Asia/Shanghai # Optional, default is UTC. Should be uncomment and set to your local time zone.
      - SEAFILE_ADMIN_EMAIL=your mail # 配置管理员用户邮箱
      - SEAFILE_ADMIN_PASSWORD=yourpwd    # 配置管理员密码
      - SEAFILE_SERVER_LETSENCRYPT=false   # Whether to use https or not
      - SEAFILE_SERVER_HOSTNAME=yourhost # 如果启用https配置你的域名
    depends_on:
      - db
      - memcached
      - elasticsearch
      #- onlyoffice
    networks:
      - seafile-net
      
      
  
  onlyoffice:
    image: onlyoffice/documentserver
    container_name: onlyoffice
    restart: always
    ports:
      - "8443:443"
      - "8088:80"
    volumes:
      - /opt/seafile-onlyoffice/log:/var/log/onlyoffice 
      - /opt/seafile-onlyoffice/data:/var/www/onlyoffice/Data 
      - /opt/seafile-onlyoffice/lib:/var/lib/onlyoffice 
      - /opt/seafile-onlyoffice/db:/var/lib/postgresql onlyoffice/documentserver
    
networks:
  seafile-net:



以上映射路径可以自己选择

4. 启动seafile

注意:seafile 9.0 版本,需要手动在宿主机上创建 elasticsearch 的映射路径,并且给 777 权限,否则 elasticsearch 启动会报路径权限问题,命令如下,通常如果启动后内存占用过高或者无法打开,可以尝试排错
mkdir -p /opt/seafile-elasticsearch/data  && chmod 777 -R /opt/seafile-elasticsearch/data
cd /opt
docker-compose up -d
  1. 配置 Seafile https ssl 证书
    服务初始化完成后,需要上传自己的 ssl 证书。

5. 配置nginx

  1. 创建 ssl 目录,然后将证书上传到该目录
    seafile容器自带了nginx,所以直接配置即可
    mkdir /opt/seafile-data/ssl
  2. 修改 Nginx 的配置文件,配置ssl。
    vim /opt/seafile-data/nginx/conf/seafile.nginx.conf
    ssl 配置如下:
server {
	listen 443;
    server_name example.seafile.com; # 你的域名
    
    ssl on;
    ssl_certificate /shared/ssl/你的证书.pem;        #pem 文件路径
    ssl_certificate_key /shared/ssl/你的证书.key;    #pem 文件路径
    ssl_session_timeout 5m;
    ssl_session_cache shared:SSL:5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
	ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
    #ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
    ssl_prefer_server_ciphers on;

    proxy_set_header X-Forwarded-For $remote_addr;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
    server_tokens off;
    # 注释掉80端口自动转发到443端口,添加一句'error_page 497 301 https://$http_host$request_uri;',这样就可以实现http自动跳转到https了。
    error_page 497 301 =307 https://v.itmm.wang:6443$request_uri;
    
    ... 后面的内容保持不变
    location / {        
       ... 
    }
    ...
}
  1. 配置完成后重启nginx
    docker exec -it seafile /usr/sbin/nginx -s reload

6. 防火墙放行端口

开放端口

firewall-cmd --zone=public --add-port=443/tcp --permanent

顺便把 OnlyOffice 用到的两个端口也开放,后面就不用再开了

firewall-cmd --zone=public --add-port=8088/tcp --permanent
firewall-cmd --zone=public --add-port=8443/tcp --permanent

重载防火墙

firewall-cmd --reload

这时候应该可以通过你的域名https://example.seafile.com访问Seafile主页了。

安装onlyoffice

参考 https://blog.itmm.wang/docker-seafilepro-onlyoffice-centos/#二、安装OnlyOffice
该插件用于在线编辑网盘上的文档,实现协同办公,但是此插件要求配置较高,至少服务器内存4G以上,否则会卡死,如果单纯做网盘不建议安装。