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

Installer Seafile sur Debian

Par Pierre-Yves Landuré Dernière modification 08/11/2017 15:09

Seafile est un concurrent auto-hébergé à Dropbox. En plus de disposer d'un client de synchronisation performant, il permet entre autre d'accéder à vos données via WebDAV. Cette solution est très intéressant pour ceux qui souhaitent conserver le contrôle de leurs données.

Ce guide est testé sur:

  • Debian 7.0 Wheezy

Ce guide est testé avec ces versions de Seafile:

  • 1.7.0
  • 2.1.4

Prérequis

Ce guide nécessite :

Paramètres

Renseignez le nom de domaine où sera disponible l'application:

DOMAIN="seafile.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}"

Paramètres de sécurisation

Renseignez l'adresse email du compte d'administration:

ADMIN_EMAIL="user@domain.com"

Paramètres de fonctionnalités

Renseignez le préfixe d'accès aux services HTTP de transferts de fichier (ne pas utiliser /):

HTTP_PREFIX="/special/data"

Activez le serveur WebDAV intégré à Seafile:

ENABLE_WEBDAV='yes'

Renseignez le préfixe d'accès à WebDAV (ne pas utiliser /):

WEBDAV_PREFIX="/special/webdav"

Remarque: Affichez le lien WebDAV avec:

if [ -n "${SSL_KEY_NAME}" -a -e "/etc/ssl/private/${SSL_KEY_NAME}.key" ]; then
echo "davs://${DOMAIN}${WEBDAV_PREFIX}"
echo "https://${DOMAIN}${WEBDAV_PREFIX}"
else
echo "dav://${DOMAIN}${WEBDAV_PREFIX}"
echo "http://${DOMAIN}${WEBDAV_PREFIX}"
fi

Installation

Déterminez le chemin d'installation:

INSTALL_PATH="/var/lib/seafile/${DOMAIN}"

Assurez-vous que le dossier parent existe:

command mkdir --parents "${INSTALL_PATH}"

Déterminez le protocole utilisé par l'application:

PROTO='http'
if [ -n "${SSL_KEY_NAME}" -a -e "/etc/ssl/private/${SSL_KEY_NAME}.key" ]; then
PROTO='https'
fi

Préparation de l'environnement

Installez les logiciels nécessaires:

command apt-get install python2.7 python-setuptools python-simplejson dnsutils \
python-imaging sqlite3 apg python-flup libapache2-mod-fastcgi python-mysqldb

Créez l'utilisateur système seafile:

command adduser --system --group --shell "/bin/sh" \
    --no-create-home --home "/opt/seafile" "seafile"

Ajustez les permissions du dossier d'installation:

command chown seafile:seafile "${INSTALL_PATH}"

Activez les modules rewrite, fastcgi et proxy_http d'Apache 2:

command a2enmod rewrite fastcgi proxy_http

Rechargez la configuration du serveur HTTP:

service apache2 restart

Mise en place de l'application

Déterminez l'architecture du système:

ARCH="$(command dpkg --print-architecture)"
if [ "${ARCH}" = "amd64" ]; then
  ARCH="x86-64"
fi

Téléchargez la dernière version à l'aide du script sf-downloader:/

command wget 'https://raw.github.com/biapy/howto.biapy.com/master/various/sf-downloader' \
--quiet --no-check-certificate --output-document='/tmp/sf-downloader'
# Outdated (?) as of 2.1.4 Google Code download.
#SOURCE="$(command bash '/tmp/sf-downloader' --googlecode --output-directory="${INSTALL_PATH}" \
# --tgz 'seafile' "seafile-server_VERSION_${ARCH}.tar.gz")"
# New (?) as of 2.1.4 Bitbucket
SOURCE="$(command bash '/tmp/sf-downloader' --output-directory="${INSTALL_PATH}" \
--generic="http://seafile.com/en/download/" \
--tgz 'seafile' "seafile-server_VERSION_${ARCH}.tar.gz")"

Ajustez les permissions:

command chown -R root:root "${SOURCE}"
command chown -R seafile:seafile "${SOURCE}/runtime"
command chown seafile:seafile "${SOURCE}/seahub/media"
command chown -R seafile:seafile "${SOURCE}/seahub/media/avatars"

Générez un mot de passe pour le compte d'administration:

ADMIN_PASSWORD="$(command apg -q -a 0 -n 1 -M NCL)"

Placez-vous dans le dossier des sources:

command pushd "${SOURCE}"

Configurez le serveur:

command su 'seafile' -c "./setup-seafile.sh" <<< "
$(echo "${DOMAIN//./-}" | command cut --characters=-14)
${DOMAIN}






${ADMIN_EMAIL}
${ADMIN_PASSWORD}
${ADMIN_PASSWORD}

"

Quittez le dossier des sources:

command popd

Assignez la version installée comme version courante:

command rm "${INSTALL_PATH}/seafile-server-latest"
command ln -s "${SOURCE}" "${INSTALL_PATH}/current"

Configuration du chiffrement

Autorisez Seafile à utiliser la clef privée SSL, si nécessaire:

if [ -n "${SSL_KEY_NAME}" -a -e "/etc/ssl/private/${SSL_KEY_NAME}.key" ]; then
command adduser 'seafile' 'ssl-cert'
fi

Activez le HTTPS pour Seafile, si nécessaire:

CERT_FILE="/etc/ssl/certificates/${SSL_KEY_NAME}.crt"
command test -e "/etc/ssl/certificates/${SSL_KEY_NAME}.crt+chain+root" \
&& CERT_FILE="/etc/ssl/certificates/${SSL_KEY_NAME}.crt+chain+root"
if [ -n "${SSL_KEY_NAME}" -a -e "/etc/ssl/private/${SSL_KEY_NAME}.key" ]; then
command sed -i \
-e "/port=8082/a\\
https=true\\
pemfile=/etc/ssl/certificates/${SSL_KEY_NAME}.crt+chain+root\\
privkey=/etc/ssl/private/${SSL_KEY_NAME}.key" \
"${INSTALL_PATH}/seafile-data/seafile.conf"
fi

Configuration des notifications

Configurez l'envoi des notifications par le serveur SMTP local:

echo "EMAIL_USE_TLS = False
EMAIL_HOST = 'localhost'        # smtp server
EMAIL_PORT = '25'
DEFAULT_FROM_EMAIL = '${ADMIN_EMAIL}'
SERVER_EMAIL = '${ADMIN_EMAIL}'" \
    >> "${INSTALL_PATH}/seahub_settings.py"

Création de la base de données Seafile

Créez la base de données:

MYSQL_PARAMS="$(command mysql-tools --server="${MYSQL_HOST}" --with-ssh \
--auto-hosts --db-prefix="seafile" --user-prefix="sf" --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.

Configurez Seafile pour utiliser la base de données:

command sed -i \
     -e 's/type=.*/type=mysql/' \
     -e "/type=mysql/a\\
host=$(command getent ahostsv4 "${MYSQL_HOST}" | command cut --delimiter=" " --fields=1 | command tail -n 1)\\
user=${MYSQL_USER}\\
password=${MYSQL_PASSWORD}\\
db_name=${MYSQL_DB}" \
  "${INSTALL_PATH}/seafile-data/seafile.conf"

Création de la base de données ccnet

Créez la base de données:

MYSQL_PARAMS="$(command mysql-tools --server="${MYSQL_HOST}" --with-ssh \
--auto-hosts --db-prefix="ccnet" --user-prefix="sc" --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.

Configurez ccnet pour utiliser la base de données:

command echo "[Database]
ENGINE=mysql
HOST=$(command getent ahostsv4 "${MYSQL_HOST}" | command cut --delimiter=" " --fields=1 | command tail -n 1)
USER=${MYSQL_USER}
PASSWD=${MYSQL_PASSWORD}
DB=${MYSQL_DB}" \
  >> "${INSTALL_PATH}/ccnet/ccnet.conf"

Création de la base de données Seahub

Créez la base de données:

MYSQL_PARAMS="$(command mysql-tools --server="${MYSQL_HOST}" --with-ssh \
--auto-hosts --db-prefix="seahub" --user-prefix="sh" --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.

Configurez Seahub pour utiliser la base de données:

command echo "DATABASES = {
   'default': {
     'ENGINE': 'django.db.backends.mysql',
     'USER' : '${MYSQL_USER}',
     'PASSWORD' : '${MYSQL_PASSWORD}',
     'NAME' : '${MYSQL_DB}',
     'HOST' : '$(command getent ahostsv4 "${MYSQL_HOST}" | command cut --delimiter=" " --fields=1 | command tail -n 1)',
     'OPTIONS': {
       \"init_command\": \"SET storage_engine=INNODB\",
     }
  }
}" >> "${INSTALL_PATH}/seahub_settings.py"

Initialisez le contenu de la base de données:

export CCNET_CONF_DIR="${INSTALL_PATH}/ccnet"
export SEAFILE_CONF_DIR="${INSTALL_PATH}/seafile-data"
INSTALLPATH="${INSTALL_PATH}/current"
export PYTHONPATH="${INSTALLPATH}/seafile/lib/python2.6/site-packages:${INSTALLPATH}/seafile/lib64/python2.6/site-packages:${INSTALLPATH}/seahub/thirdpart:$PYTHONPATH"
command pushd "${SOURCE}/seahub"
command su 'seafile' -c "command python 'manage.py' 'syncdb'"
command popd

Mise en place des scripts init.d

Mettez en place les scripts init.d pour Seafile:

command wget --quiet --no-check-certificate --output-document=- \
    'https://raw.github.com/biapy/howto.biapy.com/master/seafile/seafile-init.d' \
    | command sed -e "s|%DOMAIN%|${DOMAIN}|g" \
        -e "s|%INSTALL_PATH%|${INSTALL_PATH}|g" \
    > "/etc/init.d/seafile-${DOMAIN}"
command chmod +x "/etc/init.d/seafile-${DOMAIN}"

Mettez en place les scripts init.d pour Seahub:

command wget --quiet --no-check-certificate --output-document=- \
     'https://raw.github.com/biapy/howto.biapy.com/master/seafile/seahub-init.d' \
     | command sed -e "s|%DOMAIN%|${DOMAIN}|g" \
         -e "s|%INSTALL_PATH%|${INSTALL_PATH}|g" \
     > "/etc/init.d/seahub-${DOMAIN}"
command chmod +x "/etc/init.d/seahub-${DOMAIN}"
command wget --quiet --no-check-certificate --output-document=- \
     'https://raw.github.com/biapy/howto.biapy.com/master/seafile/seahub-default' \
     | command sed -e "s|%DOMAIN%|${DOMAIN}|g" \
     > "/etc/default/seahub-${DOMAIN}"

Ajoutez Seafile au démarrage du système:

command update-rc.d "seafile-${DOMAIN}" 'defaults'
command update-rc.d "seahub-${DOMAIN}" 'defaults'

Démarrez le serveur:

service "seafile-${DOMAIN}" 'start'
service "seahub-${DOMAIN}" 'start'

Mise en place du ramasse-miettes

Récupérez hebdomadairement l'espace utilisé par les blocs inutiles (nécessite l'arrêt du serveur):

command echo "#"\!"/bin/bash
# Stop seafile:
service 'seafile-${DOMAIN}' 'stop'
service 'seahub-${DOMAIN}' 'stop'
export LD_LIBRARY_PATH=\"${INSTALL_PATH}/current/seafile/lib:\${LD_LIBRARY_PATH}\"
# run the garbage collection
${INSTALL_PATH}/current/seafile/bin/seafserv-gc -c '${INSTALL_PATH}/ccnet' -d '${INSTALL_PATH}/seafile-data'
# check that the garbage collection did not remove used blocks.
${INSTALL_PATH}/current/seafile/bin/seafserv-gc -c '${INSTALL_PATH}/ccnet' -d '${INSTALL_PATH}/seafile-data' --verify
# Start seafile
service 'seahub-${DOMAIN}' 'start'
service 'seafile-${DOMAIN}' 'start'" \
    > "/etc/cron.monthly/seafile-${DOMAIN//./-}"
command chmod +x "/etc/cron.monthly/seafile-${DOMAIN//./-}"

Mise en place de l'outil de vérification du système de fichier Seafile

Mettez en place un outil pour facilement vérifier l'état du système de fichier Seafile (nécessite l'arrêt du serveur):

command echo "#"\!"/bin/bash
# Stop seafile:
service 'seafile-${DOMAIN}' 'stop'
service 'seahub-${DOMAIN}' 'stop'
export LD_LIBRARY_PATH=\"${INSTALL_PATH}/current/seafile/lib:\${LD_LIBRARY_PATH}\"
# run the filesystem check
${INSTALL_PATH}/current/seafile/bin/seaf-fsck -c '${INSTALL_PATH}/ccnet' -d '${INSTALL_PATH}/seafile-data' \"\${@}\"
# Start seafile
service 'seahub-${DOMAIN}' 'start'
service 'seafile-${DOMAIN}' 'start'" \
    > "/usr/local/bin/seaf-fsck-${DOMAIN//./-}"
command chmod +x "/usr/local/bin/seaf-fsck-${DOMAIN//./-}"

Cet outil permet de corriger certains problème pouvant apparaître en cas d'arrêt intempestif du serveur (voir Recover corrupt files after server hard shutdown or system crash (en)).

Affichez l'aide en ligne de la commande crée:

echo "usage: seaf-fsck-${DOMAIN//./-} [ -D | --dry-run ] [ -s | --scrict ] [repo_id_1 [repo_id_2 ...]]
Additional options:
  -D, --dry-run: check fs objects and blocks, but don't remove them.
  -s, --strict: check whether fs object id consistent with content."

Création du compte administrateur

Créez le compte administrateur:

command pushd "${SOURCE}/seahub"
command su 'seafile' -c "command python 'manage.py' 'createsuperuser' <<< 'admin
${ADMIN_EMAIL}
${ADMIN_PASSWORD}
${ADMIN_PASSWORD}
'"
command popd

Activation du serveur WebDAV

Activez le serveur WebDAV, si nécessaire:

if [[ "${ENABLE_WEBDAV}" = 'yes' ]]; then
  command sed -i \
      -e 's/enabled =.*$/enabled = true/' \
      -e 's/fastcgi =.*$/fastcgi = true/' \
      -e "s|share_name =.*\$|share_name = ${WEBDAV_PREFIX}|" \
    "${INSTALL_PATH}/conf/seafdav.conf"
command chmod go+rx "${INSTALL_PATH}/conf"
command chmod go+r "${INSTALL_PATH}/conf/seafdav.conf"
fi

Mise en place de l'hôte virtuel

Préparez la configuration WebDAV, si nécessaire:

WEBDAV_CONFIG=""
if [[ "${ENABLE_WEBDAV}" = 'yes' ]]; then
  WEBDAV_CONFIG="
# Setup seafdav fastcgi server.
<IfModule mod_fastcgi.c>
FastCGIExternalServer ${INSTALL_PATH}/seafdav-${DOMAIN}.fcgi -host 127.0.0.1:8080
</IfModule>

# Seafile WebDAV
<IfModule mod_rewrite.c>
RewriteCond %{HTTP:Authorization} (.+)
RewriteRule ^(${WEBDAV_PREFIX}.*)$ /seafdav-${DOMAIN}.fcgi\$1 [QSA,L,e=HTTP_AUTHORIZATION:%1]
RewriteRule ^(${WEBDAV_PREFIX}.*)$ /seafdav-${DOMAIN}.fcgi\$1 [QSA,L]
</IfModule>"
fi

Détectez si le mode SSL est nécessaire:

SSL_ENGINE="Off"
[[ "${PROTO}" = 'https' ]] && SSL_ENGINE="On"

Préparez la configuration du serveur HTTP:

CUSTOM_VHOST="
DocumentRoot ${INSTALL_PATH}

# Setup seafile http server.
<IfModule mod_rewrite.c>
<IfModule mod_proxy.c>
ProxyRequests Off
ProxyPreserveHost On
<IfModule mod_ssl.c>
SSLProxyEngine ${SSL_ENGINE}
SSLProxyVerify none
</IfModule>
ProxyPass ${HTTP_PREFIX} ${PROTO}://127.0.0.1:8082
ProxyPassReverse ${HTTP_PREFIX} ${PROTO}://127.0.0.1:8082
RewriteRule ^${HTTP_PREFIX} - [QSA,L]
</IfModule>
</IfModule>

${WEBDAV_CONFIG}

# Setup seahub fastcgi server.
<IfModule mod_fastcgi.c>
FastCGIExternalServer ${INSTALL_PATH}/seahub-${DOMAIN}.fcgi -host 127.0.0.1:8000
</IfModule>

# Setup seahub media files.
Alias /media  ${INSTALL_PATH}/current/seahub/media

# Setup seahub access by using fastcgi.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/(media.*)$ /\$1 [QSA,L,PT]
RewriteCond %{REQUEST_FILENAME} "\!"-f
RewriteRule ^(.*)$ /seahub-${DOMAIN}.fcgi\$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

<Location />
Order deny,allow
Allow from all
</Location>"

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 --template="custom" --ssl="${SSL_KEY_NAME}" "${DOMAIN}" "${CUSTOM_VHOST}"
command a2tools --template='redirect' "${DOMAIN}" "https://${DOMAIN}/"
else
command a2tools --template="custom" "${DOMAIN}" "${CUSTOM_VHOST}"
fi

Assurez-vous de la bonne configuration de la valeur SSLProxyEngine (incompatibilité non corrigée d'a2tools):

command sed -i -e "s|SSLProxyEngine.*|SSLProxyEngine ${SSL_ENGINE}|" "/etc/apache2/sites-available/${PROTO}-${DOMAIN}"
service apache2 reload

Mettez à jour la configuration de l'application:

command sed -i \
     -e "s|SERVICE_URL.*|SERVICE_URL = ${PROTO}://${DOMAIN}|g" \
  "${INSTALL_PATH}/ccnet/ccnet.conf"
command sed -i '/^HTTP_SERVER_ROOT/d' "${INSTALL_PATH}/seahub_settings.py"
command sed -i '/^FILE_SERVER_ROOT/d' "${INSTALL_PATH}/seahub_settings.py"
echo "HTTP_SERVER_ROOT = '${PROTO}://${DOMAIN}${HTTP_PREFIX}'
FILE_SERVER_ROOT = '${PROTO}://${DOMAIN}${HTTP_PREFIX}'" >> "${INSTALL_PATH}/seahub_settings.py"

L'outil est maintenant disponible sur le domaine spécifié en HTTP ou HTTPS si possible.

La commande qui suit affiche les paramètres de connexion:

echo "URL: ${PROTO}://${DOMAIN}/
Identifiant  : ${ADMIN_EMAIL}
Mot de passe : ${ADMIN_PASSWORD}"

Configuration du pare-feu

Si votre système est protégé par un pare-feu, veillez à ouvrir les ports suivants (en plus des ports 80 et 443):

  • 10001 (serveur CCNET)
  • 12001 (serveur Seafile)
  • 8082 (serveur HTTP)

Installation sur les clients

Téléchargez les clients Seafile

Les utilisateurs doivent créer au moins une bibliothèque sur le serveur avant de pouvoir configurer un client Seafile.

    Sauvegardes

    Sauvegardez l'installation avec Backup Manager (voir Installer et configurer Backup Manager sur Debian):

    command backup-manager-tools add "${INSTALL_PATH}"

    N'oubliez pas de sauvegarder la base de données (voir Installer et configurer MySQL sur Debian).

    Mise à jour

    Renseignez le nom de domaine où sera disponible l'application:

    DOMAIN="seafile.domain.com"
    

    Déterminez le chemin d'installation:

    INSTALL_PATH="/var/lib/seafile/${DOMAIN}"

    Déterminez l'architecture du système:

    ARCH="$(command dpkg --print-architecture)"
    if [ "${ARCH}" = "amd64" ]; then
      ARCH="x86-64"
    fi
    

    Téléchargez la dernière version à l'aide du script sf-downloader:

    command wget 'https://raw.github.com/biapy/howto.biapy.com/master/various/sf-downloader' \
    --quiet --no-check-certificate --output-document='/tmp/sf-downloader'
    # Outdated (?) as of 2.1.4 Google Code download.
    #SOURCE="$(command bash '/tmp/sf-downloader' --googlecode --output-directory="${INSTALL_PATH}" \
    # --tgz 'seafile' "seafile-server_VERSION_${ARCH}.tar.gz")"
    # New (?) as of 2.1.4 Bitbucket
    SOURCE="$(command bash '/tmp/sf-downloader' --output-directory="${INSTALL_PATH}" \
    --generic="http://seafile.com/en/download/" \
    --tgz 'seafile' "seafile-server_VERSION_${ARCH}.tar.gz")"

    Détectez l'emplacement réel de la source:

    SOURCE="$(command find "${INSTALL_PATH}" -maxdepth 1 -type d -name 'seafile-server-*' \
        | command sort | command tail -n 1)"

    Ajustez les permissions:

    command chown -R root:root "${SOURCE}"
    command chown -R seafile:seafile "${SOURCE}/runtime"
    command chown -R seafile:seafile "${SOURCE}/seahub/media/avatars"

    Arrêtez le serveur:

    service "seafile-${DOMAIN}" 'stop'
    service "seahub-${DOMAIN}" 'stop'

    Assignez la nouvelle version comme version courante:

    command rm "${INSTALL_PATH}/current"
    command ln -s "${SOURCE}" "${INSTALL_PATH}/current"

    Migration majeure

    Ce qui suit ne doit être lancé qu'en cas de mise à jour de version majeure (1.7 vers 1.8 par exemple):

    Lancez le script de migration:

    command sh -c "$(command find "${INSTALL_PATH}/current/upgrade" -type f -name "upgrade_*.sh" \
      | command sort | command tail -n 1)"

    Déterminez le chemin contenant les mises à jour de la base SQL:

    SQL_PATH="$(command find "${INSTALL_PATH}/current/upgrade/sql" -maxdepth 1 -type d \
        | command sort | command tail -n 1)/mysql"

    Migration de ccnet

    Détectez les paramètres de connexion au serveur MySQL:

    MYSQL_HOST="$(command grep "^HOST=" "${INSTALL_PATH}/ccnet/ccnet.conf" | command cut --delimiter='=' --fields=2)"
    MYSQL_USER="$(command grep "^USER=" "${INSTALL_PATH}/ccnet/ccnet.conf" | command cut --delimiter='=' --fields=2)"
    MYSQL_PASSWORD="$(command grep "^PASSWD=" "${INSTALL_PATH}/ccnet/ccnet.conf" | command cut --delimiter='=' --fields=2)"
    MYSQL_DB="$(command grep "^DB=" "${INSTALL_PATH}/ccnet/ccnet.conf" | command cut --delimiter='=' --fields=2)"

    Mettez à jour la base de données, si nécessaire:

    if [ -e "${SQL_PATH}/ccnet.sql" ]; then
      command mysql --user="${MYSQL_USER}" --password="${MYSQL_PASSWORD}" \
          --host="${MYSQL_HOST}" "${MYSQL_DB}" < "${SQL_PATH}/ccnet.sql"
    fi

    Migration de seahub

    Détectez les paramètres de connexion au serveur MySQL:

    MYSQL_HOST="$(command grep "'HOST'" "${INSTALL_PATH}/seahub_settings.py" | command sed -e "s/^.*:.*'\([^']*\)',.*\$/\1/")"
    MYSQL_USER="$(command grep "'USER'" "${INSTALL_PATH}/seahub_settings.py" | command sed -e "s/^.*:.*'\([^']*\)',.*\$/\1/")"
    MYSQL_PASSWORD="$(command grep "'PASSWORD'" "${INSTALL_PATH}/seahub_settings.py" | command sed -e "s/^.*:.*'\([^']*\)',.*\$/\1/")"
    MYSQL_DB="$(command grep "'NAME'" "${INSTALL_PATH}/seahub_settings.py" | command sed -e "s/^.*:.*'\([^']*\)',.*\$/\1/")"

    Mettez à jour la base de données, si nécessaire:

    if [ -e "${SQL_PATH}/seahub.sql" ]; then
      command mysql --user="${MYSQL_USER}" --password="${MYSQL_PASSWORD}" \
          --host="${MYSQL_HOST}" "${MYSQL_DB}" < "${SQL_PATH}/seahub.sql"
    fi

    Migration de seafile

    Détectez les paramètres de connexion au serveur MySQL:

    MYSQL_HOST="$(command grep "^host=" "${INSTALL_PATH}/seafile-data/seafile.conf" | command cut --delimiter='=' --fields=2)"
    MYSQL_USER="$(command grep "^user=" "${INSTALL_PATH}/seafile-data/seafile.conf" | command cut --delimiter='=' --fields=2)"
    MYSQL_PASSWORD="$(command grep "^password=" "${INSTALL_PATH}/seafile-data/seafile.conf" | command cut --delimiter='=' --fields=2)"
    MYSQL_DB="$(command grep "^db_name=" "${INSTALL_PATH}/seafile-data/seafile.conf" | command cut --delimiter='=' --fields=2)"

    Mettez à jour la base de données, si nécessaire:

    if [ -e "${SQL_PATH}/seafile.sql" ]; then
      command mysql --user="${MYSQL_USER}" --password="${MYSQL_PASSWORD}" \
          --host="${MYSQL_HOST}" "${MYSQL_DB}" < "${SQL_PATH}/seafile.sql"
    fi

    Finalisation

    Démarrez le serveur:

    service "seafile-${DOMAIN}" 'start'
    service "seahub-${DOMAIN}" 'start'

    Remerciements