[Raspberry Pi 3] Installation d’un serveur ownCloud

 

 

Installation d’un serveur ownCloud sur Raspberry Pi 3

 

Version de l’OS Raspbian GNU/Linux 9.6 (stretch)
Version d’Owncloud 10.0.10

 

Pré-requis Paquet sudo
Article original Publié le : 6 janvier 2019

Mise a jour le :

 

  • Installation des paquets nécessaires
  • Installation d’ownCloud
  • Configuration de Mariadb
  • Configuration du vhost
  • Génération du certificat avec Certbot
  • Lancement d’ownCloud
  • Création des utilisateurs et groupes
  • Installation des clients Windows, Android et Linux
  • Quelques liens utiles

 

Ce tuto se base sur linuxhostsupport.

J’y remplacerais Apache par Nginx, j’y ajouterais l’https ainsi qu’un certificat Certbot, l’installation du client Android, Windows et Linux (pas d’Apple sous la main).

ownCloud est un logiciel libre offrant une plateforme de services de stockage et partage de fichiers et d’applications diverses en ligne.

Il est présenté comme une alternative à Dropbox.

cf: https://fr.wikipedia.org/wiki/OwnCloud

 

 

  • Installation des paquets

 

Installer php et tous les modules nécessaires

$ sudo apt install php-imagick php7.0-common php7.0-curl php7.0-gd php7.0-imap php7.0-intl php7.0-json php7.0-ldap php7.0-mbstring php7.0-mcrypt php7.0-mysql php7.0-pgsql php-smbclient php-ssh2 php7.0-sqlite3 php7.0-xml php7.0-zip php-redis php-apcu php7.0-fpm

 

Installer Mariadb et nginx

$ sudo apt install nginx mariadb-server

 

 

  • Installation d’Owncloud

 

Le paquet ownCLoud 10 n’est pas disponible dans le référentiel Debian 9, il faut donc récupérer sa source depuis le dépôt officiel ownCLoud.

Ajoutez d’abord la clé GPG ownCloud au trousseau de clé d’apt, puis ajouter le dépôt au source.list

$ wget -qO- https://download.owncloud.org/download/repositories/stable/Debian_9.0/Release.key | sudo apt-key add -
$ echo 'deb https://download.owncloud.org/download/repositories/stable/Debian_9.0/ /' | sudo tee /etc/apt/sources.list.d/owncloud.list

 

Avant d’installer le paquet ownCLoud, il faut installer le transport https.

$ sudo apt install apt-transport-https

 

Puis recharger les paquets et installer ownCloud

$ sudo apt update
$ sudo apt install owncloud-files

 

 

  • Configuration de Mariadb

 

Sécuriser a minima Mariadb

$ sudo mysql_secure_installation
Set root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!

Remove anonymous users? [Y/n] Y
 ... Success!

Disallow root login remotely? [Y/n] Y
 ... Success!

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

 

Puis créer la db, l’utilisateur/mdp et allouer les privileges.

MariaDB [(none)]> CREATE DATABASE db_owncloud CHARACTER SET utf8;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON db_owncloud.* TO 'user_owncloud'@'localhost' IDENTIFIED BY 'password_owncloud';
MariaDB [(none)]> FLUSH PRIVILEGES;

 

 

  • Configuration du vhost

 

Supprimer le vhost par défaut et son lien

$ sudo rm /etc/nginx/sites-available/default
$ sudo unlink /etc/nginx/sites-enabled/default

 

Création du vhost ownCloud

$ sudo vim /etc/nginx/sites-available/owncloud.conf
$ sudo ln -s /etc/nginx/sites-available/owncloud.conf /etc/nginx/sites-enabled/owncloud.conf

 

Contenu du vhost, a adapter en fonction de la version php-fm installé.

/!\ Les certificats lets’encrypt sont commentés. Une fois générés, ils seront automatiquement rajoutés au vhost par Certbot, vérifier le chemin.

  upstream php-handler {
      server 127.0.0.1:9000;
      # Depending on your used PHP version
      server unix:/var/run/php/php7.0-fpm.sock;
  }

  server {
      listen 80;
      server_name srv-owncloud.izero.fr;

      # For Lets Encrypt, this needs to be served via HTTP
      location /.well-known/acme-challenge/ {
          root /var/www/owncloud;
      }

      # enforce https
      location / {
          return 301 https://$server_name$request_uri;
      }
  }
  
  server {
      listen 443 ssl;
      server_name srv-owncloud.izero.fr;
  
      #ssl_certificate /etc/ssl/nginx/fullchain.pem;
      #ssl_certificate_key /etc/ssl/nginx/privkey.pem;

      # Example SSL/TLS configuration. Please read into the manual of NGINX before applying these.
      ssl_session_timeout 5m;
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      ssl_ciphers "-ALL:EECDH+AES256:EDH+AES256:AES256-SHA:EECDH+AES:EDH+AES:!ADH:!NULL:!aNULL:!eNULL:!EXPORT:!LOW:!MD5:!3DES:!PSK:!SRP:!DSS:!AESGCM:!RC4";
      #ssl_dhparam /etc/nginx/dh4096.pem;
      ssl_prefer_server_ciphers on;
      keepalive_timeout    70;
      ssl_stapling on;
      ssl_stapling_verify on;
  
      # Add headers to serve security related headers
      # Before enabling Strict-Transport-Security headers please read into this topic first.
      #add_header Strict-Transport-Security "max-age=15552000; includeSubDomains";
      add_header X-Content-Type-Options nosniff;
      add_header X-Frame-Options "SAMEORIGIN";
      add_header X-XSS-Protection "1; mode=block";
      add_header X-Robots-Tag none;
      add_header X-Download-Options noopen;
      add_header X-Permitted-Cross-Domain-Policies none;
  
      # Path to the root of your installation
      root /var/www/owncloud/;
  
      location = /robots.txt {
          allow all;
          log_not_found off;
          access_log off;
      }
  
      # The following 2 rules are only needed for the user_webfinger app.
      # Uncomment it if you're planning to use this app.
      #rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
      #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
  
      location = /.well-known/carddav {
          return 301 $scheme://$host/remote.php/dav;
      }
      location = /.well-known/caldav {
          return 301 $scheme://$host/remote.php/dav;
      }
  
      # set max upload size
      client_max_body_size 512M;
      fastcgi_buffers 8 4K;                     # Please see note 1
      fastcgi_ignore_headers X-Accel-Buffering; # Please see note 2
  
      # Disable gzip to avoid the removal of the ETag header
      # Enabling gzip would also make your server vulnerable to BREACH
      # if no additional measures are done. See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=773332
      gzip off;
  
      # Uncomment if your server is build with the ngx_pagespeed module
      # This module is currently not supported.
      #pagespeed off;
  
      error_page 403 /core/templates/403.php;
      error_page 404 /core/templates/404.php;
  
      location / {
          rewrite ^ /index.php$uri;
      }
  
      location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
          return 404;
      }
      location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
          return 404;
      }
  
      location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
          fastcgi_split_path_info ^(.+\.php)(/.*)$;
          include fastcgi_params;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          fastcgi_param SCRIPT_NAME $fastcgi_script_name; # necessary for owncloud to detect the contextroot https://github.com/owncloud/core/blob/v10.0.0/lib/private/AppFramework/Http/Request.php#L603
          fastcgi_param PATH_INFO $fastcgi_path_info;
          fastcgi_param HTTPS on;
          fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
          fastcgi_param front_controller_active true;
          fastcgi_read_timeout 180; # increase default timeout e.g. for long running carddav/ caldav syncs with 1000+ entries
          fastcgi_pass php-handler;
          fastcgi_intercept_errors on;
          fastcgi_request_buffering off; #Available since NGINX 1.7.11
      }
  
      location ~ ^/(?:updater|ocs-provider)(?:$|/) {
          try_files $uri $uri/ =404;
          index index.php;
      }
  
      # Adding the cache control header for js and css files
      # Make sure it is BELOW the PHP block
      location ~ \.(?:css|js)$ {
          try_files $uri /index.php$uri$is_args$args;
          add_header Cache-Control "max-age=15778463";
          # Add headers to serve security related headers (It is intended to have those duplicated to the ones above)
          # Before enabling Strict-Transport-Security headers please read into this topic first.
          #add_header Strict-Transport-Security "max-age=15552000; includeSubDomains";
          add_header X-Content-Type-Options nosniff;
          add_header X-Frame-Options "SAMEORIGIN";
          add_header X-XSS-Protection "1; mode=block";
          add_header X-Robots-Tag none;
          add_header X-Download-Options noopen;
          add_header X-Permitted-Cross-Domain-Policies none;
          # Optional: Don't log access to assets
          access_log off;
      }
  
      location ~ \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg|map)$ {
          add_header Cache-Control "public, max-age=7200";
          try_files $uri /index.php$uri$is_args$args;
          # Optional: Don't log access to other assets
          access_log off;
      }
  }

 

Tester et recharger la conf

$ sudo nginx -t
$ systemctl reload nginx

 

 

  • Generation du certificat avec Certbot

 

Il y a une doc disponible ci dessous

https://it.izero.fr/certificat-installation-de-cerbot/

Normalement Certbot reload le service Nginx a l’issue pour la prise en compte du certificat.

 

 

  • Lancement d’ownCloud

 

Lancer le navigateur et renseigner les champs

1 – Créer le compte administrateur et son mdp

2 – Vérifier le chemin de la db, par défaut /var/www/owncloud/data

3 – Choisir la db

4 – Renseigner les infos de la db préalablement crées

5 – Terminer l’installation

 

Après quelques minutes, l’installation se termine, il ne reste plus qu’a se connecter avec le login/mdp précédemment crée

 

La première connexion vous propose de récupérer le client lourd en fonction de votre plateforme

 

Pour etre notifié de la creation du compte ou changement du mot de passe il faut configurer prealablement un serveur mail.

Dans l’onglet Admin puis Paramètres aller dans Administration et Generaux puis serveur SMTP

Pour faire le test, ajouter une adresse a l’utilisateur admin

Reception du test

 

Diverses options dans la partie administration comme le stockage externe

 

Chiffrement coté serveur, non activé par defaut

 

Pleins d’autres options a regarder, il y a aussi un market non negligable pour d’autres fonctionnalitées comme l’OTP ..

 

 

 

  • Création des utilisateurs et groupes

 

Rien de ouf, cela se fait comme ci dessous

Il est possible d’accrocher le serveur ownCloud a un LDAP/AD, cela fera l’oblet d’un autre tuto.

Pour la création de compte local, il faut simplement cliquer sur Admin puis Utilisateurs

 

1 – Créer des groupes par categorie d’utilisateur

2 – Définir differentes options

3 – Définir le quota

4- Création de l’utilisateur

 

 

  • Installation des clients Windows, Android et Linux

 

Source clients

https://owncloud.org/download/#install-clients

 

 

Pour Windows (version 2.5.1)

https://download.owncloud.com/desktop/stable/ownCloud-2.5.1.10973.10850.msi

L’installation est basic, a l’execution du client il faudra commencer par renseigner l’adresse du serveur.

L’utilisateur et le mot de passe

Differentes options peuvent etre configurés depuis ce panel

La copie conforme de ce qui se trouve sur le serveur

 

 

Pour Android (version 2.9.3)

La version du client est payante sur le store Google (0.79e)

https://play.google.com/store/apps/details?id=com.owncloud.android

La version est gratuite sur le store F-Droid

https://f-droid.org/en/packages/com.owncloud.android/

Il y a sinon des clients alternatifs gratuit sur le store Google

https://play.google.com/store/apps/details?id=com.ocloud24.android&hl=fr

 

 

Pour Linux (version 2.5.1)

https://software.opensuse.org/download/package?project=isv:ownCloud:desktop&package=owncloud-client

Exemple d’installation pour une Debian 9.6

Ajouter la clé du dépôt à apt

$ wget -nv https://download.opensuse.org/repositories/isv:ownCloud:desktop/Debian_9.0/Release.key -O Release.key
$ sudo apt-key add - < Release.key
$ echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/desktop/Debian_8.0/ /' | sudo tee  /etc/apt/sources.list.d/isv:ownCloud:desktop.list
$ sudo apt update
$ sudo apt install owncloud-client

/!\ Si erreur dans les dépendances faire un sudo apt install -f

 

  • Quelques liens utiles

 

Doc
https://linuxhostsupport.com/blog/how-to-install-owncloud-10-on-debian-9/

Conf Nginx

https://doc.owncloud.org/server/10.0/admin_manual/installation/nginx_configuration.html

Httpd2/spdy

https://doc.owncloud.org/server/10.0/admin_manual/installation/nginx_configuration.html#performance-tuning

http://nginx.org/en/docs/http/ngx_http_spdy_module.html

 

 

 

No votes yet.
Please wait...

13 thoughts to “[Raspberry Pi 3] Installation d’un serveur ownCloud”

  1. Excellent tuto…

    Je l’ai même conseillé à une personne qui avait des soucis d’installation de Owncloud sur son rasp…

    No votes yet.
    Please wait...
    1. Merci Tux 🙂

      No votes yet.
      Please wait...
  2. Bonjour & merci pour ce tuto,
    par contre , je rencontre un problème lors de l’installation du transport https , il m’indique l’erreur suivante : ” N: « owncloud.lis » dans le répertoire « /etc/apt/sources.list.d/ » a été ignoré car il utilise une extension non valable ”
    En espérant que vous aurez la solution au problème

    Cordialement

    No votes yet.
    Please wait...
    1. Bonjour,
      l’erreur fait référence a owncloud.lis, cela devrait plutôt être owncloud.list
      L’erreur vient de moi, je l’ai corrigé.
      Désolé et merci

      No votes yet.
      Please wait...
  3. Bonjour

    Je suis intéressé par l’installation chez moi d’un cloud privé. Ca tombe bien, j’ai un pi qui traine et que je pourrais dédier à accueillir owncloud server.

    Mais je voudrais que le serveur owncloud stocke ses fichiers sur un disque qui se trouve dans un PC. J’ai en effet sur ce PC un disque de 3 To (en fait 2 disques de 3 To qui fonctionnent en RAID) qui héberge toutes mes données.

    Le pi et le PC sont sur le même réseau.

    Est-il possible de faire pointer le serveur owncloud installé sur le pi vers le disque du PC ?

    No votes yet.
    Please wait...
    1. Bonjour,

      Oui comme afficher dans le tuto, il y a une partie sur le stockage externe https://it.izero.fr/wp-content/uploads/2019/01/2019-01-06-15_40_26-Param%C3%A8tres-ownCloud.png
      Bonne continuation

      No votes yet.
      Please wait...
  4. Juste pour info, j’ai pris les paquets php7.1… raspbian ne voulait pas m’installer php7.0

    Rating: 5.0/5. From 1 vote.
    Please wait...
    1. Merci pour ton retour

      No votes yet.
      Please wait...
  5. Bonjour,

    Merci pour le tuto.

    J’ai un problème à ce niveau :
    MariaDB [(none)]> CREATE DATABASE db_owncloud CHARACTER SET utf8;

    bash : erreur de syntaxe près du symbole inattendu <>

    Merci pour l’aide.

    No votes yet.
    Please wait...
    1. Bonjour,

      Cela ressemble a un problème dans la requête que tu as tapé. probablement une typo
      cela est bien
      CREATE DATABASE db_owncloud CHARACTER SET utf8;

      No votes yet.
      Please wait...
      1. Merci pour la réponse,
        Je suis grand débutant alors ce n’est pas simple. Il manque des détails que je ne peux pas connaitre.
        Par exemple il fallait d’abord entrer : “mysql –u root –p” pour se connecter puis la ligne de code
        CREATE DATABASE db_owncloud CHARACTER SET utf8;

        Encore moins évident pour l’étape d’après : Création du vhost ownCloud

        – Il y a déjà une installation de “vim” à faire. Pas expliqué dans le tuto.
        Après je suis perdu . . . .

        Que dois-je faire ? Après $ sudo vim /etc/nginx/sites-available/owncloud.conf

        Un copier/coller du code en dessous ? Par quoi je remplace les éléments (ex : server_name srv-owncloud.izero.fr; )

        Comment enregistrer le fichier avec vim ? :w ne fonctionne pas, j’ai un message d’erreur
        IMPOSSIBLE D’OUVRIR LE FICHIER POUR Y ECRIRE !

        Enfin voilà difficile de suivre le tuto quand on débute. Je ne suis peut-être pas au bon endroit.

        Merci

        No votes yet.
        Please wait...
        1. Hello

          Tes remarques sont pertinentes, ce tuto est écrit et compréhensible pour les personnes ayant un minimum de connaissance sous Linux.
          un “vim” et “un mysql –u root –p” sont une évidence pour moi mais pas pour un débutant c’est vrai.
          Je vais corriger cela prochainement et je te remercie pour ce rappel.
          Pour vi ou vim, pour sauvegarder le fichier tu peux utilisé la syntaxe :x!
          Pour les vhosts, j’avais mis en gras les parties a vérifier/modifier (le serveur name, le chemin root et le chemin des certificats)
          le serveur name est le nom de ton serveur, le chemin root est le répertoire d’installation de ton ownCloud et le chemin des certificats est le répertoire ou sont déposés les certificats générés par Let’sEncrypt.
          Hésite pas si tu as d’autres points de blocage, tu peux passer par le mail dans contact

          No votes yet.
          Please wait...
          1. Merci pour ta réponse !
            Je vais approfondir mes connaissances de Linux.
            Je vais aussi envoyer un mail pour ne pas trop polluer les commentaires.

            No votes yet.
            Please wait...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.