我做了反向代理,域名访问无法下载和上传文件不懂怎么回事
-- 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。
可见这个值没有啥意义。
因为 seafile container 里面已经有了 nginx 所以要理解一下访问路径。
感谢大佬的认真与耐心回复。
我仔仔细细的折腾了一早上,但还是没搞定。
目前主要卡在未 **添加 notification-server.**这一步
很是奇怪
非常简单的步骤
第一次可以打开Seafile的后台
但把飞牛重启之后
seafile就提示无法连接数据库
各种排查都没有搞定
甚至我全部删除重新安装都不行
最终我放弃了
回贴感谢一下大佬!
最简版又不是不能用,还省资源呢,notification-server 只是锦上添花,无所谓的。
我也是这么认为的,本想锦上添花一下,但现在连最简版都搞不定了 
这成本太大了 
按照你给的思路,尝试装了个seafile精简的专业版
3个用户的限制对我而言完全够用
这会貌似可以运行了
再说一下 nginx 配置证书的思路吧,先确定好证书上传到哪个目录,再确定好 nginx 配置文件在哪儿,具体写法直接搜索或问 AI。
- seafile-server.yml 里已经有 nginx 了,文件夹映射是:
volumes:
- ${SEAFILE_VOLUME:-/opt/seafile-data}:/shared
- 查找 .env 文件设定的文件夹:
SEAFILE_VOLUME=/opt/seafile-data
也就是说目录映射关系是:
/opt/seafile-data/nginx:/shared/nginx
- 把证书 fullchain.pem 、 privkey.pem; 上传到 /opt/seafile-data/nginx 目录中,在 seafile-sever container 里,2 个证书文件的路径是:
/shared/nginx/fullchain.pem
/shared/nginx/privkey.pem
- 修改 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
- 修改 seafile-server.yml,增加 ssl 端口
ports:
- "80:80"
- “443:443”
- 还得改 .env 文件
SEAFILE_SERVER_PROTOCOL=https
重新启动 seafile
docker compose up -d
用 nginx 配置 ssl 还是太麻烦了,还要考虑证书自动续签的需求,如果真考虑 ssl,还是套 caddy 吧。
我发现加入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: