Seafile12社区版,不使用 caddy 和 seadoc 的部署记录,增加 Notification Server 部署记录

我做了反向代理,域名访问无法下载和上传文件不懂怎么回事

-- coding: utf-8 --

SECRET_KEY = “03fx&f8hj6xm8@bqakkkk$=7&#wv8gzrd4w+(v*$m#5wcpopn$”
SERVICE_URL = “https://88.11111111.xyz:8888

DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.mysql’,
‘NAME’: ‘seahub_db’,
‘USER’: ‘seafile’,
‘PASSWORD’: ‘ln19850201’,
‘HOST’: ‘db’,
‘PORT’: ‘3306’,
‘OPTIONS’: {‘charset’: ‘utf8mb4’},
}
}

CACHES = {
‘default’: {
‘BACKEND’: ‘django_pylibmc.memcached.PyLibMCCache’,
‘LOCATION’: ‘memcached:11211’,
},
‘locmem’: {
‘BACKEND’: ‘django.core.cache.backends.locmem.LocMemCache’,
},
}
COMPRESS_CACHE_BACKEND = ‘locmem’

TIME_ZONE = ‘Asia/Shanghai’
FILE_SERVER_ROOT = ‘https://88.11111111.xyz:8888/seafhttp
~

这些都不用改,仔细看官方文档,只用在 .env 文件中写:

SEAFILE_SERVER_HOSTNAME=88.11111111.xyz:8888
SEAFILE_SERVER_PROTOCOL=http

做好域名到 ip 的解析;端口做好外网 8888 端口映射到内网 80;

seahub_settings_py 相关字段改成下面这样也行:

SERVICE_URL = “http://88.11111111.xyz:8888
FILE_SERVER_ROOT = “http://88.11111111.xyz:8888/seafhttp

不过官网上写了:

Seahub (Seafile Web) 外部 URL,如果该值没有设对,会影响文件的上传下载。

注意: 外部 URL 意味着"如果你使用 Nginx, 请使用 Nginx 对外的 URL"

Since 9.0.0

注意:自 12.0 版本起不再使用 SERVICE_URL。

SERVICE_URL=http://www.example.com

可见这个值没有啥意义。

因为 seafile container 里面已经有了 nginx 所以要理解一下访问路径。

感谢大佬的认真与耐心回复。
我仔仔细细的折腾了一早上,但还是没搞定。
目前主要卡在未 **添加 notification-server.**这一步

很是奇怪
非常简单的步骤
第一次可以打开Seafile的后台
但把飞牛重启之后
seafile就提示无法连接数据库
各种排查都没有搞定
甚至我全部删除重新安装都不行

最终我放弃了
回贴感谢一下大佬!

最简版又不是不能用,还省资源呢,notification-server 只是锦上添花,无所谓的。

我也是这么认为的,本想锦上添花一下,但现在连最简版都搞不定了 :innocent:

把飞牛重装了 :grinning:

这成本太大了 :sweat_smile:

按照你给的思路,尝试装了个seafile精简的专业版

3个用户的限制对我而言完全够用

这会貌似可以运行了

再说一下 nginx 配置证书的思路吧,先确定好证书上传到哪个目录,再确定好 nginx 配置文件在哪儿,具体写法直接搜索或问 AI。

  1. seafile-server.yml 里已经有 nginx 了,文件夹映射是:
    volumes:
      - ${SEAFILE_VOLUME:-/opt/seafile-data}:/shared
  1. 查找 .env 文件设定的文件夹:
SEAFILE_VOLUME=/opt/seafile-data

也就是说目录映射关系是:

/opt/seafile-data/nginx:/shared/nginx
  1. 把证书 fullchain.pem 、 privkey.pem; 上传到 /opt/seafile-data/nginx 目录中,在 seafile-sever container 里,2 个证书文件的路径是:
/shared/nginx/fullchain.pem
/shared/nginx/privkey.pem
  1. 修改 nginx 配置文件 /opt/seafile-data/nginx/seafile.nginx.conf, 增加下面的内容
server {
  listen       80;
  server_name  www.yourdoamin.com; 
  rewrite ^ https://$http_host$request_uri? permanent;    #强制将http重定向到https
}

server {
    listen 443 				   ssl http2;
    server_name                 www.yourdoamin.com; 
    ssl_certificate            /shared/nginx/fullchain.pem;
    ssl_certificate_key        /shared/nginx/privkey.pem;
    ssl_protocols     TLSv1 TLSv1.1 TLSv1.2  TLSv1.3;
    ssl_prefer_server_ciphers on;
    add_header       Strict-Transport-Security "max-age=31536000; includeSubdomains";
    add_header       X-Content-Type-Options nosniff;
    add_header       X-Frame-Options DENY;
    ssl_session_cache shared:SSL:10m;
    ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";
    ssl_prefer_server_ciphers   on;

    fastcgi_param   HTTPS               on;
    fastcgi_param   HTTP_SCHEME         https;

原来的其他配置
}

测试配置文件没问题,重启 nginx

root@nas1:/opt# docker exec -it seafile nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

root@nas1:/opt# docker exec -it seafile nginx -s reload
  1. 修改 seafile-server.yml,增加 ssl 端口
    ports:
      - "80:80"
      - “443:443”
  1. 还得改 .env 文件
SEAFILE_SERVER_PROTOCOL=https

重新启动 seafile

docker compose up -d

用 nginx 配置 ssl 还是太麻烦了,还要考虑证书自动续签的需求,如果真考虑 ssl,还是套 caddy 吧。

seafile精简专业版也很不错

我发现加入onlyoffice后运行就报错
service “caddy” has neither an image nor a build context specified: invalid compose project

但是都删除caddy了,难道必须要caddy

在哪里?可以给个链接吗?

是参考楼主的思路,把官方专业版的docker-compose.yml文件进行删改,具体说明文档可参看这里:

另外,把我修改使用的docker-compose.yml内容贴到这里,供参考:

services:
  db:
    image: ${SEAFILE_DB_IMAGE:-docker.seafile.top/seafileltd/mariadb:10.11}
    container_name: seafile-mysql
    ports:
      - 3306:3306
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=${SEAFILE_MYSQL_ROOT_PASSWORD:-pwd123456789}
      - MYSQL_LOG_CONSOLE=true
      - MARIADB_AUTO_UPGRADE=1
    volumes:
      - "${SEAFILE_MYSQL_VOLUMES:-/vol1/1000/docker/seafile/mysql}:/var/lib/mysql"
    networks:
      - seafile-net

  memcached:
    image: ${SEAFILE_MEMCACHED_IMAGE:-docker.seafile.top/seafileltd/memcached:1.6.18}
    container_name: seafile-memcached
    restart: always
    entrypoint: memcached -m 512
    networks:
      - seafile-net

    
  seafile:
    image: ${SEAFILE_IMAGE:-docker.seafile.top/seafileltd/seafile-pro-mc:12.0.1-testing}
    container_name: seafile
    ports:
      # 9000 for backend login
      - "9000:80"
      # 9900 for webdav
      - "9900:8080"
      #- ${SEAFILE_SSL_PORT:-}:443
    restart: always
    volumes:
      - ${SEAFILE_VOLUMES:-/vol1/1000/docker/seafile}:/shared  
    environment:
      - DB_HOST=${SEAFILE_MYSQL_DB_HOST:-db}
      - DB_ROOT_PASSWD=${SEAFILE_MYSQL_ROOT_PASSWORD:-pwd123456789}
      - TIME_ZONE=${TIME_ZONE:-Asia/Shanghai}
      - SEAFILE_ADMIN_EMAIL=${SEAFILE_ADMIN_EMAIL:-wyjqhxn@163.com}
      - SEAFILE_ADMIN_PASSWORD=${SEAFILE_ADMIN_PASSWORD:-960516Wyj}
      - SEAFILE_SERVER_HOSTNAME=${SEAFILE_SERVER_HOSTNAME:-192.168.1.99:9000}
      - SEAFILE_SERVER_LETSENCRYPT=${SEAFILE_SERVER_LETSENCRYPT:-false}
      - FORCE_HTTPS_IN_CONF=${SEAFILE_FORCE_HTTPS_IN_CONF:-false}
    depends_on:
      - db
      - memcached
    networks:
      - seafile-net

networks:
  seafile-net: