Install nginx web-server and uwsgi server as front end for Radicale.
apt-get update
apt-get install nginx-full uwsgi uwsgi-plugin-python apache2-utils
Add a dedicated radicale user and add web-server user to the radicale group.
adduser --system --group --home /var/lib/radicale radicale
adduser www-data radicale
Tweak nginx web-server config.
sed -e 's|# \(listen 443 ssl default_server;\)|\1|' -e 's|# \(listen [::]:443 ssl default_server;\)|\1|' -e 's|# \(include snippets/snakeoil.conf\)|\1|' -i /etc/nginx/sites-available/default
sed -e 's|gzip on;|gzip off;|' -e 's|# server_tokens .*|server_tokens off;|' -i /etc/nginx/nginx.conf
Add an nginx virtualhost. Replace SERVERNAME, IP4_ADDRESS, IP6_ADDRESS and valid SSL certificates as required.
server{
listen 80;
listen [::]:80;
server_name SERVERNAME;
root /var/www/radicale;
index index.html;
rewrite ^ https://$server_name$request_uri? permanent;
}
server{
listen 443 ssl;
listen [::]:443 ssl;
include snippets/snakeoil.conf;
server_name SERVERNAME;
root /var/www/radicale;
index index.html;
auth_basic "Restricted: Calendar Server";
auth_basic_user_file htpasswd/radicale.txt;
allow IP4_ADDRESS;
allow IP6_ADDRESS;
deny all;
location / {
uwsgi_pass unix:///var/run/uwsgi/app/radicale/socket;
include uwsgi_params;
}
}
Rename file as “radicale” and activate virtualhost with:
mv /etc/nginx/sites-available/radicale.nginx /etc/nginx/sites-available/radicale
ln -s /etc/nginx/sites-available/radicale /etc/nginx/sites-enabled/radicale
Create a password file.
mkdir -p /etc/nginx/htpasswd/
htpasswd -c /etc/nginx/htpasswd/radicale USERNAME
Configure uwsgi server
cat > /etc/uwsgi/apps-available/radicale.ini <<EOF
[uwsgi]
workers = 1
plugins = python
chdir = /var/www/radicale/
module = radicale_wsgi
uid = radicale
gid = radicale
EOF
ln -s /etc/uwsgi/apps-available/radical.ini /etc/uwsgi/apps-enabled/radical.ini
Install Radicale (replace VERSION with the appropriate version number)
cd /usr/local/src/
wget http://pypi.python.org/packages/source/R/Radicale/Radicale-VERSION.tar.gz
tar xzf Radicale-VERSION.tar.gz
cd Radicale-VERSION/
python setup.py install
Configuration
mkdir -p /etc/radicale
cp config logging /etc/radicale
sed -e 's|filesystem_folder =.*|filesystem_collections = /var/lib/radicale/collections|' -i /etc/radicale/config
sed -e 's|handlers = console,file|handlers = file|' -i /etc/radicale/logging
sed -e 's|args = ("/var/log/.*|args = ("/var/log/radicale/radicale.log",)|' -i /etc/radicale/logging
mkdir -p /var/log/radicale/
chown radicale:radicale /var/log/radicale/
mkdir -p /var/www/radicale
cp radicale.wsgi /var/www/radicale/radicale_wsgi.py
Restart services
systemctl restart nginx.service
systemctl restart uwsgi.service
Download and extract latest version.
cd /usr/local/src/
wget http://pypi.python.org/packages/source/R/Radicale/Radicale-VERSION.tar.gz
tar xzf Radicale-VERSION.tar.gz
Run set up script
cd Radicale-VERSION/
python setup.py install
Restart the uwsgi server
systemctl restart uwsgi.service
That's it. You can delete the old version now.