Installer un serveur Radicale sur FreeBSD

29/05/2018

À ce jour, la dernière version de Radicale n’est pas encore disponible sous forme de paquet pour FreeBSD. Il est possible qu’il faille adapter les instructions en fonction de la version de FreeBSD.

Vous devez suivre les instructions en tant que root.

Installer les paquets prérequis

pkg install apache24 python36 py36-pip py36-bcrypt py36-passlib py36-cffi py36-six py36-vobject

L’utilisateur radicale

Afin d’améliorer la sécurité, il est vivement recommandé de lancer une application Web à l’aide d’un compte utilisateur dédié et restreint.

pw useradd -n radicale -c "Radicale user" -s /usr/sbin/nologin -h - -d /nonexistent

Voir aussi :

man pw

Installer Radicale

python3.6 -m pip install radicale

Configuration

Création des répertoires

mkdir -p /var/db/radicale/collections /usr/local/etc/radicale /var/log/radicale

Définition des permissions

chown -R radicale:radicale /var/db/radicale /var/log/radicale
chmod 750 /var/db/radicale /var/log/radicale

Créer /usr/local/etc/radicale/config

[server]
hosts = 0.0.0.0:5232

[auth]
type = htpasswd
htpasswd_filename = /usr/local/etc/radicale/users
htpasswd_encryption = bcrypt

[rights]
type = owner_only

[storage]
filesystem_folder = /var/db/radicale/collections

[logging]
config = /usr/local/etc/radicale/logging

Plus

Créer /usr/local/etc/radicale/logging

[loggers]
keys = root

[handlers]
keys = file

[formatters]
keys = full

[logger_root]
level = WARNING
handlers = file

[handler_file]
class = handlers.TimedRotatingFileHandler
args = ("/var/log/radicale/radicale.log", "midnight", 1, 7)
formatter = full

[formatter_full]
format = %(asctime)s - [%(thread)x] %(levelname)s: %(message)s

Plus

Gestion des utilisateurs de Radicale

Créer un utilisateur avec htpasswd pour initialiser le fichier qui contient les utilisateurs

htpasswd -Bc /usr/local/etc/radicale/users johndoe

Définition des permissions du fichier

chown root:radicale /usr/local/etc/radicale/users
chmod 640 /usr/local/etc/radicale/users

Pour ajouter un utilisateur ou modifier son mot de passe

htpasswd -B /usr/local/etc/radicale/users katsmith

Pour supprimer un utilisateur

htpasswd -D /usr/local/etc/radicale/users katsmith

Plus

rc script

Créer /etc/rc.d/radicale

#!/bin/sh

# PROVIDE: radicale
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: shutdown

. /etc/rc.subr

name=radicale
rcvar=radicale_enable
pidfile=/var/run/${name}/${name}.pid
start_precmd=do_precmd

load_rc_config $name
: ${radicale_enable:=NO}
: ${radicale_user:=radicale}
: ${radicale_group:=radicale}
: ${radicale_config:=/usr/local/etc/radicale/config}

command=/usr/local/bin/python3.6
command_args="-m radicale -d -p ${pidfile} -C ${radicale_config}"

do_precmd()
{
  if [ ! -d ${pidfile%/*} ]
  then
    install -d -o ${radicale_user} ${pidfile%/*}
  fi
}

run_rc_command "$1"

Définition des permissions

chmod 555 /etc/rc.d/radicale

Plus

Démarrer

sysrc radicale_enable=YES
service radicale start