PunyGear

  • 计算机
  • 旅游
  • 3D打印
  • 游戏
  • 生活
每个小齿轮都有推动时代前进的力量。
  1. 首页
  2. 计算机
  3. 正文

最傻瓜式Seafile部署:宝塔面板Docker部署Seafile并开启https

2024-12-31 636点热度 1人点赞 0条评论

Seafile 是一款优秀的同步盘工具。我用了很多年。个人喜欢这种便捷的同步盘功能。但是之前用的Seafile版本有点老了。最近折腾一下,换成较新的Seafile11版本(Seafile最新版本是12。我没安装Seafile 12版本,我用的是11版本。感觉自己VPS带不动12版本。12版本好像采用了新的机制。以后有空再研究。)。本次部署是在VPS上采用宝塔面板中 Docker 来部署Seafile,并开启 https 。这种方法能让大多数用户更容易上手。话不多说,请按以下步骤操作。

1. 解析好域名指向VPS的IP地址。

2. 安装宝塔面板。VPS操作系统推荐使用Debian或者Ubuntu。宝塔面板安装地址:https://www.bt.cn/new/download.html

3. 一键安装LNMP和Docker。安装好宝塔面板后,首次登录后,请先一键安装LNMP。然后再进入Docker菜单,安装好Docker。

上图是宝塔面板的一键安装LNMP界面,下图是Docker菜单中的安装按钮。

4. 创建Seafile容器。先在宝塔面板Docker中创建容器编排。

以下是Seafile 11版本的yaml文本。可以去下载Seafile官方yaml:https://cloud.seafile.com/published/seafile-manual-cn/docker/%E7%94%A8Docker%E9%83%A8%E7%BD%B2Seafile.md

services:
  db:
    image: mariadb:10.11
    container_name: seafile-mysql
    environment:
      - MYSQL_ROOT_PASSWORD=db_dev  # Requested, set the root's password of MySQL service.
      - MYSQL_LOG_CONSOLE=true
      - MARIADB_AUTO_UPGRADE=1
    volumes:
      - /opt/seafile-mysql/db:/var/lib/mysql  # Requested, specifies the path to MySQL data persistent store.
    networks:
      - seafile-net

  memcached:
    image: memcached:1.6.18
    container_name: seafile-memcached
    entrypoint: memcached -m 256
    networks:
      - seafile-net
          
  seafile:
    image: seafileltd/seafile-mc:11.0-latest
    container_name: seafile
    ports:
      - "8080:80"
      - "8443:443"  # If https is enabled, cancel the comment.
    volumes:
      - /opt/seafile-data:/shared   # Requested, specifies the path to Seafile data persistent store.
    environment:
      - DB_HOST=db
      - DB_ROOT_PASSWD=db_dev  # 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=me@example.com # Specifies Seafile admin user, default is 'me@example.com'.
      - SEAFILE_ADMIN_PASSWORD=asecret     # Specifies Seafile admin password, default is 'asecret'.
      - SEAFILE_SERVER_LETSENCRYPT=false   # Whether use letsencrypt to generate cert.
      - SEAFILE_SERVER_HOSTNAME=sftest.example.com # Specifies your host name.
    depends_on:
      - db
      - memcached
    networks:
      - seafile-net

networks:
  seafile-net:

yaml中,请开启8080和8443端口(可自行调整端口号)。SEAFILE_ADMIN_EMAIL和SEAFILE_ADMIN_PASSWORD请替换自己的账户和密码。SEAFILE_SERVER_LETSENCRYPT请选择false,因为如果选择true,在部署Seafile容器过程中可能会申请证书失败,从而导致部署Seafile的文件不完整,无法正常启动Seafile。我们稍后使用宝塔面板来申请证书。创建好容器编排后,即可创建容器,如下图所示。

部署完Seafile容器后,应该可以通过8080端口访问到Seafile服务,如下图。注意,这个时候通过8443端口是无法访问Seafile服务的。

5. 申请ssl证书。使用宝塔面板网站来部署一个静态网站,并申请ssl证书。注意域名使用同一个。

申请完证书后点击保存,并下载证书到本地。

6. 在Seafile容器目录下创建ssl文件夹。并将ssl证书上传在ssl文件夹中。

 

这里注意一下。第6步中下载的证书zip文件,请使用Nginx文件夹中证书。将其中privkey.key文件的后缀改为pem,即privkey.pem。因为宝塔面板中生成保存的key文件是pem后缀的文件。后续我们会创建自动脚本,将宝塔面板中的证书文件每天同步到ssl文件夹中。这样宝塔面板自动续签证书后,可以同步替换Seafile容器中使用的证书。

7. 修改Seafile容器nginx的配置。这个nginx是Seafile容器中的nginx,不是宝塔面板安装LNMP中的nginx。Seafile容器中nginx配置文件路径是:/opt/seafile-data/nginx/conf/seafile.nginx.conf

上图红色正方形中代码替换成下图内容:

替换代码如下:

server {
    listen  80;
    server_name  sftest.example.com;
    rewrite ^ https://$http_host$request_uri? permanent;	#强制将http重定向到https
    server_tokens off;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    ssl_certificate /shared/ssl/fullchain.pem;        #cacert.pem 文件路径
    ssl_certificate_key /shared/ssl/privkey.pem;	#privkey.pem 文件路径
    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 sftest.example.com;
    proxy_set_header X-Forwarded-For $remote_addr;
    server_tokens off;

这里注意把两个域名替换成自己的域名。修改完之后,在seafile容器终端中重新加载一下nginx配置。命令如下:

/usr/sbin/nginx -s reload

做这一步目的是看看nginx配置是否有错。如果有错的话,执行该命令会报错,请仔细检查。如果正常,则如下图所示。

8. 修改Seafile容器的Seafile配置。路径是:/opt/seafile-data/seafile/conf/seahub_settings.py

主要就是修改SERVICE_URL和FILE_SERVER_ROOT。一个是把http改成https,另一个是在域名后加上8443端口号。修改完后保存,重启容器,如下图。

重启完之后,通过https://域名:8443应该就可以访问Seafile服务。此时已经开启https。同时8080端口无法访问Seafile服务。

9. 网页测试Seafile网站。到资料库里面上传一个文件,看看能否成功。有时Seafile网站能顺利打开,但是上传文件会提示网络错误。这说明设置上还是有问题。请检查上述步骤和配置。

10. 客户端测试Seafile。使用客户端注意地址要加上https和端口号。

11. 设定定时脚本替换证书。在宝塔面板中创建计划任务。每天定时同步ssl证书到Seafile容器ssl文件夹中。这样宝塔面板自动续签证书可以同步到Seafile里面。重启容器是为了能让新证书生效。

cp -f /www/server/panel/vhost/cert/sftest.example.com/fullchain.pem /opt/seafile-data/ssl
cp -f /www/server/panel/vhost/cert/sftest.example.com/privkey.pem /opt/seafile-data/ssl
docker stop seafile
docker start seafile

注意替换自己的域名。

 

至此,使用宝塔面板Docker部署Seafile并开启https操作完成。Seafile开启https总体上会增加同步盘的安全性。希望上述操作对有需求的朋友有帮助。

参考链接:https://cloud.seafile.com/published/seafile-manual-cn/overview/components.md

相关

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: Docker Seafile 宝塔面板
最后更新:2025-06-29

PunyGear

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2024 PunyGear. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang