Installer OwnCloud sur Debian
OwnCloud est un concurrent auto-hébergé à Dropbox. Il peut vous intéresser si vous souhaitez conserver le contrôle de vos données.
Ce guide est testé sur:
- Debian 6.0 Squeeze
- Debian 7.0 Wheezy
Ce guide est testé avec ces versions d'OwnCloud:
- 4.5.5
- 5.0.5
Prérequis
Ce guide nécessite :
- Un serveur HTTP Apache 2 avec l'outil a2tools disponible dans Installer et configurer Apache 2 sur Debian.
- un serveur HTTP Apache 2 avec support du PHP, comme décrit par Installer PHP-FPM sur Debian.
- l'outil php-tools de configuration simplifiée de PHP.
- un serveur MySQL, comme décrit par Installer et configurer MySQL sur Debian.
- l'outil mysql-tools d'administration simplifiée de MySQL sur l'hôte local (et l'hôte du serveur MySQL, si différent).
Paramètres
Renseignez le nom de domaine où sera disponible l'application:
DOMAIN="cloud.domain.com"
Renseignez le nom d'hôte du serveur MySQL:
MYSQL_HOST="localhost"
Si le serveur MySQL n'est pas local, l'outil mysql-tools essaiera de s'y connecter avec le client MySQL, ou, en cas d'échec de connexion, via une connexion SSH.
Renseignez le nom du certificat SSL à utiliser pour chiffrer l'application avec HTTPS (créé via la procédure Créer un certificat SSL / TLS sur Debian) (optionnel, recommandé):
SSL_KEY_NAME="${DOMAIN}"
Installation
Déterminez le chemin d'installation:
INSTALL_PATH="/opt/owncloud/${DOMAIN}"
Déterminez le chemin des données:
DATA_PATH="/var/lib/owncloud/${DOMAIN}"
Créez les dossiers:
command mkdir --parent "${INSTALL_PATH}"
command mkdir --parent "${DATA_PATH}"
Préparation de l'environnement
Installez les logiciels nécessaires:
command apt-get install apg php5-mysql php5-gd php5-cli php-xml-parser php5-intl \
php5-sqlite curl libcurl3 php5-curl bzip2
Installez le client SMB:
DEBIAN_FRONTEND='noninteractive' command apt-get install smbclient
Générez la locale en_US.UTF-8 si nécessaire:
if [ -z "$(command grep '^en_US.UTF-8 UTF-8' '/etc/locale.gen')" ]; then
command echo 'en_US.UTF-8 UTF-8' >> '/etc/locale.gen'
command locale-gen
fi
Adaptez la configuration PHP aux besoins de l'outil:
command php-tools --for="owncloud" --set "upload_max_filesize" "10G"
command php-tools --for="owncloud" --set "post_max_size" "10G"
Rechargez la configuration de PHP:
test -x /etc/init.d/php5-fpm && /etc/init.d/php5-fpm force-reload
test -x /etc/init.d/apache2 && /etc/init.d/apache2 force-reload
test -x /etc/init.d/lighttpd && /etc/init.d/lighttpd force-reload
test -x /etc/init.d/nginx && /etc/init.d/nginx force-reload
Mise en place de l'application
Détectez la dernière version du logiciel:
SOURCE_URL="$(wget --quiet --output-document=- 'http://owncloud.org/install' \
| command grep "owncloud-" | command grep -v ".md5" \
| command tail -n 1 | command cut --delimiter='"' --fields=2)"
VERSION="$(command echo "${SOURCE_URL}" | command sed -e 's/.*owncloud-\(.*\)\.tar.\bz2/\1/g')"
Téléchargez la dernière version de l'application:
command wget "${SOURCE_URL}" \ --output-document="/tmp/owncloud.tar.bz2"
Décompressez l'archive:
command tar --strip-components=1 --directory="${INSTALL_PATH}" -xjf "/tmp/owncloud.tar.bz2"
Supprimez l'archive:
command rm "/tmp/owncloud.tar.bz2"
Ajustez les permissions des fichiers:
command chown -R root:root "${INSTALL_PATH}"
command chmod 755 "${INSTALL_PATH}/config"
command chmod 755 "${INSTALL_PATH}/apps"
command mkdir --parent "${INSTALL_PATH}/data"
command chmod 750 "${INSTALL_PATH}/data"
command chown www-data:www-data "${INSTALL_PATH}/config/" "${INSTALL_PATH}/data" "${INSTALL_PATH}/apps"
Créez la configuration du serveur HTTP pour le domaine:
if [ -n "${SSL_KEY_NAME}" -a -e "/etc/ssl/private/${SSL_KEY_NAME}.key" ]; then
command a2tools --overrides="All" --ssl="${SSL_KEY_NAME}" "${DOMAIN}" "${INSTALL_PATH}"
command a2tools --template='redirect' "${DOMAIN}" "https://${DOMAIN}/"
else
command a2tools --overrides="All" "${DOMAIN}" "${INSTALL_PATH}"
fi
L'outil est maintenant disponible sur le domaine choisi.
Mise en conformité avec la LSB
Mettez en place une architecture de dossier conforme à la LSB:
command mkdir --parent "${DATA_PATH}/data"
command mv "${INSTALL_PATH}/apps" "${DATA_PATH}/apps"
command ln -s "${DATA_PATH}/apps" "${INSTALL_PATH}/apps"
command chown www-data:www-data "${DATA_PATH}/apps"
command chmod 750 "${DATA_PATH}/data"
command chown -R www-data:www-data "${DATA_PATH}/data"
Création de la base de données
Créez la base de données:
MYSQL_PARAMS="$(command mysql-tools --server="${MYSQL_HOST}" --with-ssh \
--auto-hosts --db-prefix="owncloud" --create "${DOMAIN}")"
Récupérez les paramètres de la nouvelle base de données:
MYSQL_DB="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_DB" \ | cut --delimiter="=" --fields="2-")" MYSQL_USER="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_USER" \ | cut --delimiter="=" --fields="2-")" MYSQL_PASSWORD="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_PASSWORD" \ | cut --delimiter="=" --fields="2-")" echo "${MYSQL_PARAMS}"
Notez les informations de connexion fournies par la commande.
Déterminez un préfixe de tables aléatoire:
TABLE_PREFIX="$(command apg -q -a 0 -n 1 -M NCL)_"
Configuration initiale
Déterminez une valeur pour le mot de passe de l'administrateur:
ADMIN_PASSWORD="$(command apg -m 16 -x 32 -n 1 -a 1 -M NCLS -E "'$")"
Créez le fichier d'auto-configuration:
echo "<?php \$AUTOCONFIG = array( 'adminlogin' => 'admin', 'adminpass' => '${ADMIN_PASSWORD}',
'dbtype' => 'mysql',
'dbname' => '${MYSQL_DB}',
'dbuser' => '${MYSQL_USER}',
'dbpass' => '${MYSQL_PASSWORD}',
'dbhost' => '${MYSQL_HOST}',
'dbtableprefix' => '${TABLE_PREFIX}',
'directory' => '${DATA_PATH}/data'
);" > "${INSTALL_PATH}/config/autoconfig.php"
command chown www-data:www-data "${INSTALL_PATH}/config/autoconfig.php"
Connectez-vous à l'instance OwnCloud pour générer la configuration:
echo "OwnCloud administration login:
URL: http://${DOMAIN}/
Login: admin
Password: ${ADMIN_PASSWORD}"
Réglages recommandés
Les réglages suivants sont fortement recommandés:
- Gestion des fichiers: Désactiver le téléchargement ZIP (cette fonctionnalité peut causer des problèmes avec l'outil de synchronisation).
- Cron: Utilise le service cron du système
Finalisation
Améliorez la configuration par défaut de OwnCloud:
command sed -i \
-e "/installed/a\\
'mail_smtpmode' => 'smtp',\\
'logfile' => '/var/log/owncloud-${DOMAIN}.log',\\
'apps_paths' => array(\\
array(\\
'path'=> '${DATA_PATH}/apps',\\
'url' => '/apps',\\
'writable' => true,\\
),\\
)," \
"${INSTALL_PATH}/config/config.php"
Créez le fichier journal initial:
command touch "/var/log/owncloud-${DOMAIN}.log"
command chown www-data:adm "/var/log/owncloud-${DOMAIN}.log"
Mettez en place la rotation des journaux:
echo "/var/log/owncloud-${DOMAIN}.log {
weekly
missingok
rotate 4
compress
delaycompress
notifempty
create 640 www-data adm
}" > "/etc/logrotate.d/owncloud-${DOMAIN}"
Mettez en place la tâche cron:
echo "# ${DOMAIN} OwnCloud cron task (every minute)
*/5 * * * * www-data test -x '/usr/bin/php5' -a -e '${INSTALL_PATH}/cron.php' && /usr/bin/php5 '${INSTALL_PATH}/cron.php'" \
> "/etc/cron.d/owncloud-${DOMAIN//./-}"
Rechargez la configuration de cron:
/etc/init.d/cron reload
Une fois l'application correctement configurée, renforcez sa sécurité en retirant l'accès en écriture au dossier data:
command chown -R root:root "${INSTALL_PATH}/data"
Sauvegardes
Sauvegardez l'installation avec Backup Manager (voir Installer et configurer Backup Manager sur Debian):
command backup-manager-tools add "${INSTALL_PATH}"
command backup-manager-tools add "${DATA_PATH}"
N'oubliez pas de sauvegarder la base de données (voir Installer et configurer MySQL sur Debian).
Mise à jour
Renseignez le domaine de l'installation obsolète:
DOMAIN="cloud.domain.com"
Déterminez le chemin d'installation:
INSTALL_PATH="/opt/owncloud/${DOMAIN}"
Déterminez le chemin des données:
DATA_PATH="/var/lib/owncloud/${DOMAIN}"
Nettoyez le chemin:
INSTALL_PATH="$(echo "${INSTALL_PATH}" | sed -e 's|/$||g')"
Détectez la dernière version du logiciel:
SOURCE_URL="$(wget --quiet --output-document=- 'http://owncloud.org/install' \
| command grep "owncloud-" | command grep -v ".md5" \
| command tail -n 1 | command cut --delimiter='"' --fields=2)"
VERSION="$(command echo "${SOURCE_URL}" | command sed -e 's/.*owncloud-\(.*\)\.tar.\bz2/\1/g')"
Téléchargez la dernière version de l'application:
command wget "${SOURCE_URL}" \ --output-document="/tmp/owncloud.tar.bz2"
Sauvegardez l'installation actuelle:
if [ -e "${INSTALL_PATH}.old" ]; then
command rm -r "${INSTALL_PATH}.old"
fi
if [ -e "${DATA_PATH}/apps.old" ]; then
command rm -r "${DATA_PATH}/apps.old"
fi
command cp -a "${INSTALL_PATH}" "${INSTALL_PATH}.old"
command cp -a "${DATA_PATH}/apps" "${DATA_PATH}/apps.old"
Décompressez l'archive:
command tar --strip-components=1 --directory="${INSTALL_PATH}" -xjf "/tmp/owncloud.tar.bz2"
Ajustez les permissions des fichiers:
command chown -R root:root "${INSTALL_PATH}"
command chmod 755 "${INSTALL_PATH}/config"
command chmod 755 "${INSTALL_PATH}/apps"
command mkdir --parent "${INSTALL_PATH}/data"
command chmod 750 "${INSTALL_PATH}/data"
command chown www-data:www-data "${INSTALL_PATH}/config/" "${INSTALL_PATH}/config/config.php" "${INSTALL_PATH}/data" "${INSTALL_PATH}/apps"
command chown -R www-data:www-data "${DATA_PATH}/apps"
command chmod -R 755 "${DATA_PATH}/apps"
Vérifiez que tout fonctionne correctement.
Supprimez les sauvegardes:
if [ -e "${INSTALL_PATH}.old" ]; then
command rm -r "${INSTALL_PATH}.old"
fi
if [ -e "${DATA_PATH}/apps.old" ]; then
command rm -r "${DATA_PATH}/apps.old"
fi
Supprimez l'archive:
command rm "/tmp/owncloud.tar.bz2"
Remerciements
- Merci aux développeurs de OwnCloud.