Linux · 2022年3月31日

Docker版Seafile支持https的方法

用Seafile官方的指导方法就可以轻松完成部署工作,本教材主要介绍https的开启方法。

一、部署环境介绍

1.网络环境

家庭网络,没有80/443端口,所以只能用端口映射的方法来解决。外网8088映射到内网80,外网4430映射到内网443

2.虚拟机

双核1G内存

3.https证书申请

使用acme.sh申请证书。

curl https://get.acme.sh | sh -s email=my@example.com

申请证书

./acme.sh --issue -d *.iteait.com  --dns dns_dp --server https://acme.freessl.cn/v2/DV90/directory/xxxxxxxxxxxx #专属ACME地址

把申请到的证书安装到指定文件夹

./acme.sh --install-cert -d *.iteait.com \
--fullchain-file      /opt/seafile-data/ssl/*.iteait.com.cer  \
--key-file       /opt/seafile-data/ssl/*.iteait.com.key  

二、修改一些配置文件

1.修改/opt/seafile-data/nginx/conf/seafile.nginx.conf 文件

如果您想要使用自己的 SSL 证书,而且如果用来持久化存储 Seafile 数据的目录为 /opt/seafile-data,您可以做如下处理:

创建 /opt/seafile-data/ssl 目录,然后拷贝您的证书文件和密钥文件到ssl目录下。

按照如下示例修改 Nginx 的配置文件/opt/seafile-data/nginx/conf/seafile.nginx.conf。请不要更改该配置文件的文件名。

server {
    listen 80;
    server_name example.seafile.com default_server;
    location / {
        rewrite ^ https://$host$request_uri? permanent;
    }
}

server {
    listen 443;
    ssl on;
    ssl_certificate      /shared/ssl/your-ssl-crt.crt;
    ssl_certificate_key  /shared/ssl/your-ssl-key.key;
    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;
    
    server_name example.seafile.com;
    ...

重新加载 Nginx 的配置文件:docker exec -it seafile /usr/sbin/nginx -s reload

或者重启 docker-compose restart

三、一些问题的解决

1.可以正常打开登陆页面,输入密码后出现403 Forbidden

image

解决方法:

修改 /opt/seafile-data/seafile/conf/seahub_settings.py

在文件末尾增加下面一行就可以了。

CSRF_TRUSTED_ORIGINS = ['seafile.example.com:8088']

2.登陆成功后,无法查看和下载文件

无法下载

解决办法:

以管理员帐号登陆Seafile,进入系统设置,在设置里修改SERVICE_URL和FILE_SERVER_ROOT到正确的位置。