Déprécié, voir l’article plus récent https://it.izero.fr/raspberry-pi-3-installation-revision2-dun-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 : 9 novembre 2019 |
- 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. |
-
Installation des paquets
Installer php et tous les modules nécessaires
/!\ Suite a plusieurs retours dans les commentaires,
il faut désormais installer la version php 7.1 minimum, pensez a adapter.
1 |
$ 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
1 |
$ sudo apt install nginx mariadb-server |
Queques paquets utiles
1 |
$ sudo apt install vim |
-
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
1 |
$ wget -qO- https://download.owncloud.org/download/repositories/stable/Debian_9.0/Release.key | sudo apt-key add - |
1 |
$ 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.
1 |
$ sudo apt install apt-transport-https |
Puis recharger les paquets et installer ownCloud
1 |
$ sudo apt update |
1 |
$ sudo apt install owncloud-files |
-
Configuration de Mariadb
Sécuriser a minima Mariadb
1 |
$ sudo mysql_secure_installation |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
Set root password? [Y/n] <strong>Y</strong> New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! Remove anonymous users? [Y/n] <strong>Y</strong> ... Success! Disallow root login remotely? [Y/n] <strong>Y</strong> ... Success! Remove test database and access to it? [Y/n] <strong>Y</strong> - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reload privilege tables now? [Y/n] <strong>Y</strong> ... 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 se connecter a l’aide du mot de passe prealablement crée
1 |
$ sudo mysql –u root –p |
Créer la db, l’utilisateur/mdp et allouer les privileges.
1 |
CREATE DATABASE <strong>db_owncloud</strong> CHARACTER SET utf8; |
1 |
GRANT ALL PRIVILEGES ON <strong>db_owncloud.*</strong> TO '<strong>user_owncloud</strong>'@'localhost' IDENTIFIED BY '<strong>password_owncloud</strong>'; |
1 |
FLUSH PRIVILEGES; |
-
Configuration du vhost
Supprimer le vhost par défaut et son lien
1 |
$ sudo rm /etc/nginx/sites-available/default |
1 |
$ sudo unlink /etc/nginx/sites-enabled/default |
Création du vhost ownCloud
1 |
$ sudo vim /etc/nginx/sites-available/owncloud.conf |
1 |
$ 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é, et des différents éléments en gras a remplacer par vos informations.
/!\ 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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
upstream php-handler { server 127.0.0.1:9000; # Depending on your used PHP version server unix:/var/run/php/<strong>php7.0-fpm.sock</strong>; } server { listen 80; server_name <strong>srv-owncloud.izero.fr</strong>; # For Lets Encrypt, this needs to be served via HTTP location /.well-known/acme-challenge/ { root <strong>/var/www/owncloud</strong>; } # enforce https location / { return 301 https://$server_name$request_uri; } } server { listen 443 ssl; server_name <strong>srv-owncloud.izero.fr</strong>; <span style="color: #ff0000;">#</span><strong>ssl_certificate /etc/ssl/nginx/fullchain.pem;</strong> <span style="color: #ff0000;">#</span><strong>ssl_certificate_key /etc/ssl/nginx/privkey.pem;</strong> # 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
1 |
$ sudo nginx -t |
1 |
$ sudo 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
1 |
$ wget -nv https://download.opensuse.org/repositories/isv:ownCloud:desktop/Debian_9.0/Release.key -O Release.key |
1 |
$ sudo apt-key add - < Release.key |
1 |
$ echo 'deb https://download.opensuse.org/repositories/isv:/ownCloud:/desktop/Debian_8.0/ /' | sudo tee /etc/apt/sources.list.d/isv:ownCloud:desktop.list |
1 |
$ sudo apt update |
1 |
$ 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
http://nginx.org/en/docs/http/ngx_http_spdy_module.html
Excellent tuto…
Je l’ai même conseillé à une personne qui avait des soucis d’installation de Owncloud sur son rasp…
Merci Tux 🙂
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
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
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 ?
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
Juste pour info, j’ai pris les paquets php7.1… raspbian ne voulait pas m’installer php7.0
Merci pour ton retour
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.
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;
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
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
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.
Bonjour,
Question pour le serveur name: j’utilise un Pi3 comme serveur ; le nom du serveur est donc Pi3 tout simplement dans mon cas. le souci , c’est que Lets’Encrypt attend un nom de domaine avec un dot…. “Domain name needs at least one dot”
Une idée pour résoudre cela?
Bonjour,
Il faut mettre le FQDN complet,par exemple pi3.mondomaine.tld
Hey !
Il faut désormais utiliser au moins PHP 7.1
sinon ça ne marche pas…
Merci pour ce deuxième retour, faut vraiment que je mette a jour cette doc.
Je fais ça des que j’ai un peu de temps. thx
Bonsoir,
Pour commencer super Tuto !
J’ai juste un petit problème voilà j’ai suivis ton tutoriel à la lettre mais quand je modifie le contenu du vhost, le chemin d’accès que tu donnes est : /var/www/owncloud (Celui-ci est sensé être modifié vu que tu l’as mis en gras et effectivement ca ne doit pas être cela car j’ai du créer moi même le fichier owncloud ..)
J’ai bien rediriger la page sur mon site mais du coup j’ai Erreur404 Not Found qui je pense es dû à cette localisation de fichier..
Je m’excuse d’avance cela doit être quelque chose de “banal” mais je suis un néophyte …
Hello,
Pas de soucis, je comprend pas quand tu dis que tu dis que tu as crée toi même le fichier owncloud
est ce que ton répertoire est bien /var/www/owncloud et que tu as tout le contenu dedans ?
Peux tu me dire ce que tu as dans les logs
Hésite pas a passer par le formulaire de contact et a inclure le contenu de ton vhost
Bonjour,
Super Tuto et merci de partager votre expérience.
Je tente d’installer Owncloud sur raspbian.
J’arrive sur une page 404 Not Found nginx/1.14.2
La seule chose qui ne correspond pas à votre tuto et que je n’ai pas de nom de domaine.
Mon server_name est simplement raspberry. Mon url est donc http://ipraspberry/owncloud
J’ai bien un dossier owncloud dans var/www/owncloud/ avec les pages créées par défaut : index.php, index.html, cron.php……..
Pourriez-vous m’aider pour mon problème ?
Nicolas
Bonjour,
Il faudrait vérifier le directory du chemin root, cela devrait être http://ipraspberry/ et non http://ipraspberry/owncloud
et dans le vhost il y a un redirect en https
Utiliser l’ip cela fonctionne quand même sans certificat.
Après il faut regarder les logs Nginx et Phpfm
Bonjour,
Merci pour votre retour.
Concernant la redirection https j’ai commenté les lignes pour empêcher la redirection automatique.
Quand vous dites le directory du chemin root, ça correspond à quel fichier ?
Pour les logs NGINX :
access.log :
“GET /owa/auth/logon.aspx HTTP/1.1” 404 199 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36”
error.log :
*21 open() “/usr/share/nginx/html/owa/auth/logon.aspx” failed (2: No such file or directory), client: x.x.x.x, server: x.x.x.x/owncloud, request: “GET /owa/auth/logon.aspx HTTP/1.1”, host: “x.x.x.x”
Tout est dans le vhost
Si l’url est x.x.x.x/owncloud alors il y a de la conf différente de ce que j’ai écrit d’où le probable No such file or directory
a voir le tuto plus récent https://it.izero.fr/raspberry-pi-3-installation-revision2-dun-serveur-owncloud/
Bonjour,
J’avais adapté mon vhost en x.x.x.x/owncloud car en x.x.x.x je tombe sur Welcome to nginx! …..
J’ai bien créé mon lien comme vous l’avez indiqué :
sudo ln -s /etc/nginx/sites-available/owncloud.conf /etc/nginx/sites-enabled/owncloud.conf
J’ai vu ton dernier tuto et mis à jour la version php7.3