Vous êtes ici : Accueil / Debian GNU/Linux / Applications Web / Gestion de fichiers / Installer OwnCloud sur Debian

Installer OwnCloud sur Debian

Par Pierre-Yves Landuré Dernière modification 06/12/2017 16:32

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 :

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