Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

[Projet] Serveur Pi : Cloud + Sauvegarde, accessible de l'extérieur
#1

Bonjour à tous,

Voici mon projet concernant mon PI (un B à l'ancienne mais qui suffit plus que largement) : Je souhaiterai faire de mon RaspBerry Pi un petit serveur de données, que je pourrais joindre de l'extérieur, tout comme en local afin de permettre de consulter, sauvegarder, récupéré des documents quelque soit le lieu ou je me trouveer
Attention, je ne parle pas d'une SeedBox, je parle bien de l'équivalent d'un lecteur réseaux, que je pourrais mapper quelque soit l'OS (ou en tout cas sur Linux Ubuntu, et Windows 7 et XP dans un premier temps).

J'ai donc opté pour la création d'un cloud accessible de l'extérieur, avec une sauvegarde (pour le moment en Local).

Les différentes étapes :

- Installation d'un OS sur le PI > Utilisation de Raspbian > Fait
- Amélioration de l'OS, du RaspPi, et du projet > En cours
- Configuration du disque dur > Fait
- Installation de OwnCloud > Fait
- Rendre son RaspPi accessible de l'extérieur > Fait
- Rediriger les Logs vers le disque dur > Fait
- Configurer sa sauvegarde de son /home de sa machine principal > Fait

Les prérequis :

- Connaître votre IP publique, qui peut changer de façon régulière en fonction de votre FAI, via cette adresse : Mon-IP
- Une carte SD, vous pouvez trouver un pseudo wikia ici tenu plus ou moins à jour, mais cela peut donner une idée (/!\ En anglais) : SD Card For Rasp
- Un Raspberry Pi
- Un disque dur externe suffisamment grand pour contenir vos données

Les étapes :

[h] I. Installation d'un OS sur le PI[/h]

Pour cette partie je vous laisse choisir celle qui vous convient le mieux, personnellement j'ai pris la raspbian

[h] II. Amélioration de l'OS et du RaspPi[/h]

Cette partie est sûrement encore largement améliorable, et surtout à faire en fonction de vos besoins. Il ne s'agit que d'exemple et de conseil, à faire en prenant des pincettes, certaines étapes peuvent etre faites n'importe quand, d'autre qu'une fois que le système complet est en place.


II.1 Déporter le bureau virtuel du RaspPI sur votre ordinateur

Il faut commencer à installer tightvncserver sur votre RaspPi, soit via SSH, soit en direct avec un clavier et un écran.
Code :
sudo apt-get install tightvncserver

Il faut ensuite démarrer tightvncserver en tapant tout simplement (toujours sur le PI ou via SSH) :
/!\ Cette opération est à refaire à chaque reboot de votre RaspPI.
Code :
tightvncserver

Il vous donnera un résultat de la forme :
Code :
[email protected]:~# tightvncserver

New 'X' desktop is Pi:Y
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/Pi:Y.log

[email protected]:~#
Avec le Y correspondant à votre port.

Il vous faudra ensuite un client de connexion VNC, je vous conseille realVNC qui est gratuit et qui fonctionne sous Windows, Linux, et Mac : realVNC

Lors du premier lancement il vous demandera de créer un mot de passe pour votre connexion VNC, à renseigner deux fois.

Une fois lancé, vous n'avez plus qu'à rentrer votre Ip local:port, donc quelque chose de la forme 192.168.X.X:Y.
Il vous demandera un mot de passe, systématiquement, qui correspond au mot de passe créé lors du premier lancement de tightvncserver sur votre RaspPI

[h] III. Configuration du disque dur[/h]

Je ne détaillerai pas trop cette partie, voir pas du tout, car cela dépend de votre configuration, tout dépend de ce que vous voulez en faire. Je vous conseille tout de même de faire 2 partitions minimum : une pour les Logs (soit /var/log, soit totalement /var) et une pour les Datas.
/!\ Pensez à modifier votre /etc/fstab en conséquence


[h] IV. Installation de OwnCloud[/h]

IV.1 Installation de OwnCloud et de MySQL-Server

/!\ Tout cela se fait sur le RaspPi (en direct, par SSH ou encore via RealVNC)

Il faut tout simplement installer Owncloud,
Code :
sudo apt-get install owncloud
Puis MySQL-Server
Code :
sudo apt-get install mysql-server
/!\ L'installateur vous demandera votre mot de passe Admin de MySQL, donc noté le bien.

IV.2 Configuration de MySQL

On commence par ce connecter à MySQL :
Code :
mysql -u root -p<votre_password>
Ensuite, on créé sa Base De Données :
Code :
create database VotreBDD;
On crée ensuite un utilisateur et lui donner tous les droits sur la table VotreBDD :
Code :
GRANT ALL PRIVILEGES ON VotreBDD.* TO <le_nom_du_user>@localhost IDENTIFIED BY '<le_password_du_user>';

Cette partie est finie, vous pouvez taper sur CTRL+D, ou taper "exit" pour quitter MySQL.

IV.3 Première connexion à votre cloud

Il faut commencer par vous connecter à votre cloud, via une machine distante sur votre réseaux local. Comprenez par la vous rendre sur votre cloud via un PC différent du RaspPi mais branché sur la même box que votre RaspPi.
Pour ce faire rien de plus simple, ouvrez un navigateur internet (Firefox, IE, Chrome, Safari, etc...) et taper l'adresse de votre RaspPi (en général vous pouvez trouver l'information sur votre Box, ou en tapant un petit "ifconfig /all" sur votre RaspPi), ce qui donnera quelque chose de la forme 192.168.X.X/VotreBDD

A partir de la plusieurs options sont disponibles :
- Il vous faut créer un nom d'utilisateur Admin et un mot de passe adéquat (en effet cela sera les informations de connexion administrateur de votre cloud)
- Il faut changer le répertoire des données par celui que vous avez prévu sur votre disque dur, donc renseigner le chemin d'accès sur lequel vous avez choisis de monter votre partition de disque dur dans votre FSTAB.
- Si vous n'avez fait que suivre ce tuto, seul MySQL sera disponible sur le troisième choix, et vous pouvez laisser ses informations tel quel (vous pourrez créer des utilisateurs via votre interface admin par la suite).

IV.4 Configuration de OwnCloud et les à-cotés

On va d'abord modifiés la capacité maximal d'upload de vos fichiers, pour cela connecter vous sur votre cloud avec les codes administrateur que vous avez créé juste avant.
Cliquer sur votre nom d'utilisateur en haut à droite, puis sur "Administration". Dans "Gestion des fichiers" vous pouvez mettre la taille maximal des fichiers que vous pouvez envoyer via l'interface web de votre cloud (par exemple 1 GB).

Il faut ensuite modifier le délai de connexion autorisé par Apache, afin que lorsque vous uploader un fichier, cela ne se coupe pas avant qu'il ait fini :
/!\ A faire sur le RaspPi (donc SSH, RealVNC, etc...)
Code :
sudo nano /etc/php5/apache2/php.ini
Et remplacer la valeur du max_execution_time et du max_input_time par la valeur qui vous correspond (en seconde, donc 1h = 3600)
Remplacer le upload_max_filesize et le post_max_size par les valeur en Mo de ce que vous avez renseigné dans votre interface de votre cloud (par exemple 1 GB = 1024M)
Faite de même avec :
Code :
sudo nano /etc/php5/cli/php.ini

On va maintenant créé un groupe d'utilisateur contenant les utilisateurs "pi" (utilisateur de votre RaspPi) et "www-data" (utilisateur d'Apache) afin de pouvoir accéder à vos fichiers depuis votre Cloud, ou en local sur votre RaspPi, ou encore via un chemin réseau sur votre ordinateur.
/!\ A faire sur le RaspPi (donc SSH, RealVNC, etc...)
On commence par créer le nouveau groupe :
Code :
sudo groupadd VotreGroupe
On ajoute l'utilisateur "pi" à "VotreGroupe" :
Code :
sudo gpasswd -a pi VotreGroupe
On fait de même pour l'utilisateur "www-data" :
Code :
sudo gpasswd -a www-data VotreGroupe

On change maintenant le propriétaire du dossier de votre cloud ainsi que le groupe propriétaire de façon récursive :
Code :
sudo chown -R www-data:VotreGroupe /LeChemin/DeMontage/DeVotrePartition/VotreBDD
On change les droits du propriétaire et du groupe propriétaire de façon récursive :
Code :
sudo chmod -R ug+rwx /LeChemin/DeMontage/DeVotrePartition/VotreBDD

Un petit reboot de votre RaspPi, un café, et on continue Smile

[h] V. Rendre votre cloud accessible de l'extérieur[/h]
Tout d'abord, je vous conseille, via votre box de donner une IP local fixe à votre RaspPi. Ensuite il vous suffit d'ouvrir les ports 80 (pour le HTTP), 443 (pour le HTTPS) en fonction de vos besoins.
Si vous le pouvez, je vous conseille de configurer un DNS (par exemple DynDNS chez orange)

[h] VI. Faire une sauvegarde de votre machine avec RSYNC accessible via owncloud[/h]
Il ne s'agit pour le moment que d'une sauvegarde en local, je n'ai pas l'utilité d'une sauvegarde en extérieur, donc je verrais plus tard si je me lance la dedans

VI.1 Configuration du coté du serveur

On commence par autorisé rsync à démarrer :
Code :
sudo nano /etc/default/rsync
Et on modifie la valeur de "RSYNC_ENABLE" par "true"

On crée ensuite un fichier contenant la configuration de Rsync :
Code :
sudo nano /etc/rsyncd.conf

On renseigne ce qui nous intéresse, avec un utilisateur "rsync" et un module appelé "save_rsync" dans notre cas, mais vous pouvez le nommer comme vous le désirez :
Code :
uid = rsync
gid = rsync

[save_rsync]
   path = /LeChemin/DeMontage/DeVotrePartition/VotreBDD/DossierDeSauvegarde
   comment = Sauvegarde
   read only = false

On crée maintenant notre utilisateur rsync :
Code :
sudo useradd rsync
sudo passwd rsync

On crée maintenant notre groupe rsync :
Code :
sudo groupadd rsync

On ajoute les utilisateurs nécessaire au fonctionnement au groupe rsync :
Code :
sudo gpasswd -a pi rsync
sudo gpasswd -a www-data rsync
sudo gpasswd -a rsync rsync

On change maintenant le groupe propriétaire du dossier de sauvegarde de façon récursive :
Code :
sudo chown -R www-data:rsync /LeChemin/DeMontage/DeVotrePartition/VotreBDD/DossierDeSauvegarde

On change les droits du propriétaire et du groupe propriétaire de façon récursive sur tout le cloud (votre dossier de sauvegarde inclus donc) :
Code :
sudo chmod -R ug+rwx,o-rwx /LeChemin/DeMontage/DeVotrePartition/VotreBDD/

On reboot, et on va pouvoir passer à la partie client (votre PC personnel).

VI.2 Configuration du coté du ordinateur
Cette partie ne concerne que les Linuxiens (fait sur Ubuntu dans mon cas), il est sûrement possible de faire la même chose sur Windows, mais il faudra chercher par vous même

On commence par faire son petit script avec un fichier ".sh"contenant les informations qui nous intéressent :
Code :
#!/bin/bash
REPERTOIRE_DESTINATION="VotreIpDeServeur::save_rsync/"

# Save du ~/Bureau
rsync -rltvusz --progress --delete /home/VotreNomDUtilisateur/Bureau $REPERTOIRE_DESTINATION
Vous n'avez qu'a recopier les deux dernières ligne en remplaçant le chemin à copier par celui des dossiers qui vous intéresse.
Concernant les options, je vais vous détailler celle que j'ai choisi, vous pouvez les changer en fonction de vos besoins, en utilisant man rsync.
r récursive
l garde les liens symboliques en liens symboliques
t garde les dates de modifications des fichiers copier
v verbose, donne plus d'informations sur le transfert que par défaut
u ne remplace pas les fichiers plus récent sur le serveur de sauvegarde que sur la machine local
s évite les problèmes liés aux espaces dans le nom des fichiers
z compresse les données pendant le transfert

Plus qu'à rendre son script exécutable, et à le lancer :
Code :
chmod +x /LeCheminOuSeTrouveLeScript/VotreScript.sh
./VotreScript.sh

Et voilà il n'y a plus qu'à attendre que la première sauvegarde soit fini Smile

/!\ La première sauvegarde peut être très longue en fonction de votre box, et surtout de la taille de votre sauvegarde. Les suivantes seront plus courtes.
/!\ Si vous rencontrez un erreur I/O au lancement de votre commande de sauvegarde sur le client, c'est que rsync n'est pas démarré sur le serveur. Un petit :
Code :
sudo /etc/init.d/rsync start
sur le serveur et tout devrait rentrer dans l'ordre.


Je ferais un tuto au fur et à mesure, une fois que cela fonctionnera, que je mettrais sur ce post.
/!\ C'est en cours de construction, donc chaque information est à prendre avec des pincettes.

Je vais détailler mes soucis sur un second post afin de simplifier la lecture du projet.

Mise à jour en date du 23/06/2016

Mes sources :
http://raspbian-france.fr/owncloud-cloud-raspberry-pi/
http://forum.raspfr.org/viewtopic.php?id=1960
https://doc.ubuntu-fr.org/

La totalité du projet est de moi, je ne demande pas de rémunération si vous voulez le réutiliser, mais le minimum est de me demander l'autorisation, de ne pas l'utiliser à des fins commerciales ou professionnelles, et de me citer ainsi que ce site, si vous souhaitez le réutiliser par la suite.

D'avance merci de l'aide que chacun m'apportera
Pavel

"Dites moi ce qu'est Dieu et je vous dirai si j'y crois" A. Einstein
"L'expérience est le nom que nous donnons à nos erreurs" O. Wild
Répondre
#2

Bon voila mes différents problèmes, les tests sont effectués via un poste windows 7 d'entreprise, hors réseau local :

- D'un poste hors réseau local, je ne parviens pas à faire un ping vers mon adresse publique, et je ne vois pas du tout comment le faire, sachant qu'en réseau local il voit bien le serveur, et je peux bien atteindre mon dossier "caché" en renseignant mes identifiants.

- D'un poste hors réseau local, je ne peux pas mapper un lecteur correspondant à mon adresse publique, afin d'accéder à mes données, sachant que je peux y accéder via un navigateur internet (avec la belle page de ligthttpd qui me dis qu'aucune page web n'est configurée, mais cela est normal, vu que je n'en veux pas).

Je ne vois pas du tout ce qui pose problème et j'aurais bien besoin de vos lummières

D'avance merci
Pavel

"Dites moi ce qu'est Dieu et je vous dirai si j'y crois" A. Einstein
"L'expérience est le nom que nous donnons à nos erreurs" O. Wild
Répondre
#3

bonjour,
tu as essayé depuis ton smartphone de joindre ip externe,
je ne sais plus s'il faut indiquer le port 80 ou 8080

pour le ping, il faut que ta box l'accepte en ouvrant le port
Répondre
#4

tu as installé apache2?
Répondre
#5

Je ne souhaite pas utiliser apache qui est assez lourd, j'ai installé lighthttpd qui fait la même chose en principe.
Concernant le ping, je regarderai la box du coup ^^
Sinon oui je joint bien mon adresse publique via un navigateur internet (Firefox), mais pas via l'explorateur de fichier, et c'est la qu'est mon problème

"Dites moi ce qu'est Dieu et je vous dirai si j'y crois" A. Einstein
"L'expérience est le nom que nous donnons à nos erreurs" O. Wild
Répondre
#6

la box fait du nat pour joindre le RPi?
Répondre
#7

Oui, et il est bien activé. Il s'agit d'une Livebox. Si besoin je peux te donner l'ip publique ^^

"Dites moi ce qu'est Dieu et je vous dirai si j'y crois" A. Einstein
"L'expérience est le nom que nous donnons à nos erreurs" O. Wild
Répondre
#8

https://lafibre.info/orange-tutoriels/li...onse-ping/

pour configurer la livebox en reponse au ping .
Répondre
#9

bonjour,
tu envoies un MP,
je verrais ton @IP
Répondre
#10

Merci pour le lien du ping, je t'envoi l'ip en mp Smile

"Dites moi ce qu'est Dieu et je vous dirai si j'y crois" A. Einstein
"L'expérience est le nom que nous donnons à nos erreurs" O. Wild
Répondre
#11

essaie ce lien qui permet un test depuis l'exrérieur,

http://corrigesduweb.com/test-page.php

j'ai des infos sous réserve ce n'est pas la page d'acceuil par défaut,
mais comme tu n'as pas apache!

normalement dans les logs tu devrais avoir 2 accéshttp://corrigesduweb.com/test-page.php
-depuis chez moi,
-depuis ce serveur
Répondre
#12

J'avoue ne pas avoir compris ta remarque sur ce que je dois avoir, dans quel log ?
Sur ton site, il y a bien ma page qui est reconnue

"Dites moi ce qu'est Dieu et je vous dirai si j'y crois" A. Einstein
"L'expérience est le nom que nous donnons à nos erreurs" O. Wild
Répondre
#13

bonsoir,
sous apache tu as la liste des connexions
Répondre
#14

Tu trouve ce fichier ou sous apache ? ça me permettrait de creuser la piste ^^

"Dites moi ce qu'est Dieu et je vous dirai si j'y crois" A. Einstein
"L'expérience est le nom que nous donnons à nos erreurs" O. Wild
Répondre
#15

Bonjour,
sur le RPi 2,
/var/log/apche2

un répertoire avec plein de logs dont access.log
Répondre
#16

En fait, je pense que tu ne comprends pas vraiment ce que je cherche à faire.
Je vais essayer de reformuler, en fait je veux faire un lecteur réseaux, comme sur l'image ci dessous, mais que je puisse acceder de partout (un peu comme un serveur d'entreprise).
Cela marche parfaitement en local, mais je n'arrive pas à le mapper de l'extérieur. Je ne cherche pas à me connecter au serveur lighthttp ou apache via un navigateur.

Voici l'image en question :
http://imgur.com/wJ8qIAo

Est ce plus clair ?

"Dites moi ce qu'est Dieu et je vous dirai si j'y crois" A. Einstein
"L'expérience est le nom que nous donnons à nos erreurs" O. Wild
Répondre
#17

Après je viens de vérifier, je n'avais pas de DMZ de configurée, j'ai donc maintenant sur ma box :
- une config NAT/PAT sur les port 80 et 443 de ma box pour le raspberry
- une config dmz pour le raspberry

Le problème qui se pose c'est que le DMZ me donne une adresse IP local 192.168.x.x mais je ne sais pas ou récupéré une adresse publique du coup, sais tu ou je pourrais la récupéré ?

"Dites moi ce qu'est Dieu et je vous dirai si j'y crois" A. Einstein
"L'expérience est le nom que nous donnons à nos erreurs" O. Wild
Répondre
#18

euh si j'ai compris, tu veux avoir accès a ton serveur de l’extérieur ( ip publique ) via un gestionnaire de fichier et non pas en http ?

pour ton ip publique : http://www.mon-ip.com/
Répondre
#19

Ouais voilà c'est ça ^^
Du coup je ne vois pas trop à quoi servirai apache, ou Lighthttpd dans mon cas :/
Surtout qu'il ne peux pas loguer de connexion, vu que je n'arrive pas à mapper mon serveur sur un autre poste

"Dites moi ce qu'est Dieu et je vous dirai si j'y crois" A. Einstein
"L'expérience est le nom que nous donnons à nos erreurs" O. Wild
Répondre
#20

ah je sais pas si via un gestionnaire de fichier tu peux y avoir acces de l'exterieur ( et franchement, ca m'etonnerai )
De l'interieur tu passe par un partage samba ... peut etre avec konqueror sous kde linux ...

j'ai un nas sur ma fb auquel j'ai acces total ( selon autorisations ) via dolphin mais en : smb://nas/
de l'exterieur, je le touche via un client ftp ... ou http si page http ...
Répondre
#21

Dolphin ? Je ne connais pas, c'est quoi ?
Ouep mais le coté ftp n'est pas bien simple.
Apres sinon cela voudrais dire qu'il faudrait que je monte un VPN non ? (la j'avoue, je ne sais pas du tout de quoi je parle, ou très légérement)

"Dites moi ce qu'est Dieu et je vous dirai si j'y crois" A. Einstein
"L'expérience est le nom que nous donnons à nos erreurs" O. Wild
Répondre
#22

etant sous linux, je connais pas non plus le windows ... dolphin est un gestionnaire de fichiers modulable / configurable a souhait !
Répondre
#23

Si déjà j'arrive à le faire marcher sous linux, ça ne sera pas trop mal XD
Comment récupère tu ton adresse publique de ton rasp dans un premier temps, parce que j'avais réussi mais... jla retrouve plus, et ça deviens compliqué pour les test XD

"Dites moi ce qu'est Dieu et je vous dirai si j'y crois" A. Einstein
"L'expérience est le nom que nous donnons à nos erreurs" O. Wild
Répondre
#24

tu n'a pas d'ip publique sur ton rasp .... tu as la même ip publique que ta box !
tu la redirige simplement vers ton rasp vers le port 80 via la conf de ta box !
Répondre
#25

et comment je trouve l'ip public de ma box du coup ? XD

"Dites moi ce qu'est Dieu et je vous dirai si j'y crois" A. Einstein
"L'expérience est le nom que nous donnons à nos erreurs" O. Wild
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)