.env文件配置域名和IP地址都可以访问。配置为域名时反向代理可以访问;配置为IP时反向代理使用IP可以访问,使用域名访问页面空白。
使用域名正常但不用是因为公网ip是动态ipv6,主机运行了不止seafile一个服务,想通过80、443端口访问只能使用反向代理,但是反向代理在上游域名ip发生改变时会发生504报错,如果服务使用内网ip就不会出问题。
需要为caddy配置更多的反向代理。具体参见下面示例中的labels下面的配置条目,比官方配置新增了caddy_1, caddy_2配置。可照猫画虎。祝一切顺利!
services:
seafile:
image: ${SEAFILE_IMAGE:-seafileltd/seafile-mc:12.0-latest}
container_name: seafile
volumes:
- ${SEAFILE_VOLUME:-/opt/seafile-data}:/shared
environment:
- DB_HOST=${SEAFILE_MYSQL_DB_HOST:-db}
- DB_PORT=${SEAFILE_MYSQL_DB_PORT:-3306}
- DB_USER=${SEAFILE_MYSQL_DB_USER:-seafile}
- DB_ROOT_PASSWD=${INIT_SEAFILE_MYSQL_ROOT_PASSWORD:-}
- DB_PASSWORD=${SEAFILE_MYSQL_DB_PASSWORD:?Variable is not set or empty}
- SEAFILE_MYSQL_DB_CCNET_DB_NAME=${SEAFILE_MYSQL_DB_CCNET_DB_NAME:-ccnet_db}
- SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=${SEAFILE_MYSQL_DB_SEAFILE_DB_NAME:-seafile_db}
- SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=${SEAFILE_MYSQL_DB_SEAHUB_DB_NAME:-seahub_db}
- TIME_ZONE=${TIME_ZONE:-Etc/UTC}
- INIT_SEAFILE_ADMIN_EMAIL=${INIT_SEAFILE_ADMIN_EMAIL:-me@example.com}
- INIT_SEAFILE_ADMIN_PASSWORD=${INIT_SEAFILE_ADMIN_PASSWORD:-asecret}
- SEAFILE_SERVER_HOSTNAME=${SEAFILE_SERVER_HOSTNAME:-seafile.example.com}
- SEAFILE_SERVER_PROTOCOL=${SEAFILE_SERVER_PROTOCOL:-http}
- SITE_ROOT=${SITE_ROOT:-/}
- NON_ROOT=${NON_ROOT:-false}
- JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty}
- SEAFILE_LOG_TO_STDOUT=${SEAFILE_LOG_TO_STDOUT:-false}
- ENABLE_SEADOC=${ENABLE_SEADOC:-true}
- SEADOC_SERVER_URL=${SEAFILE_SERVER_PROTOCOL:-http}://${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}/sdoc-server
labels:
# 公网域名配置
caddy: ${SEAFILE_SERVER_PROTOCOL:-http}://${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}
caddy.reverse_proxy: “{{upstreams 80}}”
# 内网 IP 配置
caddy_1: http://192.168.1.100:80
caddy_1.reverse_proxy: “{{upstreams 80}}”
# 可选:其它更多域名或IP
caddy_2: http://192.168.2.100:80
caddy_2.reverse_proxy: “{{upstreams 80}}”
我是用其他反向代理服务器代理seafile的caddy,这个机器上有多个服务,十几个反向代理网站,代理使用内网IP的seafile就白屏
Caddy是前端web服务器啊,你直接用你的nginx取代caddy就可以了啊,按你的前端web服务器配置,后端代理seafile不就可以了
我用docker部署的,目前是用caddy开启ssl再使用OpenResty反向代理,caddy使用HTTP反向代理开启ssl上传不了文件 动态IPv6地址变动时反向代理会报502,目前解决方法是检测到502就重启OpenResty
我也用的openresty,你都知道这个服务器了,为啥还要多套一层candy,直接代理seafile不好?
docker部署的怎么直接代理seafile
你不知道docker可以通过端口映射通信吗?
现在我把 caddy删了,网站能打开但是无法上传文件,seahub_settings.py的配置也改了
执行docker compose down
docker system prune --volumes -a
彻底清理 Docker 中未使用的资源
docker compose up
试试
还是不行,按照这个教程修改了配置文件也不行 Seafile12社区版,不使用 caddy 和 seadoc 的部署记录,增加 Notification Server 部署记录 - 服务器问题 - Seafile 用户论坛
我也是ipv6 ,你贴出你的配置,我给你看看
我还集成了sdoc和onlyoffice,都没问题
你按F12打开浏览器开发模式,再上传,看下链接对不?
这是openresty的默认反向代理配置
server {
listen 80 ;
listen [::]:80 ;
listen [::]:443 ssl ;
listen 443 ssl ;
listen 443 quic ;
listen [::]:443 quic ;
server_name my.domain.xyz;
index index.php index.html index.htm default.php default.htm default.html;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
access_log /www/sites/seafile/log/access.log main;
error_log /www/sites/seafile/log/error.log;
location ^~ /.well-known/acme-challenge {
allow all;
root /usr/share/nginx/html;
}
http2 on;
if ($scheme = http) {
return 301 https://$host$request_uri;
}
ssl_certificate /www/sites/seafile/ssl/fullchain.pem;
ssl_certificate_key /www/sites/seafile/ssl/privkey.pem;
ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1 TLSv1;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDsrtjtrtr6-GCM-SHA384:ECDHE-ECDSA-CHACHsrjtrjdtjrsjtrj6:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:!aNULL:!eNULL:!EXPORT:!DSS:!DES:!djtjdnnstnserK:!KRB5:!SRP:!CAMELLIA:!SEED;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;
proxy_set_header X-Forwarded-Proto https;
add_header Strict-Transport-Security “max-age=31536000”;
add_header Alt-Svc ‘h3=“:443”; ma=2592000’;
include /www/sites/seafile/proxy/*.conf;
}
IP加端口访问能上传文件,用域名访问就不行
IP加端口访问上传链接是内网IP,域名访问上传链接也是内网IP
找到问题了,域名反向代理开了ssl,换成HTTP就能上传了