总结下debian12系统搭建seafile11服务器踩的坑

很多都在说,我为什么要用debian12。用debian12,要从nas系统的选择讲起了,开始用黑裙,当从6.x升级到7.x搞得我胆战心惊的时候就在想能不用黑裙不,白裙性能太差,不考虑,然后就找开源nas系统,目前流行的就是TrueNAS和OMV,前者不知道是我太菜还是怎么的,社区插件总是各种问题,官方插件又太少,虽然是debian,但是你后天的操作有些是无效的,甚至在升级后就不见了,然后就转到OMV,当知道这个可以在debian12下装OMV7时,毫不犹豫就转过来了,然后就seafile安装了。为什么不用docker,我有点固执,因为我知道docker虽好,隔离环境,配置简单,担最大的弱点就是处理大量文件是短板,我也不知道短多少,但是我nas主要用途就是同步,这个我接受不了。

由于网上教程太少,论坛活跃度也不高,能找到靠谱的教程不多,debian12安装seafile11网上无教程,至少我没有找到。官方中文网里的教程Pyhon依赖安装甚至只写支持到debian11,就连百度都说不兼容,差点让我放弃。然后就去英文教程看了下,依赖末尾有写debian12的依赖,让我信心倍增,然后开始安装,依赖安装遇到的第一个坑就是pip3,由于对Pyhon不了解,直接安装不了,后面才了解到要建一个虚拟系统,然后才安装完成依赖,接下来第二个坑就是MariaDB数据库,这个以前也不怎么了解,官方教程里明确只能root用户安装,然就root安装了,跟着教程用seafile用户运行数据库脚本,选1新建数据库,然后因为权限,无法链接MariaDB的root,没有办法就自建数据库授权,然后装好了,seahub.sh,无法启动,然后也看不到错误日志,这下就懵了,无法了,然后就下载seafile10,然后一下子就启动了,然后我就相信seafile11不兼容了,第二天我突然在逛论坛,看到有个网友说改“gunicorn.conf.py”的“daemon = False”就可以看错误提示,然后就继续搞seafile11。看到日志显示是“ModuleNotFoundError: No module named 'captcha'”缺少环境变量,然后我又去看了下依赖包,不缺啊,没有办法,我又在seahub_settings.py配置文件增加指定路径,然后又报其他错误,我知道这肯定又是权限问题,无法读取依赖,然后又从新用seafile用户下载Pyhon依赖,继续运行./seahub.sh,还是报同样错误,然后我就放下了,第二天我突然想到,是不是虚拟环境隔离的原因,然后我立马打开电脑,进入虚拟环境运行,一下子就成功了,增加seahub_settings.py配置文件8000端口,然后就是第三个坑,就是webui无法访问,无任何错误日志,命令查看是端口已经监听的,想到新装系统,默认所有端口都开放的,还是抱着最后一丝希望,就增加8000和8082端口开放规则,居然成功了,哈哈。继续第四个坑就是nginx反代问题,由于我得nginx是装在局域网的另一个服务器上,因为自己的考虑,没有在本机上用nginx,然后直接放教程里的反代配置进去,然后内网正常了,外网上传啥的都正常,webui无法正常显示,如下图,只能去查nginx错误日志,提示“Nginx 尝试从 /home/user/haiwen/seafile-server-latest/seahub 目录加载文件,但由于文件不存在”,笑死我了,居然抄作业,别人名字都抄上去了。

然后继续增加如下反代规则:
location /media/ {
    proxy_pass http://192.168.3.102:8000;  # Seafile 服务器的地址和端口
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

就正常了。

代理路径seahub/media 就行

其实,很多所谓的坑,只要认真看下安装文档就可以完全避免的。 :upside_down_face:

1 个赞

对头!!!!!!!!!!!!!!

访问页面倒是能进,但是登录不了,请教下解决方案
禁忌(403)

CSRF验证失败。请求被中止。

通过 DEBUG=True 可以获得更多信息。

Seafile 11 使用 Django 4.2。Django 4.2 修改了 CSRF 的认证方式,要求 HTTP 头部中的 origin 字段和 host 字段一致。

这里的不一致有可能是旧版的 Nginx 配置导致的,可以修改 Nginx 配置来解决。如下,把 $http 改成 $http_host

  location / {
        ...
        proxy_set_header Host $http_host;
        ....

也可以通过在 seahub_settings.py 中设置 CSRF_TRUSTED_ORIGINS 来解决这个问题

CSRF_TRUSTED_ORIGINS = ["https://<your-domain>"]

感谢解惑,我试试

感谢感谢,可以了

工程师好,再请教一下,seafile11设置了两次验证后,webdav用密钥也无法登录,是需要nginx设置什么吗?这个密钥是OTP里的密钥撒,打扰您了