Discussion:Seafile

De ArchwikiFR

Seafile est un logiciel open-source permettant de créer un service de stockage et d'applications diverses en ligne sur son propre serveur. Les documents peuvent être synchronisés sur un ordinateur ou sur un smartphone par le biais d'une application. Le logiciel possède aussi une interface web. Les fonctionnalités de Seafile sont similaires à celles des populaires services Dropbox et Google Drive. La principale différence est que les fichiers sont stockés par l'administrateur lui-même, chacun peut créer sa propre instance.

Seafile-client

Installation

Installez le paquet seafile-client disponible sur AUR.

Important : Le client et le serveur devront être installés sur deux machines différentes

Seafile-server

Installation

Installez le paquet seahub disponible sur AUR.
Le script seafile-helper permet de simplifier la maintenance de l'instance.

Préparation

Note : À titre d'exemple /home/seafile sera utilisé comme répertoire utilisateur dans cette page.

Créez un utilisateur seafile :

useradd -m -r -d /home/seafile -s /usr/bin/nologin seafile

Le groupe seafile et d'autres utilisateurs comme http, peuvent avoir besoin des droits de lecture et d’exécution :

chmod 755 /home/seafile
Important : Chaque intervention sur l'instance devra être réalisée avec l'utilisateur seafile.

Connexion avec l'utilisateur seafile :

sudo -u seafile -s
Note : example.dom sera utilisé à titre d'exemple comme nom d'instance dans cette page.

Créez et importez les répertoires nécessaires :

mkdir -p ~/example.dom/seafile-server
cp -r /usr/share/seafile-server/{runtime,seahub} ~/example.dom/seafile-server/

Déploiement

Avec SQLite

Important : Pour un usage en production il est déconseillé d'utiliser SQLite pour des raisons de sécurités

Placez vous dans votre instance :

cd ~/example.dom

Lancez le script d'installation et suivez les indications :

seafile-admin setup

Avec MySQL

Placez vous dans le répertoire seafile-server :

cd ~/example.dom/seafile-server

Copiez les scripts d'installation pour MySQL :

cp /usr/share/seafile-server/scripts/setup-seafile-mysql.* ./

Exécuter le script bash et suivez les indications

./setup-seafile-mysql.sh

Vous pouvez ensuite supprimer les scripts :

rm setup-seafile-mysql.*

Configuration

Utilisateur administrateur

Pour créer ou modifier l'administrateur, placez-vous dans votre instance

cd ~/example.dom
Note : Nous n'utiliserons pas systemd dans cette partie pour démarrer le serveur, car le service n'a peut-être pas encore été créé'.

Démarrez le serveur :

seafile-admin start

Créez un utilisateur administrateur :

seafile-admin create-admin

Pour modifier l'utilisateur administrateur :

seafile-admin reset-admin

Stoppez le serveur :

seafile-admin stop

Seahub locale

Pour mettre seahub en français :

cd ~/example.dom/seafile-server/seahub/locale/fr/LC_MESSAGES/
msgfmt -o django.mo django.po

Vous devez ensuite ajouter la variable LANGUAGE='fr' dans le fichier ~/example.dom/conf/seahub_settings.py

Nginx configuration

Note : seafile.example.com devra être remplacé par votre nom de domaine
server {
    listen 80;
    server_name seafile.example.com;
    rewrite ^ https://$http_host$request_uri? permanent;
    server_tokens off;
}

server {
    listen 443;
    server_name seafile.example.com;
    server_tokens off;    

    ssl on;
    ssl_certificate /etc/letsencrypt/live/seafile.example.dom/fullchain.pem;   # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/seafile.example.dom/privkey.pem; # managed by Certbot
        
    location / {
        proxy_pass          http://127.0.0.1:8000;
        proxy_set_header    Host $host;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Host $server_name;
        proxy_read_timeout  1200s;  

        # used for view/edit office file via Office Online Server
        client_max_body_size 0;
        access_log      /var/log/nginx/seahub.access.log;
        error_log       /var/log/nginx/seahub.error.log;
    }

    location /seafhttp {
        rewrite ^/seafhttp(.*)$ $1 break;
        proxy_pass http://127.0.0.1:8082;
        client_max_body_size 0;

        proxy_connect_timeout  36000s;
        proxy_read_timeout  36000s;
        proxy_send_timeout  36000s;

        send_timeout  36000s;
    }

    location /media {
        root /home/seafile/example.dom/seafile-server-latest/seahub;
    }
}

Vous pouvez utiliser le plugin certbot-nginx pour créer et valider votre certificat chez Let's Encrypt , voir page du wiki anglais Let’s_Encrypt#Plugins

Systemd service

Créez et éditez le fichier /etc/systemd/system/seafile-server@.service

[Unit]
Description=Next-generation open source cloud storage.
After=syslog.target network.target

[Service]
Type=forking
WorkingDirectory=/home/seafile/%i
ExecStart=/usr/bin/seafile-admin start
ExecStop=/usr/bin/seafile-admin stop
PIDFile=/home/seafile/%i/seafile-data/pids/seaf-server.pid
User=seafile

[Install]
WantedBy=multi-user.target

Rechargez ensuite la configuration des services :

systemctl daemon-reload

Puis démarrez et/ou activez le service avec la bonne interface voir systemd units :

systemctl start seafile-server@example.dom.service

Mise à jour

Stoppez le service

systemctl stop seafile-server@example.dom.service

Connectez vous avec l'utilisateur seafile :

sudo -u seafile -s

Placez vous dans le répertoire seafile-server de votre instance :

cd ~/example.dom/seafile-server/

Vous pouvez faire un backup de seahub :

mv seahub seahub-old
Attention : Si les répertoires seahub-old et upgrade sont déjà présents ils devront être supprimés.

Copiez ensuite les nouveaux répertoires :

cp -r /usr/share/seafile-server/{upgrade,seahub} ./

Puis lancez le script correspondant à votre mise à jour :

./upgrade/votre-update.sh

Votre seahub "locale" devra être redéfini après la mise à jour.