Notification link is broken, Seafile Pro 10.0.5

@daniel.pan
Hi
when we click on the notification link, we have the following error message:
“Sorry, but the requested page could not be found.”
1)

Update 19/06/2023

I also noticed; the trash can icon for deleting errors from devices no longer appears when hovering over the error.
4)

Hello, when you click See All Notifications, the web page will be redirected to /notification/list/, which will be matched by the following nginx location, resulting in an error.
image

I just updated the notification server documentation (https://manual.seafile.com/deploy/notification-server/).

Changing /notification to /notification-server will fix this issue.
image

I just checked that there has been NO delete button on the device errors page. Which version of Seafile are you using when you saw a delete button?

1 Like

@lian
hi
I tried your solution, it still doesn’t work,
1)


2)

3)

Nginx conf:

# Required for OnlyOffice DocumentServer

map $http_x_forwarded_proto $the_scheme {

	default $http_x_forwarded_proto;

	"" $scheme;

}



map $http_x_forwarded_host $the_host {

	default $http_x_forwarded_host;

	"" $host;

}



map $http_upgrade $proxy_connection {

	default upgrade;

	"" close;

}
log_format seafileformat '$http_x_forwarded_for $remote_addr [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $upstream_response_time';

    server {
        listen 80;
        server_name  cloud.datanetwork.cloud www.cloud.datanetwork.cloud;
        rewrite ^ https://$http_host$request_uri? permanent;    # force redirect http to https
	server_tokens off;

    }
    server {
        listen 443 ssl proxy_protocol http2;
	server_name cloud.datanetwork.cloud www.cloud.datanetwork.cloud;

 	set_real_ip_from 192.168.1.8;
	real_ip_header proxy_protocol;

    location /notification-server/ping {
        proxy_pass http://127.0.0.1:8083/ping;
        access_log      /var/log/nginx/notif.access.log seafileformat;
        error_log       /var/log/nginx/notif.error.log;
    }

    location /notificaton-server {
        proxy_pass http://127.0.0.1:8083/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        access_log      /var/log/nginx/notif.access.log seafileformat;
        error_log       /var/log/nginx/notif.error.log;
    }
	

        ssl_certificate /etc/letsencrypt/live/datanetwork.cloud/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/datanetwork.cloud/privkey.pem;

#	ssl_trusted_certificate /etc/letsencrypt/live/datanetwork.cloud/fullchain.pem;
	ssl_session_timeout 1d;
	ssl_session_cache shared:SSL:50m;
	ssl_session_tickets off;
	ssl_ecdh_curve X25519:X448:secp521r1:secp384r1:secp256k1;
	ssl_protocols TLSv1.2 TLSv1.3;
	ssl_prefer_server_ciphers on;
	ssl_ciphers 'TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-CHACHA20-POLY1305-D:ECDHE-RSA-CHACHA20-POLY1305-D:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA384';
	#ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-SEED-SHA:DHE-RSA-CAMELLIA128-SHA:HIGH:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS';
	#ssl_ciphers 'TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-CHACHA20-POLY1305-D:ECDHE-RSA-CHACHA20-POLY1305-D:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA384';

	ssl_stapling on;
	ssl_stapling_verify on;
    #   ssl_trusted_certificate /etc/ssl/private/ocsp-certs.pem;
	resolver 8.8.8.8 8.8.4.4 valid=300s;
	resolver_timeout 5s;

	add_header X-Content-Type-Options nosniff;
	add_header X-Frame-Options "SAMEORIGIN";
	add_header X-XSS-Protection "1; mode=block";
	add_header X-Robots-Tag none;
	add_header X-Download-Options noopen;
	add_header X-Permitted-Cross-Domain-Policies none;
        proxy_set_header X-Forwarded-For $remote_addr;
#	add_header Content-Security-Policy   "default-src 'self' http: https: ws: wss: data: blob: 'unsafe-inline'; frame-ancestors 'self';" always;
	add_header Content-Security-Policy "default-src 'none'; script-src  https://cloud.datanetwork.cloud/ blob: 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' blob:; font-src data: 'self'; connect-src 'self'; style-src 'self' 'unsafe-inline'; child-src https://cloud.datanetwork.cloud; object-src 'none'; frame-ancestors https://cloud.datanetwork.cloud/; base-uri https://cloud.datanetwork.cloud/ 'self'; media-src 'self';" always;
#	add_header Referrer-Policy “same-origin”;
#	add_header Content-Security-Policy "default-src 'self';" always;
 #      add_header Strict-Transport-Security "max-age=15552000; always";
	add_header Strict-Transport-Security "max-age=15552000; includeSubDomains; always";
        server_tokens off;

	location / {
         proxy_pass         http://127.0.0.1:8000;
         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-Host $server_name;
	 proxy_set_header   X-Forwarded-Proto https;
         proxy_read_timeout  1200s;

         # used for view/edit office file via Office Online Server
         client_max_body_size 0;

         access_log      /var/log/nginx/seahub.access.log seafileformat;
         error_log       /var/log/nginx/seahub.error.log;
    }

        location /seafhttp {
            rewrite ^/seafhttp(.*)$ $1 break;
            proxy_pass http://127.0.0.1:8082;
            client_max_body_size 0;
	    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_connect_timeout  36000s;
            proxy_read_timeout  36000s;
            proxy_send_timeout  36000s;
            send_timeout  36000s;
	    proxy_request_buffering off;
        }

        location /media {
            root /home/boubou/cloud/seafile/seafile-server-latest/seahub;
        }

  #   Seafdav with WSGI behind Nginx
        location /webdav {
            proxy_pass         http://127.0.0.1:8070/webdav;
            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-Host $server_name;
            proxy_set_header   X-Forwarded-Proto $scheme;
            proxy_read_timeout  86400s;
          # This option is only available for Nginx >= 1.8.0. See more details below.
            client_max_body_size 0; 
            proxy_request_buffering off;
            access_log      /var/log/nginx/webdav.access.log seafileformat;
            error_log       /var/log/nginx/webdav.error.log;
    }

    # onlyofficeds

       location /onlyofficeds/ {

            # IMPORTANT ! - Trailing slash !
            proxy_pass http://127.0.0.1:88/;
            proxy_http_version 1.1;
            client_max_body_size 100M; # Limit Document size to 100MB
            proxy_read_timeout 3600s;
            proxy_connect_timeout 3600s;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $proxy_connection;

        # IMPORTANT ! - Subfolder and NO trailing slash !
            proxy_set_header X-Forwarded-Host $the_host/onlyofficeds;		
            proxy_set_header X-Forwarded-Proto $the_scheme;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

     }
}

seahub.log

2023-06-19 16:30:39,945 [WARNING] django.request:224 log_response Not Found: /list/
2023-06-19 16:30:50,940 [WARNING] django.request:224 log_response Not Found: /list/

Hello, after internal discussion, we decided to change the url of the notification, this update will be included in the next 10.x version.

For current problem, you still need to temporarily change the nginx configuration to solve it.

Have you restarted nginx, or can you test in chrome’s private mode or using another browser?

1 Like

@lian
hello you were right to fix the notification link, I had a bad configuration in HAPRoxy! THANKS

Regarding the icon to delete errors, I saw it on an old version. but I don’t remember the version. I’ll look at that during the week.
thanks again