Table des matières:
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
Créez votre propre serveur cloud fiable
Étape 1: Matériel
- Utilisez une boîte en métal et peignez-la dans votre couleur préférée. (J'ai utilisé un ancien contrôleur de stockage)
- Plaque Hobbycolor qui résiste à au moins 75 C
- Framboise pi 3
- Carte Micro SD (j'ai utilisé 16 Go mais vous pouvez utiliser n'importe quelle taille >= 4 Go)
- Hub USB avec une prise d'alimentation externe
- adaptateurs usb vers sata
- Disques durs
- Câble réseau + prise murale réseau
- Fils + prise d'entrée d'alimentation
- Boulons récupérés du port série ou vga de l'ancien ordinateur
- Ports USB récupérés de l'ancien ordinateur
Raspberry pi est attaché à la plaque hobbycolor avec des boulons du port vga.
Les disques sont attachés avec des boulons réguliers à l'arrière.
Étape 2: Câblage
La prise d'entrée d'alimentation se connecte aux deux ports USB récupérés
Le premier usb (derrière tous les fils à l'avant gauche) est utilisé comme source d'alimentation, seuls les fils rouge et noir sont utilisés et connectés à la prise d'entrée d'alimentation. Le premier câble USB dans ce port alimente le pi, le deuxième câble USB alimente le concentrateur USB.
Le deuxième usb (celui à l'arrière - utile pour connecter des périphériques supplémentaires) a du rouge et du noir connectés directement à l'entrée d'alimentation, tandis que le blanc et le vert de chaque port sont connectés à un câble usb récupéré d'une vieille souris (les blancs directement connecté à pi)
Le câble LAN connecte la prise murale du réseau externe au port LAN raspberry pi
Les disques sont connectés via des adaptateurs USB vers SATA au concentrateur USB alimenté externe (les disques de plus grande capacité nécessitent plus de puissance et nous ne voulons pas rendre pi instable), qui est connecté à l'un des ports pi
Étape 3: Logiciel
Installer le système d'exploitation
Utilisez Centos 7 pour bras pour plus de sécurité. (https://mirror.centos.org/altarch/7/isos/armhfp/); testé: CentOS-Userland-7-armv7hl-Minimal-1611-RaspberryPi3.img.xz, tutoriel ici:
Mettez l'image sur la carte micro sd de votre ordinateur Linux (pour Windows, vérifiez:
xzcat CentOS-Userland-7-armv7hl-Minimal-1611-RaspberryPi3.img.xz | sudo dd of=$/path/to/sd/card status=progress bs=4M
mot de passe root: centos
utiliser nmtui pour configurer le réseau et définir une adresse IP statique
Configurer les disques
Créez une partition sur chaque disque (il vaut mieux être un peu plus petit que le disque entier - disons 1 Go plus petit - différents disques de même capacité - ex: wd vs toshiba - ont des tailles différentes:)). De cette façon, vous serez en sécurité si vous devez remplacer l'un des disques
Créez un système de fichiers btrfs raid 1 sur vos disques
mkfs.btrfs -d raid1 -m raid1 /dev/sda1 /dev/sdb1
étiquette du système de fichiers btrfs /dev/sda1 rpi3
Montez le système de fichiers en utilisant autofs (empêche le non démarrage de pi si quelque chose ne va pas avec les disques)
miam install -y autofs
ajoutez le suivant à /etc/auto.master:
/- /etc/auto.ext-usb --timeout=300
Créez /etc/auto.ext-usb avec le contenu:
/srv -fstype=auto, compress=lzo, noatime:/dev/disk/by-label/rpi3
service autofs redémarrer
ls /srv, df -h, confirme qu'il est monté
Installer owncloud
Prérequis (apache, php, mariadb):
miam install -y httpd; miam install -y mod_ssl; miam install -y mariadb-server; miam installer -y php*
Installez owncloud 9 qui est compatible avec php54 fourni avec centos7, un bon tutoriel pour ça:
download.owncloud.org/download/repositories…
Une fois owncloud opérationnel, déplacez le répertoire de données de l'emplacement par défaut vers les nouveaux lecteurs (/srv)
service httpd arrêter
éditez /var/www/html/owncloud/config/config.php et effectuez cette modification:
'datadirectory' => '/srv/owncloud/data', mkdir /srv/owncloud; mv /var/www/html/owncloud/data /srv/owncloud && chown -R apache:apache /srv/owncloud/data/
service httpd démarrer
Vous pouvez installer le client de bureau owncloud sur linux / windows et pour les téléphones, j'utilise foldersync
-
Activer et configurer SELinux
(la version de travail est: selinux-policy-3.13.1-166.el7.5.noarch, selinux-policy-targeted-3.13.1-166.el7.5.noarch)
assurez-vous que vous ne mettez pas à jour cette politique (dans /etc/yum.conf, ajoutez: exclude = selinux-policy*)
restaurationcon -Rv /
/boot/cmdline.txt doit contenir: selinux=1 security=selinux enforcing=1
/etc/sysconfig/selinux doit contenir: SELINUX=enforcing et SELINUXTYPE=targeted
redémarrer
Effectuez les réglages suivants après le redémarrage:
miam install -y policycoreutils-python
semange fcontext -a -t httpd_sys_rw_content_t /srv/owncloud(/.*) ?
setsebool -P httpd_builtin_scripting=1; setsebool -P httpd_can_network_connect=1; setsebool -P httpd_enable_cgi=1; setsebool -P
si vous rencontrez des problèmes, insérez la carte SD dans un autre ordinateur et modifiez cmdline.txt pour avoir: selinux=0
Sécurisez votre box
Changer le mot de passe root
Créez-vous un utilisateur (adduser -s /bin/bash "me") et définissez un mot de passe fort (passwd "me")
configurer sshd pour écouter sur un autre port et ne PAS autoriser les connexions root
Dans /etc/ssh/sshd_config, définissez le port
(disons 2222), PermitRootLogin non
Informez SELinux et firewalld de vos intentions:
semanage port -a -t ssh_port_t -p tcp 2222
service firewalld start && systemctl activer firewalld.service
firewall-cmd --permanent --add-port 2222/tcp
pare-feu-cmd --reload
redémarrage du service sshd
Rendez-le public
Sur votre routeur Internet, transférez ces ports à votre ensemble d'adresses IP statiques dans la première étape: 80, 443, 2222.
Configurez le DDNS sur votre routeur pour pouvoir accéder à votre box de n'importe où.
Réglage fin
Définissez Apache sur 5 procs car la mémoire est faible:
/etc/httpd/conf.modules.d/00-mpm.conf
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
Serveurs de démarrage 5
MinSpareServers 5
MaxSpareServers 5
ServerLimit 5
MaxClients 5
MaxRequestsPerChild 3000
service httpd redémarrer
Configurez cron pour nettoyer les disques chaque semaine et faire un instantané chaque nuit (dans /etc/crontab)
01 02 * * 6 root btrfs scrub start /srv01 01 * * * root /usr/sbin/btrfs instantané de sous-volume -r /srv /srv/@$(printf "\%s" $(/bin/date +\%d \%b\%Y-\%k-\%M))
vérifier de temps en temps le volume avec: btrfs dev stats /srv
Utilisez watchdog pour réinitialiser automatiquement s'il ne répond plus (raspberry pi3 en a un matériel):
miam install -y chien de garde
/etc/chien de garde.conf
watchdog-device = /dev/watchdogwatchdog-timeout = 15
intervalle = 1logtick = 1 log-dir = /var/log/watchdog
temps réel = ouipriorité = 1
service watchdog start && systemctl enable watchdog.service