Guide d'installation, configuration et mise-à-jour de Owncloud

Author:Patrick Hetu

1 Serveur

1.1 Installation

Notez que l'ensemble des commandes doivent être exécutées en tant que super utilisateur.

1.1.1 Via le code source
1.1.1.1 Dépendances
apt-get update
apt-get install mysql-server apache2 php5 php5-gd php5-imagick php5-ldap php5-mcrypt php5-curl git bzip2
1.1.1.2 Installation

Vérification de la dernière version disponible et sauvegarde dans la variable VERSION:

VERSION=`wget https://owncloud.org/changelog -O - |\
           sed -n '/Version [0-9\.]\+/{s/^.*Version \([0-9\.]\+\).*$/\1/p;q}'`
echo $VERSION

Télécharger l'archive compressé du code source et sa somme sha256:

wget https://download.owncloud.org/community/owncloud-$VERSION.tar.bz2
wget https://download.owncloud.org/community/owncloud-$VERSION.tar.bz2.sha256

Vérifier la somme:

sha256sum -c owncloud-$VERSION.tar.bz2.sha256 < owncloud-$VERSION.tar.bz2

Si la somme est correcte, extraire l'archive dans le dossier courant:

tar jxvf owncloud-$VERSION.tar.bz2

Rendre l'outil en ligne de commande exécutable.

chmod a+x owncloud/occ
1.1.2 ou via le dépôt Deb

Pour installer owncloud depuis un dépôt Debian/Ubuntu, veuillez suivre les instructions à la page:

Puis installer le paquet:

apt-get update
apt-get install owncloud

1.2 Configuration

1.2.1 Mysql

Première étape, création de la base de données et d'un utilisateur avec les commandes:

mysql -e "create database owncloud;"
mysql -e "grant usage on *.* to owncloud@localhost identified by 'VOTRE_MOT_DE_PASSE';"
1.2.2 Owncloud

Les données de configuration de owncloud spécifique à l'AUF suivantes doivent être ajouter dans le fichier owncloud/config/config.php:

'datadirectory' => '/srv/data',
'ldapIgnoreNamingRules' => false,
'mail_domain' => 'auf.org',
'trusted_domains' =>
  array (
    0 => 'nuage.auf.org',
  ),
1.2.3 Apache

Apache doit être configurer avec les VirtualHost suivant:

<VirtualHost _default_:80>
        ServerName      nuage.auf.org
        Redirect permanent /  https://nuage.auf.org
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
        ServerName  nuage.auf.org
        DocumentRoot /var/www/owncloud
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/owncloud>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/nuage.auf.org_error.log
        CustomLog ${APACHE_LOG_DIR}/nuage.auf.org_access.log combined

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>

</VirtualHost>
</IfModule>

Puis les modules ssl et rewrite doivent être activés:

a2enmod ssl
a2enmod rewrite
service apache2 reload
1.2.4 AUF
1.2.4.1 LDAP

Configurer ldap dans l'interface d'administration: https://nuage.auf.org/index.php/settings/admin

Nettoyage de la liste des utilisateurs

Le nettoyage doit être fait lors du départ d'un utilisateur car les partages d'un utilisateur absent bloquent la visualisation des dossiers Owncloud dans l'interface web pour les utilisateurs avec qui il a partagé.

Cette procédure n'est pas idéale car elle néccesite de faire les commandes plusieurs fois et ne garantie pas que tous les utilisateurs absents seront supprimés. Ceci est possiblement causé par un bug de concurrence entre la recherche LDAP et la recherche dans le cache des utilisateurs de Owncloud.

Pour faire le nettoyage déplacez-vous dans le dossier /var/www/owncloud/:

Rouler cette commande un bon nombre de fois (10-15)

for i in $(./occ ldap:search --limit 9999 "" | sed "s/.*(\(.*\))/\1/"); do ./occ ldap:check-user $i; done

Ensuite, afficher la liste des utilisateurs à supprimer

./occ  ldap:show-remnants

Supprimer les utilisateurs partis avec la commande (faire de multiple fois aussi)

./occ user:delete [courriel de l'utilisateur]
1.2.4.2 Theme

Le fichier owncloud/core/templates/login.php doit être copié vers owncloud/themes/auf/core/templates/ et la ligne suivante doit être ajouter avant le formulaire de connexion:

<a href="/mellon/login?ReturnTo=https%3A%2F%2F<?php p($_SERVER['HTTP_HOST']); ?>%2F%3Fapp%3Duser_servervars"
   onMouseOver="document.idauf_bouton.src='/themes/auf/core/img/idauf_bouton_survol.png';"
   onMouseOut="document.idauf_bouton.src='/themes/auf/core/img/idauf_bouton.png';">
     <img id="idauf_bouton" width="200" height="32" src="/themes/auf/core/img/idauf_bouton.png" />
</a>

Puis les fichiers images doivent être téléchargés dans leurs répertoires respectifs.

Ensuite, les templates de courriels doivent être traduits.

  • Notification d'activité
<?php
/** @var OC_L10N $l */
/** @var array $_ */
$l = $_['overwriteL10N'];

print_unescaped($l->t('Bonjour %s,', array($_['username'])));
p("\n");
p("\n");

if ((int) $_['timeframe'] === \OCA\Activity\UserSettings::EMAIL_SEND_HOURLY) {
  print_unescaped($l->t('Vous recevez ce courriel car dans la dernière heure les activités suivantes ont eu lieu à %s', array($_['owncloud_installation'])));
} else if ((int) $_['timeframe'] === \OCA\Activity\UserSettings::EMAIL_SEND_DAILY) {
  print_unescaped($l->t('Vous recevez ce courriel car depuis hier les activités suivantes ont eu lieu à %s', array($_['owncloud_installation'])));
} else {
  print_unescaped($l->t('Vous recevez ce courriel car dans la dernière semaine les activités suivantes ont eu lieu à %s', array($_['owncloud_installation'])));
}
p("\n");
p("\n");

foreach ($_['activities'] as $activityData) {
  print_unescaped($l->t('* %1$s - %2$s', $activityData));
  p("\n");
}
if ($_['skippedCount']) {
  print_unescaped($l->n('* et %n de plus ', '* et %n de plus ', $_['skippedCount']));
  p("\n");
}
p("\n");
1.2.4.3 SSO

Pour rendre disponible le modmellon depuis owncloud vous devez Installer le plugin suivant:

dans le dossier apps/ et l'activer avec la commande:

owncloud/occ app:enable user_servervars

et finir sa configuration dans l'interface d'administration.

1.2.4.4 Apps

Les applications suivantes doivent aussi être activées:

owncloud/occ app:enable user_ldap
owncloud/occ app:enable activity

1.3 Mise-à-jour

Pour vérifier la version courante utilisez la commande:

owncloud/occ status

Pour télécharger la dernière version, suivre les mêmes étapes décrite dans la section 1.1 Installation.

Démarrer le mode "Maintenance":

owncloud/occ maintenance:mode

Puis faire une sauvegarde de la base de données en cas de problème:

NOW=$(date +"%m_%d_%Y")
mysqldump owncloud > owncloud_backup_$NOW.sql

Corriger les permissions du répertoire:

chown www-data:www-data owncloud/

Copier les fichiers aux bons endroits:

cp -rf $OLD/config/ owncloud
cp -rf $OLD/theme/ owncloud/
cp -r $OLD/apps/user_servervars owncloud/apps/
cp $OLD/data owncloud/

Lancer le script de mise-à-jour de owncloud:

owncloud/occ upgrade

Mettre le dossier en production et fermer le mode "Maintenance":

mv owncloud owncloud-prod/
owncloud-prod/occ maintenance:mode

1.4 Vérification

Des applications activées:

owncloud/occ app:list

Il faut vérifier que les modules suivantes sont bien activés:

  • activity
  • files_pdfviewer
  • user_ldap
  • user_servervars

Vérification de la configuration LDAP

mysql owncloud -e "select configkey, configvalue from oc_appconfig where appid='user_ldap';"

Vérification de la configuration de user_servervars

mysql owncloud -e "select * from oc_appconfig where appid='user_servervars;"