Seehub sowohl extern/LAN nicht erreichbar im fastcgi mode

Hallo liebe Community,

ich komme hier bei meiner frischen Installation von Seefile (6.0.6) auf einem Raspberry Pi mit Raspbian nicht weiter…

Folgendes vielleicht vorweg:
Aus dem RPi läuft eigentlich nur nginx, php5 und mysql sowie ein paar Webseiten.
Zudem habe ich mehrere Domains (EXAMPLE-DNS-1.TLD, EXAMPLE-DNS-2.TLD und SEAFILE-DNS.TLD).
Meine Webseiten laufen ohne Probleme und können auch ordentlich aufgelöst werden, da die Domains alle auf verschiedene Ordner pointen. Sie sind auch ohne Probleme erreichbar LAN als auch extern. Alle Domains laufen natürlich auf einen Server (den RPi).

dafür habe ich hier vielleicht mal eine Beispielskonfiguration von EXAMPLE-DNS-1.TLD:

server {
    	listen 80;
    	server_name EXAMPLE-DNS-1.TLD;
    	return 301 https://$server_name$request_uri;
    	root /var/www/FIRMA/html;
    	index index.php index.htm index.html;
    }

server {
	listen 443 ssl;
	server_name EXAMPLE-DNS-1.TLD;

	##
	# SSL
	## 

	ssl on;
	ssl_certificate /var/www/FIRMA/ssl/FIRMA.crt;
	ssl_certificate_key /var/www/FIRMA/ssl/FIRMA.key;
	ssl_session_cache builtin:1000 shared:SSL:10m;
	ssl_ciphers  HIGH:!aNULL:!MD5:!RC4;

	
	root /var/www/FIRMA/html;
	index index.php index.htm index.html;

  	charset utf-8;

  	location ~ \.php$ {
		try_files $uri =404;
		fastcgi_split_path_info ^(.+\.php)(/.+)$;
		#fastcgi_pass 127.0.0.1:9000;
		fastcgi_pass   unix:/var/run/php5-fpm.sock;
		fastcgi_index index.php;
		include fastcgi.conf;
	}

	location ~ /\.ht {
		deny all;
	}
}

Nach installation des Seafile-Servers, habe ich den Server einmal (NICHT IM fastcgi-Modus) gestartet und der Server war auch wie zu erwarten sowohl im LAN als auch extern erreichbar, nämlich unter: http://SEAFILE-DNS.TLD:8000/. Dabei konnte ich sowohl Dateien hochladen als auch herunterladen.

Wenn ich seahub aber mit ./seahub.sh start-fastcgi starte, komme ich überhaupt nicht mehr ran.

Meine nginx-Config für seafile ist:

server {
        listen 80;
        server_name SEAFILE-DNS.TLD;
        return 301 https://$server_name$request_uri;
    }
    server {
        listen 443 ssl;
        server_name SEAFILE-DNS.TLD;
        ssl_certificate /home/seafile/seafile-server-latest/ssl/seafile.pem;
        ssl_certificate_key /home/seafile/seafile-server-latest/ssl/seafile_key.pem;

    proxy_set_header X-Forwarded-For $remote_addr;

    location / {
        		#fastcgi_pass   127.0.0.1:8000;
        		fastcgi_pass    unix:/var/run/php5-fpm.sock;
			fastcgi_param   SCRIPT_FILENAME     $document_root$fastcgi_script_name;
       		fastcgi_param   PATH_INFO           $fastcgi_script_name;

        		fastcgi_param   SERVER_PROTOCOL     $server_protocol;
        		fastcgi_param   QUERY_STRING        $query_string;
        		fastcgi_param   REQUEST_METHOD      $request_method;
        		fastcgi_param   CONTENT_TYPE        $content_type;
        		fastcgi_param   CONTENT_LENGTH      $content_length;
        		fastcgi_param   SERVER_ADDR         $server_addr;
        		fastcgi_param   SERVER_PORT         $server_port;
        		fastcgi_param   SERVER_NAME         $server_name;
        		fastcgi_param   REMOTE_ADDR         $remote_addr;
 			fastcgi_param   HTTPS	            on;
			fastcgi_param	HTTP_SCHEME         https;

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

    location /seafhttp {
        rewrite ^/seafhttp(.*)$ $1 break;
        proxy_pass http://127.0.0.1:8082;
        client_max_body_size 0;
        proxy_connect_timeout  36000s;
        proxy_read_timeout  36000s;
        proxy_send_timeout  36000s;
        send_timeout  36000s;
    }

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

meine ccnet.conf ist:

[General]
USER_NAME = mein_server_name
ID = 1234
NAME = mein_server_name
SERVICE_URL = https://SEAFILE-DNS.TLD

[Client]
PORT = 13419

[Database]
ENGINE = mysql
HOST = 127.0.0.1
PORT = 3306
USER = seafileDBUsr
PASSWD = sicheres_pw
DB = ccnet-db
CONNECTION_CHARSET = utf8

meine seahub_settings.py ist:

LOGO_PATH = 'custom/seafile-logo.png'

SECRET_KEY = '1234'

FILE_SERVER_ROOT = 'https://SEAFILE-DNS.TLD/seafhttp'

EMAIL_USE_TLS = False
EMAIL_HOST = 'mail.dns-einer-firma.de'        # smtp server
EMAIL_HOST_USER = 'mailadresse@mail.tld'      # username and domain
EMAIL_HOST_PASSWORD = 'sicheres_pw'             # password
EMAIL_PORT = 25
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER

DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',
                'NAME': 'seahub-db',
                'USER': 'seafileDBUsr',
                'PASSWORD': 'sicheres_pw',
                'HOST': '127.0.0.1',
                'PORT': '3306'
                   }}

Ich brauche wirklich eure Hilfe, ich sitze schon 4-5 Tage dran und hab keinen Schimmer woran es liegen kann. Leider bin ich auch nicht soooooooo extrem gut bewandert in Linux nginx und co…

Hier nochmal einige error-logs und infos:

pi@raspberry:~ $ ps -ef | grep seahub
seafile 25305     1  0 17:14 ?        00:00:00 python2.7 /home/seafile/seafile-server-6.0.6/seahub/manage.py runfcgi host=127.0.0.1 port=8000 pidfile=/home/seafile/seafile-server-6.0.6/runtime/seahub.pid outlog=/home/seafile/seafile-server-6.0.6/runtime/access.log errlog=/home/seafile/seafile-server-6.0.6/runtime/error.log
seafile 25306 25305  0 17:14 ?        00:00:00 python2.7 /home/seafile/seafile-server-6.0.6/seahub/manage.py runfcgi host=127.0.0.1 port=8000 pidfile=/home/seafile/seafile-server-6.0.6/runtime/seahub.pid outlog=/home/seafile/seafile-server-6.0.6/runtime/access.log errlog=/home/seafile/seafile-server-6.0.6/runtime/error.log
seafile 25307 25305  0 17:14 ?        00:00:00 python2.7 /home/seafile/seafile-server-6.0.6/seahub/manage.py runfcgi host=127.0.0.1 port=8000 pidfile=/home/seafile/seafile-server-6.0.6/runtime/seahub.pid outlog=/home/seafile/seafile-server-6.0.6/runtime/access.log errlog=/home/seafile/seafile-server-6.0.6/runtime/error.log
seafile 25308 25305  0 17:14 ?        00:00:00 python2.7 /home/seafile/seafile-server-6.0.6/seahub/manage.py runfcgi host=127.0.0.1 port=8000 pidfile=/home/seafile/seafile-server-6.0.6/runtime/seahub.pid outlog=/home/seafile/seafile-server-6.0.6/runtime/access.log errlog=/home/seafile/seafile-server-6.0.6/runtime/error.log
seafile 25309 25305  0 17:14 ?        00:00:00 python2.7 /home/seafile/seafile-server-6.0.6/seahub/manage.py runfcgi host=127.0.0.1 port=8000 pidfile=/home/seafile/seafile-server-6.0.6/runtime/seahub.pid outlog=/home/seafile/seafile-server-6.0.6/runtime/access.log errlog=/home/seafile/seafile-server-6.0.6/runtime/error.log
seafile 25310 25305  0 17:14 ?        00:00:00 python2.7 /home/seafile/seafile-server-6.0.6/seahub/manage.py runfcgi host=127.0.0.1 port=8000 pidfile=/home/seafile/seafile-server-6.0.6/runtime/seahub.pid outlog=/home/seafile/seafile-server-6.0.6/runtime/access.log errlog=/home/seafile/seafile-server-6.0.6/runtime/error.log
pi    25406 24449  0 17:15 pts/0    00:00:00 grep --color=auto seahub


  GNU nano 2.2.6 Datei: ...ud/seafile-server-6.0.6/runtime/error.log            

Traceback (most recent call last):
  File "/home/seafile/seafile-server-6.0.6/seahub/manage.py", line 10, in <mod$
    execute_from_command_line(sys.argv)
  File "/home/seafile/seafile-server-6.0.6/seahub/thirdpart/Django-1.8.16-py2.$
    utility.execute()
  File "/home/seafile/seafile-server-6.0.6/seahub/thirdpart/Django-1.8.16-py2.$
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/seafile/seafile-server-6.0.6/seahub/thirdpart/Django-1.8.16-py2.$
    self.execute(*args, **cmd_options)
  File "/home/seafile/seafile-server-6.0.6/seahub/thirdpart/Django-1.8.16-py2.$
    output = self.handle(*args, **options)
  File "/home/seafile/seafile-server-6.0.6/seahub/thirdpart/Django-1.8.16-py2.$
    runfastcgi(args)
  File "/home/seafile/seafile-server-6.0.6/seahub/thirdpart/Django-1.8.16-py2.$
    WSGIServer(get_internal_wsgi_application(), **wsgi_opts).run()
  File "/home/seafile/seafile-server-6.0.6/seahub/thirdpart/flup-1.0.2-py2.7.e$
    sock = self._setupSocket()
  File "/home/seafile/seafile-server-6.0.6/seahub/thirdpart/flup-1.0.2-py2.7.e$
    sock.bind(self._bindAddress)
  File "/usr/lib/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use	

mir ist schon klar, dass da steht “Address already in use…” aber was genau ist gemeint???

pi@raspberry:~ $ sudo lsof -i :8000
COMMAND     PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
python2.7 25975 seafile    3u  IPv4 123723      0t0  TCP localhost:8000 (LISTEN)
python2.7 25976 seafile    3u  IPv4 123723      0t0  TCP localhost:8000 (LISTEN)
python2.7 25977 seafile    3u  IPv4 123723      0t0  TCP localhost:8000 (LISTEN)
python2.7 25978 seafile    3u  IPv4 123723      0t0  TCP localhost:8000 (LISTEN)
python2.7 25979 seafile    3u  IPv4 123723      0t0  TCP localhost:8000 (LISTEN)
python2.7 25980 seafile    3u  IPv4 123723      0t0  TCP localhost:8000 (LISTEN)

BITTE BITTE HILFE BITTE!!!

:confounded:

Ich freue mich über jeden Tipp! Besten Dank schonmal sparx

Kann keinen Fehler in deiner Konfiguration erkennen.
Aus irgendeinem Grund wurde der Port 8000 nicht mehr freigegeben, deshalb der Fehler “Adress already in use”. (Ich gehe mal davon aus dass du Seahub vor dem Starten im fast-cgi-Modus beendet hast). Ein Neustart sollte es aber beheben…

Hi @sparx,

das erste, was mir an Deiner nginx-config auffällt ist Deine fastcgi_pass Direktive.
Du verweist hier auf den php-Socket. Den nutzt Seafile nicht (ist ja keine php-Anwendung).
Wenn Du hier auf den Port 8000 verweist, dann sollte das schonmal viel besser funktionieren. :slight_smile:

Ansonsten ist @Simsala schon definitiv richtig. UND Du hast ja selbst mit der Nase drauf gestoßen. Der Port 8000 ist bereits in Benutzung. Versuche sicherheitshalber einmal, seahub und seafile zu beenden, danach seafile wieder starten und seahub mit “start-fastcgi”.

Danke schonmal an @Simsala und @oliverjkb, ich habe die nginx-config wieder so geändert, dass ich auf Port 8000 verweise und ansonsten habe ich schon mehrfach rebootet und auch mehrfach in der Prozessliste geschaut, ob seahub vielleicht fälschlicherweise noch läuft… Leider hilft mir das nicht weiter :confused: vielleicht werde ich heute Abend seafile nochmal “neu” aufsetzen und ggf. von einer anderen Version aus starten und dann via Updates auf die 6.0.6 heben??? Könnte das was bringen?

(edit: Das Umstellen auf port 8000 hat nix geholfen) Weiterhin läuft der server nur wenn ich ihn mit ./seahub.sh start starte und den Port auf mache

Hi, gibt es ein Update dazu?

Hallo @oliverjkb, ja es gibt ein Update! Ein Start von Version 6.0.4 hat den “Fehler” behoben.

Hahahaha… na immerhin!
Vielleicht dann beim nächsten Release wieder… :wink:

Da muss aber ein Konfigurationsfehler vorliegen. Seafile (aktuell 6.0.7) läuft bei mir auf einem Pi3 und wird per Nginx ausgeliefert. Seafile ist über den Browser und über die Client-App unter Linux und Windows erreichbar. Seafile läuft dabei unter: https://meine_Domain.de/seafile

Meine Nginx-Config (der Seafile-Abschnitt) sieht wie folgt aus:

#### Seafile section ####
    location /seafile {
        fastcgi_pass    127.0.0.1:8000;
        fastcgi_param   SCRIPT_FILENAME     $document_root$fastcgi_script_name;
        fastcgi_param   PATH_INFO           $fastcgi_script_name;
        fastcgi_param   SERVER_PROTOCOL     $server_protocol;
        fastcgi_param   QUERY_STRING        $query_string;
        fastcgi_param   REQUEST_METHOD      $request_method;
        fastcgi_param   CONTENT_TYPE        $content_type;
        fastcgi_param   CONTENT_LENGTH      $content_length;
        fastcgi_param   SERVER_ADDR         $server_addr;
        fastcgi_param   SERVER_PORT         $server_port;
        fastcgi_param   SERVER_NAME         $server_name;
        fastcgi_param   HTTPS               on; # enable this line only if https is used
        access_log      /var/log/nginx/seahub.access.log;
        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;
   }
   location /seafmedia {
        rewrite ^/seafmedia(.*)$ /media$1 break;
        root /home/seafile/seafile-server-latest/seahub;
   }

Auszug aus meiner seahub_settings.py:

# Setting for deployment with apache/nginx at non root domain
FILE_SERVER_ROOT = 'https://meine_domain.de/seafhttp'
SERVE_STATIC = False
MEDIA_URL = '/seafmedia/'
SITE_ROOT = '/seafile/'
COMPRESS_URL = MEDIA_URL
STATIC_URL = MEDIA_URL + 'assets/'
LOGIN_URL = '/seafile/accounts/login/'

Auszug aus meiner ccnet.conf:

[General]
SERVICE_URL = https://meine_domain.de/seafile

@meowClown: Ist hier etwas am Thema vorbei, passt aber zu Deinem Posting:

Momentan läuft seafile bei mir direkt über www.meinedomäne.de. Reicht es, einfach die hier beschriebenen Stellen zu ändern, damit ich über www.meinedomäne.de/seafile zugreifen kann?

Das sollte reichen. Ich habe domai-relevanten Einstellungen gepostet. Mir fällt auf Anhieb nichts ein, was ich sonst noch geändert hätte.

2 Likes