Seafile unter non-root Domain funktioniert nicht

Hallo zusammen,

ich versuche derzeit, einen kleinen Server (Debian 10) aufzusetzen auf dem neben Seafile noch weitere Dienste laufen sollen, u.a. Apache mit Wordpress und Mediawiki. Das Ganze soll so aufgerufen werden können:

Webseite (Apache + Wordpress o.ä.):
meine-domain_de/

Wiki (Apache + Mediawiki):
meine-domain_de/wiki/

Seafile (Apache):
meine-domain_de/seafile/

Wordpress und/oder Mediawiki im Root oder Unterverzeichnis zu konfigurieren ist kein Problem, funktioniert. Leider bekomme ich Seafile bzw. Seahub nicht richtig zum laufen, wenn es nicht über das Root / Verzeichnis angesprochen wird. Zwar lädt die Seite grundsätzlich, ist aber bis auf den Hinweis “Es tut uns leid, aber die angefragte Seite wurde nicht gefunden.” leer. Im Root / dagegen läuft es problemlos, da soll aber die Webseite hin.

Ich bin im wesentlichen dieser Anleitung aus dem Manual gefolgt (kann keinen Link posten): deploy_seahub_at_non-root_domain.html

Hier mal meine Configs, zu Testzwecken läuft alles noch auf Port 8443 und soll später auf Standardport 443 umziehen:

ccnet.conf:

[General]
USER_NAME = Mein_Seafile
ID = d64.............................................b7854
NAME = Mein_Seafile
SERVICE_URL = https://meine-domain.de:8443/seafile

[Client]
PORT = 13419

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

seahub-settings.py:

# -*- coding: utf-8 -*-
SECRET_KEY = "wy*blp............................................)xny(g*(f=+we"

FILE_SERVER_ROOT = 'https://meine-domain.de:8443/seafhttp'

SERVE_STATIC = False
MEDIA_URL = '/seafmedia/'
COMPRESS_URL = MEDIA_URL
STATIC_URL = MEDIA_URL + 'assets/'
SITE_ROOT = '/seafile/'
LOGIN_URL = '/seafile/accounts/login/'

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

apache:

<VirtualHost *:8443>

        ServerAdmin webmaster@meine-domain.de
        ServerName meine-domain.de

        DocumentRoot /var/www/private
        
        Alias /seafile/seafmedia  /opt/seafile/seafile-server-latest/seahub/media
        #Alias /seafmedia  /opt/seafile/seafile-server-latest/seahub/media
        Alias /seafile/media  /opt/seafile/seafile-server-latest/seahub/media
        #Alias /media  /opt/seafile/seafile-server-latest/seahub/media

        RewriteEngine On

        <Location /seafile/seafmedia>
                  ProxyPass !
                  Require all granted
        </Location>
        #<Location /seafmedia>
        #          ProxyPass !
        #          Require all granted
        #</Location>
        <Location /seafile/media>
                  ProxyPass !
                  Require all granted
        </Location>
        #<Location /media>
        #          ProxyPass !
        #          Require all granted
        #</Location>

        # seafile fileserver
        ProxyPass /seafhttp  http://127.0.0.1:8082
        ProxyPassReverse /seafhttp  http://127.0.0.1:8082
        RewriteRule ^/seafhttp - [QSA,L]

        # seahub
        SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
        ProxyPreserveHost On
        ProxyPass /seafile  http://127.0.0.1:8002/
        ProxyPassReverse /seafile  http://127.0.0.1:8002/
        #ProxyPass /  http://127.0.0.1:8002/
        #ProxyPassReverse /  http://127.0.0.1:8002/
    
        # SSL options
        SSLEngine on
        SSLProxyEngine on
        SSLProxyCheckPeerCN off
	Header always set Strict-Transport-Security "max-age=15768000"
        SSLHonorCipherOrder On
        SSLCipherSuite ECDHE-RSA-CAMELLIA256-SHA384:ECDHE-ECDSA-CAMELLIA256-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-CAMELLIA256-SHA:DHE-DSS-CAMELLIA256-SHA:DHE-RSA-AES256-GCM-SHA384:DHE-DSS-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:!LOW:!SSLv2
        SSLProtocol all -SSLv2 -SSLv3
        SSLCertificateFile    /etc/ssl/private/meine-domain_de.crt
        SSLCertificateKeyFile /etc/ssl/private/meine-domain_de.key
        SSLCertificateChainFile /etc/ssl/private/meine-domain_de.ca-bundle
</VirtualHost>

Irgendwas scheint nicht richtig zu sein, aber ich komme nicht drauf was…

Irgendwelche Tips? Falls noch weitere Configs / Logs nötig sind, kann ich die gerne posten. Danke!

Robert

EDIT: seafile-server-7.0.4 CE

Zwei Fragen:

  1. Weshalb hast du zwei Aliase und entsprechend zwei locations in der Apache conf?
  2. Weshalb hast du den Aliasen den non-root-Ordner “vorgehängt”?
    Also, muss es nicht statt

Alias /seafile/seafmedia /opt/seafile/seafile-server-latest/seahub/media

eher

Alias /seafmedia /opt/seafile/seafile-server-latest/seahub/media

lauten?
(Sinngemäß auch für die Location Angabe)

Danke schonmal. Zu den Fragen: Weil ich es nicht besser wusste, und Anleitungen mit beiden Varianten gefunden hatte. Aber Du hast recht, so wie Du es geschrieben hast reicht es auch, alles andere hab ich rausgenommen. Zumindest werden dann Logos und Stylesheets brav geladen.

Leider ändert das nichts an dem Problem, dass keine Inhalte geladen werden, lediglich die Seite mit dem Text “Es tut uns leid, aber die angefragte Seite wurde nicht gefunden.”, schön gestyled und mit Logo. :confused:

Was könnte denn noch falsch sein?

Hier noch ein Auszug aus den Logs:

2019-07-30 16:14:18,137 [WARNING] django.request:152 get_response Not Found: //
2019-07-30 16:14:30,676 [WARNING] django.request:152 get_response Not Found: //
2019-07-30 16:14:33,512 [WARNING] django.request:152 get_response Not Found: //

Die Zeile kommt bei jedem Reload der Seite…

EDIT: Den Cache /tmp/seahub_cache lösche ich auch bei jeder Änderung. Bringt nichts.

EDIT: Hier noch ein Auszug aus dem Apache Log, mit dem 404 Statuscode, wenn ich auf der Fehlerseite oben versuche die Sprache umzustellen:

meine-domain.de:443 2001:400:5000:202:9263:3c07:542c:e27 - - [30/Jul/2019:19:48:50 +0200] "GET /seafile/i18n/?lang=en HTTP/1.1" 404 9470 "https://meine-domain.de:8443/seafile/i18n/?lang=de" "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0"
meine-domain.de:443 2001:400:5000:202:9263:3c07:542c:e27 - - [30/Jul/2019:19:49:00 +0200] "GET /seafile/i18n/?lang=de HTTP/1.1" 404 9470 "https://meine-domain.de:8443/seafile/i18n/?lang=en" "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0"

Und beim neu laden u.a. als erstes dieses, auch 404, der Rest nur geladene Styles und Logos:

meine-domain.de:443 2001:400:5000:202:9263:3c07:542c:e27 - - [30/Jul/2019:19:53:56 +0200] "GET /seafile HTTP/1.1" 404 14841 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0"

Hat sich erledigt. Die Anleitung im Manual scheint falsch oder veraltet zu sein. Für Apache müssen die ProxyPass Direktiven so sein:

        ProxyPass /seafile  http://127.0.0.1:8002/seafile
        ProxyPassReverse /seafile  http://127.0.0.1:8002/seafile

Dann flutscht es.

1 Like