radicale via uwsgi+apache2

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
chromox
Beiträge: 2
Registriert: 11.05.2019 21:54:27

radicale via uwsgi+apache2

Beitrag von chromox » 11.05.2019 23:15:44

Hallo liebe Debian community,

ich habe gerade versucht mit der hier (https://wiki.debian.org/Radicale) empfohlenen Anleitung: https://salsa.debian.org/debian/radical ... DME.Debian radicale (aus dem unstable repository) auf meinem Debian Server zu installieren. Leider ist die Anleitung etwas spärlich und auch sonst findet man nicht viel dazu im Netz. Hat jemand hier sowas zum Laufen bekommen?
Die User lege ich immer noch via htpasswd an oder? Auf https://radicale.org/wsgi/ verweist man nämlich darauf, dass die user via WSGI verwaltet werden und man in der config remote_user lassen soll.
In der radicale config, habe ich nur die auth section geändert, der Rest ist default:

Code: Alles auswählen

[auth]

# Authentication method
# Value: none | htpasswd | remote_user | http_x_remote_user
type = htpasswd

# Htpasswd filename
htpasswd_filename = /etc/radicale/users

# Htpasswd encryption method
# Value: plain | sha1 | ssha | crypt | bcrypt | md5
# Only bcrypt can be considered secure.
# bcrypt and md5 require the passlib library to be installed.
htpasswd_encryption = bcrypt

# Incorrect authentication delay (seconds)
#delay = 1
Die radical.ini file in /etc/uwsgi/availaible apps habe ich nicht verändert.
Die apache config sieht so aus (basiert auf /usr/share/doc/radicale/examples/apache2-vhost.conf):

Code: Alles auswählen

# example apache2 vhost snippet for Radicale CalDAV/CardDAV service

Define _DOMAIN 'example.org'
Define _HOST 'cal.example.org'

# secure-only access to protect password
# assumes already configured TLS certificates and mod-ssl / mod-gnutls
<VirtualHost *:443>
        ServerName cal.example.org 
        ServerAdmin cal@${_DOMAIN}
        DocumentRoot /var/www/html/radicale

        Include conf-available/radicale-uwsgi.conf

        # authenticate against PAM with mod-authnz-external
        # reusing LocationMatch resolved in radicale snippet
        DefineExternalAuth pwauth pipe /usr/sbin/pwauth
        <LocationMatch "${_RADICALE_LOCATION_MATCH}">
                AuthType Basic
                AuthName "Radicale: Authentication Required"
                AuthBasicProvider external
                AuthExternal pwauth
                AllowOverride None
                Require valid-user
        </LocationMatch>

        ErrorLog ${APACHE_LOG_DIR}/${_HOST}-error.log
        CustomLog ${APACHE_LOG_DIR}/${_HOST}-access.log combined
SSLCertificateFile /etc/letsencrypt/live/cal.example.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/cal.example.org/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

# insecure access redirects to secure
<VirtualHost *:80>
        ServerName cal.example.org 
        ServerAdmin cal@${_DOMAIN}
        DocumentRoot /var/www/html/radicale

        # avoid Let's Encrypt validation path
        RedirectMatch permanent ^(?!/.well-known/acme-challenge)(.*) https://${_HOST}/$1

        CustomLog ${APACHE_LOG_DIR}/redirect.log vhost_combined
</VirtualHost>

# cleanup temporary variables
UnDefine _RADICALE_LOCATION_MATCH
UnDefine _RADICALE_APP
UnDefine _RADICALE_PREFIX
UnDefine _HOST
UnDefine _DOMAIN
SSL Zertifikat wurde mit Lets encrypt certbot erstellt.

Wenn ich die domain aufrufe sollte radicale ja ein 'it works' serven, ich bekomme jedoch nur Service Unavailable nach dem ich mich mit meinem Debian account authentifiziere.
Ich vermute, ich habe etwas fundamentales übersehen, da ich bisher nie mit uwsgi zu tun hatte. Muss ich manuell ein system.d service file erstellen oder ähnliches?

Etwas unkonkrete Frage, aber vielleicht kann mir jemand weiterhelfen :hail: oder vielleicht kennt jemand eine andere Anleitung zu radicale+apache..
Mfg chromox

TomL

Re: radicale via uwsgi+apache2

Beitrag von TomL » 12.05.2019 10:06:08

chromox hat geschrieben: ↑ zum Beitrag ↑
11.05.2019 23:15:44
Die User lege ich immer noch via htpasswd an oder? Auf https://radicale.org/wsgi/ verweist man nämlich darauf, dass die user via WSGI verwaltet werden und man in der config remote_user lassen soll.
Bei mir läuft radicale seit Jahren sehr zufriedenstellend und ohne je Probleme verursacht zu haben. Aber uwsgi und apache2 habe ich in dem Zusammenhang noch nie beachtet. Wofür braucht man das? Um welche Anzahl User geht es bei Dir?

Weil bei mir die Sync-Zugriffe ausschließlich LAN-Intern stattfinden, sind die User einfach in einem Textfile mit htpasswd-Password hinterlegt. Das ist unter den hier gegebenen Bedingungen sicherheitstechnisch absolut ausreichend. Permanente Synchronisation von jedem Ort der Welt ist hier nicht notwendig, denn, wenn ich eh nicht zuhause bin, ändert sich auch der Server-Stand nicht.

chromox
Beiträge: 2
Registriert: 11.05.2019 21:54:27

Re: radicale via uwsgi+apache2

Beitrag von chromox » 12.05.2019 11:21:10

Die User Anzahl ist nicht das Problem, global synchronisieren sollte es allerdings schon. Da apache der empfohlene Weg ist und ich apache so und so für alle anderen Serverapplikationen verwende, denke ich mir, es wäre der passende Weg. Überrascht mich etwas, dass man nichts ausführlicheres dazu findet. Vielleicht ist uwsgi hier aber etwas unnötig. Ich werde es mal mit apache ohne uwsgi wie es hier https://wiki.debian.org/Radicale ganz unten beschrieben ist, probieren.

Edit: hab ich jetzt gemacht mit wsgi-mod für apache2.
vhost sieht jetzt so aus:

Code: Alles auswählen

<VirtualHost *:80>
    ServerName cal2.example.org

    WSGIDaemonProcess radicale user=www-data group=www-data threads=1
    WSGIScriptAlias / /usr/share/radicale/radicale.wsgi

    <Directory /usr/share/radicale>
        WSGIProcessGroup radicale
        WSGIApplicationGroup %{GLOBAL}
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>
Nun bekomme ich jedoch einen internal server error beim Aufruf von cal2.example.org.

Edit2:
Apache error.log:

Code: Alles auswählen

[Sun May 12 12:54:35.665231 2019] [wsgi:error] [pid 32651] [remote 192.168.0.111:58860] mod_wsgi (pid=32651, process='radicale', application=''): Failed to parse WSGI script file '/usr/share/radicale/radicale.wsgi'.
[Sun May 12 12:54:35.665269 2019] [wsgi:error] [pid 32651] [remote 192.168.0.111:58860] mod_wsgi (pid=32651): Exception occurred processing WSGI script '/usr/share/radicale/radicale.wsgi'.
[Sun May 12 12:54:35.665344 2019] [wsgi:error] [pid 32651] [remote 192.168.0.111:58860]   File "/usr/share/radicale/radicale.wsgi", line 4
[Sun May 12 12:54:35.665359 2019] [wsgi:error] [pid 32651] [remote 192.168.0.111:58860] SyntaxError: Non-ASCII character '\\xc2' in file /usr/share/radicale/radicale.wsgi on line 4, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
In der radicale.wsgi file wird jedoch nur die application library eingebunden:

Code: Alles auswählen

#!/usr/bin/python3
#
# This file is part of Radicale Server - Calendar Server
# Copyright © 2011-2017 Guillaume Ayoub
#
# This library is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Radicale.  If not, see <http://www.gnu.org/licenses/>.

"""
Radicale WSGI file (mod_wsgi and uWSGI compliant).

"""

from radicale import application
Edit3: Das Problem war anscheinend das copyright Symbol in den Kommentaren, nun scheint jedoch das radicale python module nicht gefunden zu werden:

Code: Alles auswählen

[Sun May 12 13:27:28.330599 2019] [wsgi:error] [pid 810] [remote 192.168.0.111:59300] mod_wsgi (pid=810): Target WSGI script '/usr/share/radicale/radicale.wsgi' cannot be loaded as Python module.
[Sun May 12 13:27:28.330658 2019] [wsgi:error] [pid 810] [remote 192.168.0.111:59300] mod_wsgi (pid=810): Exception occurred processing WSGI script '/usr/share/radicale/radicale.wsgi'.
[Sun May 12 13:27:28.330692 2019] [wsgi:error] [pid 810] [remote 192.168.0.111:59300] Traceback (most recent call last):
[Sun May 12 13:27:28.330744 2019] [wsgi:error] [pid 810] [remote 192.168.0.111:59300]   File "/usr/share/radicale/radicale.wsgi", line 24, in <module>
[Sun May 12 13:27:28.330837 2019] [wsgi:error] [pid 810] [remote 192.168.0.111:59300]     from radicale import application
[Sun May 12 13:27:28.330871 2019] [wsgi:error] [pid 810] [remote 192.168.0.111:59300] ImportError: No module named radicale
Was fehlt?

onjen
Beiträge: 1
Registriert: 29.10.2019 20:15:49

Re: radicale via uwsgi+apache2

Beitrag von onjen » 29.10.2019 20:23:03

Hast du das Paket python3-radicale auch installiert?

Ich habe außerdem hier noch etwas mehr Doku gefunden:
https://github.com/Kozea/Radicale/blob/ ... nd-fastcgi

lappen
Beiträge: 1
Registriert: 02.01.2020 14:26:22

Re: radicale via uwsgi+apache2

Beitrag von lappen » 02.01.2020 14:38:14

moin,

da der thread noch einigermaßen frisch ist und ich selbst gerade das gleiche problem hatte...

das problem scheint zu sein, dass in der anleitung im debian wiki der apache-mod-wsgi für python2 installiert wird. und der kann das radicale mit python3 nicht verwenden. bei mir war ausreichend, das apache module zu deinstallieren und das für python3 zu installieren:

Code: Alles auswählen

apt remove --purge libapache2-mod-wsgi
apt install libapache2-mod-wsgi-py3

und noch nebenbei, was das problem mit dem

Code: Alles auswählen

SyntaxError: Non-ASCII character '\\xc2' in file /usr/share/radicale/radicale.wsgi on line 4, but no encoding declared;
betrifft:
hierzu habe ich irgendwo ein debian bug ticket gefunden. (https://bugs.debian.org/cgi-bin/bugrepo ... bug=872816)
Inserting # coding: utf-8 as second line solves it for me.
wie ich gerade sehe, steht da auch die sache mit dem wsgi module package drin. hätte ich wohl selber mal genauer lesen sollen..
wie auch immer, ich hoffe das hilft.
frohes neues.

Antworten