Serveur orangepi-raspberry nextcloud en photovoltaïque autonome : Différence entre versions

(Page créée avec « {{Tuto Details |Main_Picture=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_171328_268.jpg |Main_Picture_annotation={"version":"3.5.0","objec... »)
 
Ligne 3 : Ligne 3 :
 
|Main_Picture_annotation={"version":"3.5.0","objects":[{"type":"image","version":"3.5.0","originX":"left","originY":"top","left":-20,"top":11,"width":4032,"height":3024,"fill":"rgb(0,0,0)","stroke":null,"strokeWidth":0,"strokeDashArray":null,"strokeLineCap":"butt","strokeDashOffset":0,"strokeLineJoin":"miter","strokeMiterLimit":4,"scaleX":0.16,"scaleY":0.16,"angle":0,"flipX":false,"flipY":false,"opacity":1,"shadow":null,"visible":true,"clipTo":null,"backgroundColor":"","fillRule":"nonzero","paintFirst":"fill","globalCompositeOperation":"source-over","transformMatrix":null,"skewX":0,"skewY":0,"crossOrigin":"","cropX":0,"cropY":0,"src":"https://wiki.lowtechlab.org/images/e/e9/Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_171328_268.jpg","filters":[]}],"height":450.16574585635357,"width":600}
 
|Main_Picture_annotation={"version":"3.5.0","objects":[{"type":"image","version":"3.5.0","originX":"left","originY":"top","left":-20,"top":11,"width":4032,"height":3024,"fill":"rgb(0,0,0)","stroke":null,"strokeWidth":0,"strokeDashArray":null,"strokeLineCap":"butt","strokeDashOffset":0,"strokeLineJoin":"miter","strokeMiterLimit":4,"scaleX":0.16,"scaleY":0.16,"angle":0,"flipX":false,"flipY":false,"opacity":1,"shadow":null,"visible":true,"clipTo":null,"backgroundColor":"","fillRule":"nonzero","paintFirst":"fill","globalCompositeOperation":"source-over","transformMatrix":null,"skewX":0,"skewY":0,"crossOrigin":"","cropX":0,"cropY":0,"src":"https://wiki.lowtechlab.org/images/e/e9/Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_171328_268.jpg","filters":[]}],"height":450.16574585635357,"width":600}
 
|Licences=Attribution (CC BY)
 
|Licences=Attribution (CC BY)
|Description=<translate>Tutoriel pour mettre en place un serveur nextcloud (équivalent drive google mais libre et adapté à l'organisation collective) sur un ordinateur monocarte autonome (alimenté en photovoltaïque avec stockage)
+
|Description=Tutoriel pour mettre en place un serveur nextcloud (équivalent drive google mais libre et adapté à l'organisation collective) sur un ordinateur monocarte autonome (alimenté en photovoltaïque avec stockage)
  
 
Ce tutoriel n'est pas tout à fait "lowtech" en première approche dans la mesure où il s'agit d'informatique et de photovoltaique.
 
Ce tutoriel n'est pas tout à fait "lowtech" en première approche dans la mesure où il s'agit d'informatique et de photovoltaique.
Ligne 12 : Ligne 12 :
 
Le tuto remet en question le marché des vpns, le photovoltaique avec stockage neuf et cher (en réalité le photovoltaique est devenu trop competitif face au pétrole et encore plus face au nucléaire!), et le marché des gafam et leur design de surveillance nocif pour la confiance et le lien social.
 
Le tuto remet en question le marché des vpns, le photovoltaique avec stockage neuf et cher (en réalité le photovoltaique est devenu trop competitif face au pétrole et encore plus face au nucléaire!), et le marché des gafam et leur design de surveillance nocif pour la confiance et le lien social.
  
Les commandes sont celles pour un systeme debian</translate>
+
Les commandes sont celles pour un systeme debian
 
|Area=Energy, Tools
 
|Area=Energy, Tools
 
|Type=Tutorial
 
|Type=Tutorial
Ligne 23 : Ligne 23 :
 
}}
 
}}
 
{{Introduction
 
{{Introduction
|Introduction=<translate>Ce tutoriel est fait pour mettre en place un serveur nextcloud (équivalent drive google mais libre et adapté à l'organisation collective) sur un ordinateur monocarte autonome (de type raspberry pi et alimenté en photovoltaïque avec stockage).
+
|Introduction=Ce tutoriel est fait pour mettre en place un serveur nextcloud (équivalent drive google mais libre et adapté à l'organisation collective) sur un ordinateur monocarte autonome (de type raspberry pi et alimenté en photovoltaïque avec stockage).
  
 
Ce tutoriel n'est pas tout à fait "lowtech" en première approche dans la mesure où il s'agit d'informatique et de photovoltaique.
 
Ce tutoriel n'est pas tout à fait "lowtech" en première approche dans la mesure où il s'agit d'informatique et de photovoltaique.
Ligne 37 : Ligne 37 :
 
Les commandes sont celles pour un systeme debian.
 
Les commandes sont celles pour un systeme debian.
  
<br /></translate>
+
<br />
 
}}
 
}}
 
{{Materials
 
{{Materials
|Material=<translate></translate>
+
|Material=
|Tools=<translate>autonomie.ods</translate>
+
|Tools=autonomie.ods
 
|Tuto_Attachments={{Tuto Attachments
 
|Tuto_Attachments={{Tuto Attachments
 
|Attachment=Calcul_photovoltaïque.ods
 
|Attachment=Calcul_photovoltaïque.ods
Ligne 47 : Ligne 47 :
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=<translate>Materiel</translate>
+
|Step_Title=Materiel
|Step_Content=<translate>Les liens vers le materiel photovoltaïque utilisé sont dans le fichier autonomie.ods ( lisible avec libreoffice) attaché à ce tutoriel.
+
|Step_Content=Les liens vers le materiel photovoltaïque utilisé sont dans le fichier autonomie.ods ( lisible avec libreoffice) attaché à ce tutoriel.
  
  
Ligne 100 : Ligne 100 :
  
  
-cable electrique mc4: 20€</translate>
+
-cable electrique mc4: 20€
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_192859_778.jpg
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_192859_778.jpg
 
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_192848_031.jpg
 
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_192848_031.jpg
Ligne 108 : Ligne 108 :
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=<translate>Installation de nextcloud 1/4</translate>
+
|Step_Title=Installation de nextcloud 1/4
|Step_Content=<translate>1.Téléchargement de dietpi et préparation de la clé usb
+
|Step_Content=1.Téléchargement de dietpi et préparation de la clé usb
  
  
Ligne 164 : Ligne 164 :
  
  
<br /></translate>
+
<br />
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_10.png
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_10.png
 
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_02.png
 
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_02.png
Ligne 173 : Ligne 173 :
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=<translate>Installation de nextcloud 2/4</translate>
+
|Step_Title=Installation de nextcloud 2/4
|Step_Content=<translate>Voir images</translate>
+
|Step_Content=Voir images
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_05.jpg
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_05.jpg
 
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_06.jpg
 
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_06.jpg
Ligne 183 : Ligne 183 :
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=<translate>Installation de nextcloud 3/4</translate>
+
|Step_Title=Installation de nextcloud 3/4
|Step_Content=<translate>Voir images</translate>
+
|Step_Content=Voir images
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_11.jpg
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_11.jpg
 
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_12.jpg
 
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_12.jpg
Ligne 193 : Ligne 193 :
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=<translate>Installation de nextcloud 4/4</translate>
+
|Step_Title=Installation de nextcloud 4/4
|Step_Content=<translate>Voir images</translate>
+
|Step_Content=Voir images
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_17.jpg
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_17.jpg
 
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_18.jpg
 
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_18.jpg
Ligne 202 : Ligne 202 :
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=<translate>configuration du reseau local</translate>
+
|Step_Title=configuration du reseau local
|Step_Content=<translate>Brancher le orangepi ou le raspberry pi à votre box internet  
+
|Step_Content=Brancher le orangepi ou le raspberry pi à votre box internet  
  
 
(avec un cable rj45 pour le orange pi qui n'a pas le wifi par défaut, avec un cable rj45 ou en wifi pour votre raspberry pi)
 
(avec un cable rj45 pour le orange pi qui n'a pas le wifi par défaut, avec un cable rj45 ou en wifi pour votre raspberry pi)
Ligne 261 : Ligne 261 :
 
'''<nowiki>http://adresse_ip_publique</nowiki>>/nextcloud'''
 
'''<nowiki>http://adresse_ip_publique</nowiki>>/nextcloud'''
  
(remplacer adresse_ip_publique par l'adresse trouvée précédemment</translate>
+
(remplacer adresse_ip_publique par l'adresse trouvée précédemment
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_0_ip_a_ifconfig_eth0_ubuntu.jpg
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_0_ip_a_ifconfig_eth0_ubuntu.jpg
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=<translate>configuration d'un vpn wireguard pour rendre accessible votre serveur depuis une box 4g ou un modem 4g</translate>
+
|Step_Title=configuration d'un vpn wireguard pour rendre accessible votre serveur depuis une box 4g ou un modem 4g
|Step_Content=<translate>[ATTENTION, cette section remet en question le marché des vpns!!]
+
|Step_Content=<nowiki>[ATTENTION, cette section remet en question le marché des vpns!!]</nowiki>
  
 
Cette section n'est utile que pour les connections 4G/5G.
 
Cette section n'est utile que pour les connections 4G/5G.
Ligne 326 : Ligne 326 :
 
sudo mkdir -p /etc/wireguard
 
sudo mkdir -p /etc/wireguard
  
sudo sh -c 'wg genkey | (umask 0077 && tee /etc/wireguard/private_key) | wg pubkey > /etc/wireguard/public_key'
+
sudo sh -c 'wg genkey
 +
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_gandi_1.png
 +
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_gandi_2.png
 +
}}
 +
{{Tuto Step
 +
|Step_Title=configuration d'un vpn openvpn pour rendre accessible votre serveur depuis une box 4g ou un modem 4g
 +
|Step_Content=<nowiki>Dans le cas où ca ne fonctionnerait pas avec wireguard, vous pouvez utiliser openvpn, (qui est configurable sans ligne de commande à la souris!). </nowiki>
  
  
Afficher la clé publique dietpi sur votre orange pi/raspberry pi en tapant
+
Pour cela suivez les étapes suivantes sur votre serveur gandi  (n'oubliez pas de désinstaller wireguard sur votre serveur et le dietpi avec sudo apt remove wireguard && sudo apt purge wireguard si ca n'a pas fonctionné avec wireguard)
  
sudo cat /etc/wireguard/public_key
 
  
Afficher egalement la clé publique du serveur gandi sur votre serveur en tapant
 
  
sudo cat /etc/wireguard/public_key
+
wget -O- "<nowiki>https://as-repository.openvpn.net/as-repo-public.gpg</nowiki>" | sudo apt-key add -
  
 +
echo "deb <nowiki>http://as-repository.openvpn.net/as/debian</nowiki> bullseye main" | sudo tee /etc/apt/sources.list.d/ovpnas.list
  
Entrer ensuite les commandes suivantes pour créer un fichier de configuration /etc/wireguard/wg0.conf sur votre serveur:
+
sudo apt install openvpn-as
  
Taper les lignes suivantes (remplacer cle_publique_du_orange_pi_ou_raspberry_pi par celle affichée précédemment) :
+
Rendez vous ensuite sur la page de configuration du serveur: https://<adresse_ip_du_serveur>
  
echo "[Interface]" | sudo tee /etc/wireguard/wg0.conf
+
login:openvpn
  
echo "Address=10.10.0.1/24" | sudo tee -a /etc/wireguard/wg0.conf
+
password: indiqué dans le log de l'installation
  
echo "PrivateKey=$(sudo cat /etc/wireguard/private_key)" | sudo tee -a /etc/wireguard/wg0.conf
 
  
echo "ListenPort=12345" | sudo tee -a /etc/wireguard/wg0.conf
+
screen 1:
  
echo "[Peer]" | sudo tee -a /etc/wireguard/wg0.conf
+
go to admin panel
  
echo "PublicKey=cle_publique_du_orange_pi_ou_raspberry_pi" | sudo tee -a /etc/wireguard/wg0.conf
+
reentrer vos login/password
  
echo "AllowedIPs=10.10.0.2/32" | sudo tee -a /etc/wireguard/wg0.conf
 
  
 +
screen2:
  
Entrer ensuite la commande suivante sur le serveur pour lancer et activer le service vpn
+
Network settings: Activer UDP seulement et port 1194 puis save settings
  
sudo systemctl start wg-quick@wg0
+
screen3:
  
sudo systemctl enable wg-quick@wg0
+
VPN Settings: remplir les champs comme indiqué sur le screenshot puis save settings
  
  
taper ensuite
+
screen 4 et 4.1:
  
curl ifconfig.me
+
User Management/User permission : changer le mot de passe dans local password et entrer l'adresse ip fixe du screeenshot puis save settings.
  
 +
Puis update running server
  
pour obtenir l'ip publique de votre serveur gandi.
+
Pour vous reconnecter à l'interface de configuration:
  
 +
<nowiki>https://adresse_ip_du_serveur:943</nowiki>
  
Taper ensuite les lignes suivantes sur votre dietpi (remplacer cle_publique_du_serveur par celle affichée précédemment et ip_publique_du_serveur par celle affichée précédemment) :
 
  
echo "[Interface]" | sudo tee /etc/wireguard/wg0.conf
+
screen 5:
  
echo "Address=10.10.0.2/24" | sudo tee -a /etc/wireguard/wg0.conf
+
User Management/User profile: cliquer sur new profile
  
echo "PrivateKey=$(sudo cat /etc/wireguard/private_key)" | sudo tee -a /etc/wireguard/wg0.conf
+
Cliquer sur create profile
  
echo "[Peer]" | sudo tee -a /etc/wireguard/wg0.conf
 
  
echo "PublicKey=cle_publique_du_serveur" | sudo tee -a /etc/wireguard/wg0.conf
+
Renommer le fichier de configuration téléchargé en openvpn.conf
  
echo "AllowedIPs=10.10.0.1/32" | sudo tee -a /etc/wireguard/wg0.conf
 
  
echo "Endpoint=ip_publique_du_serveur:12345" | sudo tee -a /etc/wireguard/wg0.conf
+
Ouvrir le fichier de configuration et trouver la ligne auth-user-pass et la remplacer par la ligne suivante:
  
La ligne AllowedIPS définit les ips de destination (sortantes) qui passeront par le tunnel et seront chiffrées mais aussi les ips entrantes autorisées.
+
auth-user-pass auth.txt
  
Si vous souhaitez configurer votre "client" (orange pi ou raspberry pi) pour utiliser le vpn pour accéder à internet, remplacer AllowedIPs=10.10.0.1/32 par AllowedIPs=0.0.0.0/0
 
  
En définissant 0.0.0.0/0 on indique que tout le traffic du orange pi/raspberry pi passera par le tunnel wireguard et toutes les ip entrantes seront autorisées.
+
Lancer ensuite sur les commandes suivantes sur le orangepi ou raspberry pi:
  
Il est alors important de bien configurer son firewall sur le serveur!
+
sudo apt update && sudo apt install openvpn-client
  
Pour vérifier que wireguard fonctionne, lancer la commande suivante sur le serveur vpn:
 
  
ping 10.10.10.2 -c 4
+
Copier le fichier de configuration télécharger vers /etc/openvpn/client/openvpn.conf sur votre orangepi/raspberry pi
  
Le ping doit fonctionner
 
  
Ca ne fonctionne de façon systématique chez moi, mais je suis sur que si vous essayez loin de l'oeil de sauron votre météo numérique ira mieux que la mienne, et ca fonctionnera chez vous ;)
+
creer un fichier auth.txt dans lequel vous copiez les deux lignes suivantes en remplacant password par votre mot de passe:
  
 +
openvpn
  
Si vous utilisez un serveur vpn, il faudra penser à le sécuriser comme le orange pi (voir section sécurisation).
+
password
  
<br /></translate>
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_gandi_1.png
 
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_gandi_2.png
 
}}
 
{{Tuto Step
 
|Step_Title=<translate>configuration d'un vpn openvpn pour rendre accessible votre serveur depuis une box 4g ou un modem 4g</translate>
 
|Step_Content=<translate>Dans le cas où ca ne fonctionnerait pas avec wireguard, vous pouvez utiliser openvpn, (qui est configurable sans ligne de commande à la souris!).
 
  
 +
Lancer ensuite le client vpn:
  
Pour cela suivez les étapes suivantes sur votre serveur gandi  (n'oubliez pas de désinstaller wireguard sur votre serveur et le dietpi avec sudo apt remove wireguard && sudo apt purge wireguard si ca n'a pas fonctionné avec wireguard)
+
sudo systemctl start openvpn-client@openvpn
  
  
wget -O- "<nowiki>https://as-repository.openvpn.net/as-repo-public.gpg</nowiki>" | sudo apt-key add -
+
Si vous voulez que le client se connecte automatiquement au lancement de la machine taper
  
echo "deb <nowiki>http://as-repository.openvpn.net/as/debian</nowiki> bullseye main" | sudo tee /etc/apt/sources.list.d/ovpnas.list
+
sudo systemctl enable openvpn-client@openvpn
 +
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen1.png
 +
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen2.png
 +
|Step_Picture_02=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen3.png
 +
|Step_Picture_03=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen4.png
 +
|Step_Picture_04=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen4.1.png
 +
|Step_Picture_05=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen6.png
 +
}}
 +
{{Tuto Step
 +
|Step_Title=Rediriger les requetes du serveur vpn vers le orange pi-raspberry pi
 +
|Step_Content=Pour rediriger les requetes sur le serveur vers le orange pi / raspberry pi, on met en place un serveur logiciel web nginx:
  
sudo apt install openvpn-as
 
  
 +
sudo apt install nginx -y
  
voir https://openvpn.net/vpn-server-resources/installing-openvpn-access-server-on-a-linux-system/ pour les détails.
 
  
 +
On ouvre ensuite le fichier de configuration de ce logiciel serveur web:
  
Rendez vous ensuite sur la page de configuration du serveur: https://<adresse_ip_du_serveur>
+
sudo nano /etc/nginx/sites-enabled/default
  
login:openvpn
 
  
password: indiqué dans le log de l'installation
+
Remplacer le contenu du fichier par ce qui suit:  
  
  
Image 1: go to admin panel
+
server {
  
reentrer vos login/password
+
listen 80;
  
 +
server_name localhost;
  
Image 2:
+
server_tokens off;
  
Network settings: Activer UDP seulement et port 1194 puis save settings
+
add_header Permissions-Policy "accelerometer=(),autoplay=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),fullscreen=(),geolocation=(),gyroscope=(),magnetometer=(),microphone=(),midi=(),payment=(),picture-in-picture=(),publickey-credentials-get=(),screen-wake-lock=(),sync-xhr=(self),usb=(),web-share=(),xr-spatial-tracking=()";
  
 +
add_header Strict-Transport-Security "max-age=31536000 ; includeSubDomains";
  
Image 3:
+
add_header X-Frame-Options "SAMEORIGIN";
  
VPN Settings: remplir les champs comme indiqué sur le screenshot puis save settings
+
add_header X-Content-Type-Options nosniff;
  
 +
add_header Content-Security-Policy "script-src 'self';";
  
Image 4:
+
add_header X-Permitted-Cross-Domain-Policies none;
  
User Management/User permission : changer le mot de passe dans local password et entrer l'adresse ip fixe du screeenshot puis save settings.
+
add_header Referrer-Policy no-referrer;
  
 +
add_header Clear-Site-Data "cache,cookies,storage";
  
Image 5 :
+
location / {
  
Puis update running server
+
proxy_pass <nowiki>http://10.10.0.2</nowiki>;
  
Pour vous reconnecter à l'interface de configuration:
+
proxy_set_header Host $host;
  
<nowiki>https://adresse_ip_du_serveur:943</nowiki>
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  
 +
proxy_set_header X-Real-IP $remote_addr;
  
 +
proxy_set_header X-Forwarded-Proto $scheme;
  
Image 6:
+
client_max_body_size 20M;
  
User Management/User profile: cliquer sur new profile
+
limit_except GET HEAD POST {deny all;}
  
Puis cliquer sur create profile
+
}
  
  
Renommer le fichier de configuration téléchargé en openvpn.conf
+
}
  
  
Ouvrir le fichier de configuration et trouver la ligne auth-user-pass et la remplacer par la ligne suivante:
+
Nginx va rediriger les requetes faites sur l'ip publique de votre serveur vers le nextcloud de votre orange pi / raspberry pi (ligne proxy_pass <nowiki>http://10.10.0.2</nowiki>;)
  
auth-user-pass auth.txt
 
  
 +
Vous pouvez tester si cela fonctionne en vous rendant sur la page:
  
Lancer ensuite sur le orangepi raspberry pi:  
+
http://ip_publique_de_votre_serveur_gandi
  
sudo apt update && sudo apt install openvpn-client
 
  
 +
Attention, de nombreux navigateurs n'acceptent plus tres bien les redirections en http, voir la section https pour configurer le https (il faudra prendre un nom de domaine).
 +
}}
 +
{{Tuto Step
 +
|Step_Title=Nom de domaine et adresse fixe
 +
|Step_Content=Le nom de domaine est l'adresse dans votre navigateur : par exemple lowtechlab.org.
  
Copier le fichier de configuration téléchargé vers /etc/openvpn/client/openvpn.conf sur votre orangepi/raspberry pi
 
  
 +
Il vous permet de rendre votre serveur accessible plus facilement avec une adresse facilement memorisable. Il ne fait qu'associer le nom de domaine à l'adresse ip de votre serveur vpn ou l'adresse ip de votre box.
  
creer un fichier auth.txt placé dans ce repertoire /etc/openvpn/client dans lequel vous copiez les deux lignes suivantes en remplacant password par votre mot de passe:
 
  
openvpn
+
Que vous enregistriez un nom de domaine pour rediriger vers votre adresse ip ou pas (c'est nécessaire pour avoir le https cependant), il faut noter que par défaut, les fournisseurs d'accès vous octroient une  adresse ip différente à chaque connexion.
  
password
 
  
 +
Si vous souhaitez une adresse ip fixe, il faut en faire la demande à votre fournisseur d'accès. Ce n'est malheureusement plus très répandue dans les offres grands publics. Orange propose à la place un "DynDns" qui vous propose une adresse en lettres correspondant à votre adresse ip mais à laquelle vous ne pouvez pas rattacher facilement un nom de domaine. Certains gestionnaires de nom de domaine, comme infomaniak, proposent tout de même d'enregistrer un nom de domaine pour le dyndns qui est acessible assez facilement sans surcout chez les principaux opérateurs.
  
Lancer ensuite le client vpn:
 
  
sudo systemctl start openvpn-client@openvpn
+
Si vous avez un accès en 4G, il n'est pas possible d'avoir une adresse ip fixe et votre adresse ip publique correspondra à un "pool". C'est à dire que l'opérateur alloue une adresse ip publique pour plusieurs clients, ne vous permettant pas d'utiliser la technique du NAT/Port Forwarding pour rendre votre dietpi accessible sur internet.
  
 +
Il faudra alors prendre un nom de domaine pour votre serveur vpn qui redirige les requetes vers votre dietpi.
  
Si vous voulez que le client se connecte automatiquement au lancement de la machine taper
 
  
sudo systemctl enable openvpn-client@openvpn
+
Voir image jointe pour l'enregistrement d'un nom de domaine: c'est la ligne nom "@" type A qu'il faut renseigner avec l'adresse ip publique de votre box ou de votre serveur vpn.
  
  
  
Si vous utilisez un serveur vpn, il faudra penser à le sécuriser comme le orange pi (voir section sécurisation).</translate>
+
<br />
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen1.png
+
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_gandi3.png
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen2.png
 
|Step_Picture_02=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen3.png
 
|Step_Picture_03=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen4.png
 
|Step_Picture_04=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen4.1.png
 
|Step_Picture_05=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen6.png
 
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=<translate>Rediriger les requetes du serveur vpn vers le orange pi-raspberry pi</translate>
+
|Step_Title=Configuration https sur serveur gandi vpn
|Step_Content=<translate>Pour rediriger les requetes sur le serveur vers le orange pi / raspberry pi, on met en place un serveur logiciel web nginx:
+
|Step_Content=Si vous avez un vpn/serveur reverse proxy:
  
  
sudo apt install nginx -y
+
Sur votre serveur gandi, effectuer les opérations suivantes:
  
  
On ouvre ensuite le fichier de configuration de ce logiciel serveur web:
+
Creer un fichier /etc/nginx/conf.d/dietpi.conf et copier les lignes suivante:  
  
sudo nano /etc/nginx/sites-enabled/default
+
server {
 
 
 
 
Remplacer le contenu du fichier par ce qui suit:
 
 
 
 
 
server {
 
  
 
listen 80;
 
listen 80;
  
server_name localhost;  
+
server_name localhost;
  
 
server_tokens off;
 
server_tokens off;
Ligne 553 : Ligne 554 :
 
add_header Referrer-Policy no-referrer;
 
add_header Referrer-Policy no-referrer;
  
add_header Clear-Site-Data "cache,cookies,storage";
+
<nowiki>#</nowiki>add_header Clear-Site-Data "cache,cookies,storage";
 +
 
 +
return 301 <nowiki>https://$host$request_uri</nowiki>;
  
 
location / {
 
location / {
  
proxy_pass <nowiki>http://10.10.0.2</nowiki>;
+
return 301 <nowiki>https://$host$request_uri</nowiki>;
  
proxy_set_header Host $host;
+
}
  
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+
}
  
proxy_set_header X-Real-IP $remote_addr;
+
lancer ensuite les commandes suivantes:
  
proxy_set_header X-Forwarded-Proto $scheme;
+
sudo apt install letsencrypt
  
client_max_body_size 20M;
+
wget <nowiki>https://raw.githubusercontent.com/certbot/certbot/master/certbot-nginx/certbot_nginx/_internal/tls_configs/options-ssl-nginx.conf</nowiki>
  
limit_except GET HEAD POST {deny all;}
+
sudo cp options-ssl-nginx.conf /etc/letsencrypt/options-ssl-nginx.conf
  
}
+
wget <nowiki>https://raw.githubusercontent.com/certbot/certbot/master/certbot/certbot/ssl-dhparams.pem</nowiki>
  
 +
sudo cp ssl-dhparams.pem /etc/letsencrypt/ssl-dhparams.pem
  
}
+
sudo rm /etc/nginx/sites-enabled/default
  
 +
sudo apt remove certbot
  
Nginx va rediriger les requetes faites sur l'ip publique de votre serveur vers le nextcloud de votre orange pi / raspberry pi (ligne proxy_pass <nowiki>http://10.10.0.2</nowiki>;)
+
sudo apt install python3-certbot-nginx
  
 +
obtenir les certificats (rempalcer __domain__ par votre domaine):
  
Vous pouvez tester si cela fonctionne en vous rendant sur la page:
+
sudo certbot certonly --nginx -d __domain__
  
http://ip_publique_de_votre_serveur_gandi
+
copier ensuite les lignes suivante dans votre fichier /etc/nginx/conf.d/dietpi.conf
  
 +
en remplacant __domain__ par votre domaine
  
Attention, de nombreux navigateurs n'acceptent plus tres bien les redirections en http, voir la section https pour configurer le https (il faudra prendre un nom de domaine).</translate>
+
server {
}}
 
{{Tuto Step
 
|Step_Title=<translate>Nom de domaine et adresse fixe</translate>
 
|Step_Content=<translate>Le nom de domaine est l'adresse dans votre navigateur : par exemple lowtechlab.org.
 
  
 +
listen 80;
  
Il vous permet de rendre votre serveur accessible plus facilement avec une adresse facilement memorisable. Il ne fait qu'associer le nom de domaine à l'adresse ip de votre serveur vpn ou l'adresse ip de votre box.
+
server_name localhost;
  
 +
server_tokens off;
  
Que vous enregistriez un nom de domaine pour rediriger vers votre adresse ip ou pas (c'est nécessaire pour avoir le https cependant), il faut noter que par défaut, les fournisseurs d'accès vous octroient une  adresse ip différente à chaque connexion.
+
add_header Permissions-Policy "accelerometer=(),autoplay=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),fullscreen=(),geolocation=(),gyroscope=(),magnetometer=(),microphone=(),midi=(),payment=(),picture-in-picture=(),publickey-credentials-get=(),screen-wake-lock=(),sync-xhr=(self),usb=(),web-share=(),xr-spatial-tracking=()";
  
 +
add_header Strict-Transport-Security "max-age=31536000 ; includeSubDomains";
  
Si vous souhaitez une adresse ip fixe, il faut en faire la demande à votre fournisseur d'accès. Ce n'est malheureusement plus très répandue dans les offres grands publics. Orange propose à la place un "DynDns" qui vous propose une adresse en lettres correspondant à votre adresse ip mais à laquelle vous ne pouvez pas rattacher facilement un nom de domaine. Certains gestionnaires de nom de domaine, comme infomaniak, proposent tout de même d'enregistrer un nom de domaine pour le dyndns qui est acessible assez facilement sans surcout chez les principaux opérateurs.
+
add_header X-Frame-Options "SAMEORIGIN";
  
 +
add_header X-Content-Type-Options nosniff;
  
Si vous avez un accès en 4G, il n'est pas possible d'avoir une adresse ip fixe et votre adresse ip publique correspondra à un "pool". C'est à dire que l'opérateur alloue une adresse ip publique pour plusieurs clients, ne vous permettant pas d'utiliser la technique du NAT/Port Forwarding pour rendre votre dietpi accessible sur internet.
+
add_header Content-Security-Policy "script-src 'self';";
  
Il faudra alors prendre un nom de domaine pour votre serveur vpn qui redirige les requetes vers votre dietpi.
+
add_header X-Permitted-Cross-Domain-Policies none;
  
 +
add_header Referrer-Policy no-referrer;
  
Voir image jointe pour l'enregistrement d'un nom de domaine: c'est la ligne nom "@" type A qu'il faut renseigner avec l'adresse ip publique de votre box ou de votre serveur vpn.
+
<nowiki>#</nowiki>add_header Clear-Site-Data "cache,cookies,storage";
  
 +
return 301 <nowiki>https://$host$request_uri</nowiki>;
  
 +
location / {
  
<br /></translate>
+
return 301 <nowiki>https://$host$request_uri</nowiki>;
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_gandi3.png
 
}}
 
{{Tuto Step
 
|Step_Title=<translate>Configuration https sur serveur gandi vpn</translate>
 
|Step_Content=<translate>Si vous avez un vpn/serveur reverse proxy:
 
  
 +
}
  
Sur votre serveur gandi, effectuer les opérations suivantes:
+
}
 
 
 
 
Creer un fichier /etc/nginx/conf.d/dietpi.conf et copier les lignes suivante:
 
  
 
server {
 
server {
  
listen 80;
+
listen 443 ssl http2;
  
 
server_name localhost;
 
server_name localhost;
  
 
server_tokens off;
 
server_tokens off;
 +
 +
ssl_certificate /etc/letsencrypt/live/__domain__/fullchain.pem;
 +
 +
ssl_certificate_key /etc/letsencrypt/live/__domain__/privkey.pem;
 +
 +
include /etc/letsencrypt/options-ssl-nginx.conf;
 +
 +
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
  
 
add_header Permissions-Policy "accelerometer=(),autoplay=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),fullscreen=(),geolocation=(),gyroscope=(),magnetometer=(),microphone=(),midi=(),payment=(),picture-in-picture=(),publickey-credentials-get=(),screen-wake-lock=(),sync-xhr=(self),usb=(),web-share=(),xr-spatial-tracking=()";
 
add_header Permissions-Policy "accelerometer=(),autoplay=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),fullscreen=(),geolocation=(),gyroscope=(),magnetometer=(),microphone=(),midi=(),payment=(),picture-in-picture=(),publickey-credentials-get=(),screen-wake-lock=(),sync-xhr=(self),usb=(),web-share=(),xr-spatial-tracking=()";
Ligne 646 : Ligne 657 :
  
 
<nowiki>#</nowiki>add_header Clear-Site-Data "cache,cookies,storage";
 
<nowiki>#</nowiki>add_header Clear-Site-Data "cache,cookies,storage";
 
return 301 <nowiki>https://$host$request_uri</nowiki>;
 
  
 
location / {
 
location / {
  
return 301 <nowiki>https://$host$request_uri</nowiki>;
+
proxy_pass <nowiki>http://10.10.10.2</nowiki>;
  
}
+
proxy_set_header Host $host;
  
}
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  
lancer ensuite les commandes suivantes:
+
proxy_set_header X-Real-IP $remote_addr;
  
sudo apt install letsencrypt
+
proxy_set_header X-Forwarded-Proto $scheme;
  
wget <nowiki>https://raw.githubusercontent.com/certbot/certbot/master/certbot-nginx/certbot_nginx/_internal/tls_configs/options-ssl-nginx.conf</nowiki>
+
client_max_body_size 20M;
  
sudo cp options-ssl-nginx.conf /etc/letsencrypt/options-ssl-nginx.conf
+
limit_except GET HEAD POST {deny all;}
  
wget <nowiki>https://raw.githubusercontent.com/certbot/certbot/master/certbot/certbot/ssl-dhparams.pem</nowiki>
+
}
  
sudo cp ssl-dhparams.pem /etc/letsencrypt/ssl-dhparams.pem
+
}
  
sudo rm /etc/nginx/sites-enabled/default
+
redémarrer nginx
  
sudo apt remove certbot
+
sudo systemctl restart nginx
  
sudo apt install python3-certbot-nginx
 
  
obtenir les certificats (rempalcer __domain__ par votre domaine):
+
Acceder à votre serveur en https en tapant l'adresse suivante dans votre navigateur
  
sudo certbot certonly --nginx -d __domain__
+
https://votre_domaine/nextcloud/
  
copier ensuite les lignes suivante dans votre fichier /etc/nginx/conf.d/dietpi.conf
 
  
en remplacant __domain__ par votre domaine
+
Vous pouvez alors configurer nextcloud en ligne par le compte administrateur
  
server {
+
login par défaut sur dietpi: admin
  
listen 80;
+
mot de passe par défaut sur dietpi: mot de passe entrée à l'installation de dietpi
 +
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_Capture_d_cran_du_2023-08-21_18-47-32.png
 +
}}
 +
{{Tuto Step
 +
|Step_Title=Configuration https sur dietpi si vous etes branché en box
 +
|Step_Content=Si vous n'avez pas de vpn/serveur reverse proxy.
  
server_name localhost;
 
  
server_tokens off;
+
Effectuer les opération suivantes directement sur votre dietpi:
  
add_header Permissions-Policy "accelerometer=(),autoplay=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),fullscreen=(),geolocation=(),gyroscope=(),magnetometer=(),microphone=(),midi=(),payment=(),picture-in-picture=(),publickey-credentials-get=(),screen-wake-lock=(),sync-xhr=(self),usb=(),web-share=(),xr-spatial-tracking=()";
 
  
add_header Strict-Transport-Security "max-age=31536000 ; includeSubDomains";
+
créer un fichier wellknown.conf dans /etc/nginx/sites-dietpi
  
add_header X-Frame-Options "SAMEORIGIN";
+
Le fichier doit contenir les lignes suivantes:
  
add_header X-Content-Type-Options nosniff;
+
<code>location ^~ /.well-known {
  
add_header Content-Security-Policy "script-src 'self';";
+
location = /.well-known/carddav { return 301 /nextcloud/remote.php/dav/; }
  
add_header X-Permitted-Cross-Domain-Policies none;
+
location = /.well-known/caldav  { return 301 /nextcloud/remote.php/dav/; }
  
add_header Referrer-Policy no-referrer;
+
location /.well-known/acme-challenge    {  root /var/www/certbot; }
  
<nowiki>#</nowiki>add_header Clear-Site-Data "cache,cookies,storage";
+
location /.well-known/pki-validation    { try_files $uri $uri/ =404; }
  
return 301 <nowiki>https://$host$request_uri</nowiki>;
+
return 301 /nextcloud/index.php$request_uri;
  
location / {
+
}</code>
  
return 301 <nowiki>https://$host$request_uri</nowiki>;
+
Modifier ensuite le fichier /etc/nginx/sites-available/default
  
}
+
et ajouter les lignes suivantes à la fin en remplacant _domain_ par votre domaine (par exemple nextcloud.com):
  
}
 
  
server {
+
<code>server {
  
listen 443 ssl http2;
+
listen 443     ssl http2;
  
server_name localhost;
+
listen [::]:443 ssl http2;
  
server_tokens off;
 
  
ssl_certificate /etc/letsencrypt/live/__domain__/fullchain.pem;
+
ssl_certificate /etc/letsencrypt/live/_domain_/fullchain.pem;
  
ssl_certificate_key /etc/letsencrypt/live/__domain__/privkey.pem;
+
ssl_certificate_key /etc/letsencrypt/live/_domain_/privkey.pem;
  
 
include /etc/letsencrypt/options-ssl-nginx.conf;
 
include /etc/letsencrypt/options-ssl-nginx.conf;
Ligne 733 : Ligne 741 :
 
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
 
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
  
add_header Permissions-Policy "accelerometer=(),autoplay=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),fullscreen=(),geolocation=(),gyroscope=(),magnetometer=(),microphone=(),midi=(),payment=(),picture-in-picture=(),publickey-credentials-get=(),screen-wake-lock=(),sync-xhr=(self),usb=(),web-share=(),xr-spatial-tracking=()";
 
  
add_header Strict-Transport-Security "max-age=31536000 ; includeSubDomains";
+
root /var/www;
  
add_header X-Frame-Options "SAMEORIGIN";
+
index index.php index.html index.htm index.nginx-debian.html;
  
add_header X-Content-Type-Options nosniff;
+
server_name "$hostname";
  
add_header Content-Security-Policy "script-src 'self';";
+
include /etc/nginx/sites-dietpi/*.conf;
  
add_header X-Permitted-Cross-Domain-Policies none;
+
location / {
  
add_header Referrer-Policy no-referrer;
+
try_files $uri $uri/ =404;
  
<nowiki>#</nowiki>add_header Clear-Site-Data "cache,cookies,storage";
+
}
  
location / {
+
</code>
 +
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_Capture_d_cran_du_2023-08-21_18-47-32.png
 +
}}
  
proxy_pass <nowiki>http://10.10.10.2</nowiki>;
+
{{Tuto Step
 +
|Step_Title=Rendre votre serveur nomade et autonome énergétiquement en photovoltaique
 +
|Step_Content=[ATTENTION, cette section remet en question le marché du pétrole!!]
  
proxy_set_header Host $host;
 
  
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+
Que ce soit pour des raisons écologiques, ou pour d'autres raisons, il est intéressant d'avoir un serveur autonome énergétiquement,
  
proxy_set_header X-Real-IP $remote_addr;
+
qui ne dépendra pas des aléas du réseau électrique.
  
proxy_set_header X-Forwarded-Proto $scheme;
 
  
client_max_body_size 20M;
+
videos:
  
limit_except GET HEAD POST {deny all;}
+
bases debutant(panneaux, regulateur, onduleur, conso/prod): <nowiki>https://www.youtube.com/watch?v=8Ft4XQj9lQ4</nowiki>
  
}
+
montage simple kit myshop solaires pour 230V:<nowiki>https://www.youtube.com/watch?v=SvmPEhPq_S8</nowiki>
  
}
 
  
redémarrer nginx
 
  
sudo systemctl restart nginx
+
kit prêts à acheter (si vous avez des subventions et des collègues qui coopèrent bien):
  
 +
<nowiki>https://allo.solar/kit-solaire-1650w-230v-autoconsommation-aps.html?gclid=EAIaIQobChMIkY_fxvu-gAMVyLfVCh014gadEAYYASABEgJd8_D_BwE</nowiki>
  
Acceder à votre serveur en https en tapant l'adresse suivante dans votre navigateur
 
  
https://votre_domaine/nextcloud/
+
solution intermédiaire intégrée:
  
 +
Station énergie portable extensible 230V BLUETTI AC200MAX
  
Vous pouvez alors configurer nextcloud en ligne par le compte administrateur
+
EcoFlow River 2 pro
  
login par défaut sur dietpi: admin
 
  
mot de passe par défaut sur dietpi: mot de passe entrée à l'installation de dietpi</translate>
+
kits semi lowtech (celui utilisé dans ce guide):
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_Capture_d_cran_du_2023-08-21_18-47-32.png
 
}}
 
{{Tuto Step
 
|Step_Title=<translate>Configuration https sur dietpi si vous etes branché en box</translate>
 
|Step_Content=<translate>Si vous n'avez pas de vpn/serveur reverse proxy.
 
  
 +
panneaux photovoltaïque 100W et batterie de voiture plomb acide.
  
Effectuer les opération suivantes directement sur votre dietpi:
 
  
 +
kit vraiment lowtech:
  
créer un fichier wellknown.conf dans /etc/nginx/sites-dietpi
+
fabriquer sa batterie lithium à partir de déchets: voir barnabé chaillot
  
Le fichier doit contenir les lignes suivantes:  
+
<nowiki>https://www.youtube.com/watch?v=_hwj7Ds50lU</nowiki>
  
location ^~ /.well-known {
 
  
<nowiki>#</nowiki> The rules in this block are an adaptation of the rules
 
  
<nowiki>#</nowiki> in `.htaccess` that concern `/.well-known`.
+
rappel de base: branchement en série (+ sur - et + sur -) on ajoute le voltage et on garde le meme amperage, branchement en paralelle (+ sur +, - sur -) on ajoute l'amperage et on garde le meme voltage
  
location = /.well-known/carddav { return 301 /nextcloud/remote.php/dav/; }
+
idem pour les batteries: à mettre en paralelle pour garder la meme tension (voltage)
  
location = /.well-known/caldav  { return 301 /nextcloud/remote.php/dav/; }
 
  
location /.well-known/acme-challenge    {  root /var/www/certbot; }
+
La première problématique du photovoltaïque lowtech autonome est le dimensionnement de l'installation.  
  
location /.well-known/pki-validation    { try_files $uri $uri/ =404; }
+
Pour cela on trouve pas mal d'informations sur internet.  
  
<nowiki>#</nowiki> Let Nextcloud's API for `/.well-known` URIs handle all other
+
Vous pouvez utiliser la feuille libreoffice en piece jointe pour du dimensionnement "bricolé".
  
<nowiki>#</nowiki> requests by passing them to the front-end controller.
 
  
return 301 /nextcloud/index.php$request_uri;
 
  
}
+
Le dimensionnement:
  
Modifier ensuite le fichier /etc/nginx/sites-available/default
+
Le orange pi consomme environ 20W
  
et ajouter les lignes suivantes à la fin en remplacant _domain_ par votre domaine (par exemple nextcloud.com):
+
Un disque usb supplémentaire consomme environ 5W
  
 +
Un modem 4G consomme environ 5W
  
server {
+
Soit un besoin constant de 35W pour prendre un peu de marge
  
listen 443      ssl http2;
+
le besoin journalier pour un serveur qui tourne 24h/24: 35W*24h=840Wh
  
listen [::]:443 ssl http2;
+
Le besoin journalier pour un serveur qui tourne en journéee seulement:
  
 +
en été: 35W*14h=490Wh
  
ssl_certificate /etc/letsencrypt/live/_domain_/fullchain.pem;
+
en hiver: 35W*8h=280Wh
  
ssl_certificate_key /etc/letsencrypt/live/_domain_/privkey.pem;
+
Notez qu'il s'agit là d'un besoin moyen et si vous souhaitez dimensionner
  
include /etc/letsencrypt/options-ssl-nginx.conf;
+
pour des usages divers, il est recommander de procéder de façon plus précise
  
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
+
en calculant les besoins temps réels.
  
 +
le dimensionnement du stockage par le temps d'autonomie :
  
root /var/www;
+
Estimer les pertes à 20% et augmenter le besoin en consquénce:
  
index index.php index.html index.htm index.nginx-debian.html;
+
besoin 24h/24=840/0,80=1050Wh
  
server_name "$hostname";
+
Estimer le temps d'autonomie voulue:
  
include /etc/nginx/sites-dietpi/*.conf;
+
exemple 24h
  
location / {
+
On va alors dimensionner le stockage pour tenir 24h.
  
try_files $uri $uri/ =404;
+
Pour des batteries en 12V: 1050Wh/12V=87,5Ah
  
}
+
Etant donné qu'on veut limiter la décharge des batteries à 50%, on prendra donc
  
location ~ \.php(?:$|/) {
+
87,5Ah/0,5=175Ah
  
include snippets/fastcgi-php.conf;
+
Soit 2100 Wh en 12V
  
fastcgi_pass php;
 
  
}
+
Selon les caractéristiques des panneaux (voir feuille de calcul), on peut estimer
  
}
+
la recharge de la batterie lorsque l'ensoleillement est minimal (en décembre).
  
Lancer ensuite les commandes suivantes :
 
  
sudo apt install letsencrypt
+
Pour dimensionner, on peut utiliser la méthode du nombre de jours voulues pour recharger entierement les batteries:
  
wget <nowiki>https://raw.githubusercontent.com/certbot/certbot/master/certbot-nginx/certbot_nginx/_internal/tls_configs/options-ssl-nginx.conf</nowiki>
 
  
sudo cp options-ssl-nginx.conf /etc/letsencrypt/options-ssl-nginx.conf
+
Si on veut pouvoir recharger les batteries en un jour en hiver, il faut considérer la puissance produite par vos panneaux au jour d'hiver avec le moins d'ensoleillement.
  
sudo chown "$USER":"$USER" /etc/letsencrypt/options-ssl-nginx.conf
 
  
sudo chmod 0755 /etc/letsencrypt/options-ssl-nginx.conf
+
Si on prend 3,5h pour le minimum, le nombre de panneaux nécessaire de puissance x Watt sera:
  
wget <nowiki>https://raw.githubusercontent.com/certbot/certbot/master/certbot/certbot/ssl-dhparams.pem</nowiki>
+
C_batterie:Capacité batterie en Wh
  
sudo cp ssl-dhparams.pem /etc/letsencrypt/ssl-dhparams.pem
+
Dans notre exemple 2100Wh
  
sudo chown "$USER":"$USER" /etc/letsencrypt/ssl-dhparams.pem
+
T_hiver:temps de recharge journalier minimal en hiver (en h)
  
sudo chmod 0755 /etc/letsencrypt/ssl-dhparams.pem
+
Dans notre exemple 3,5h
  
sudo rm /etc/nginx/sites-enabled/default
+
B_hiver:besoin journalier hors temps ensoleillement en hiver (en Wh)
  
sudo mkdir -p /var/www/certbot
+
Dans notre exemple (24h-3,5h)*35W=897Wh
  
sudo chown "$USER":"$USER" /var/www/certbot
+
n_voulus:nombre de jour voulus pour recharger entierement la batterie
  
sudo chmod 0755 /var/www/certbot
+
Dans notre exemple 1
  
lancer ensuite les commandes suivantes en remplacant __domain__ par votre domaine et __email__ par votre email:
+
I:amperage sortie d'un panneau photovoltaique
  
sudo mkdir -p /etc/letsencrypt/live/__domain__
+
Dans notre exemple 7A
  
sudo chown "$USER":"$USER" /etc/letsencrypt/live/__domain__
+
U:tension sortie d'un panneau photovoltaique
  
sudo chmod 0755 /etc/letsencrypt/live/__domain__
+
Dans notre exemple 12V
  
openssl req -x509 -nodes -newkey rsa:4096 -days 1 -keyout '/etc/letsencrypt/live/__domain__/privkey.pem' -out '/etc/letsencrypt/live/__domain__/fullchain.pem' -subj '/CN=localhost'
+
Nb_panneaux=C_batterie+B_hiver*n_nvoulus/T_hiver*I*U*n_voulus
  
sudo systemctl restart nginx
 
  
sudo rm /etc/letsencrypt/live/__domain__/privkey.pem
+
Dans l'exemple:
  
sudo rm /etc/letsencrypt/live/__domain__/fullchain.pem
+
Nb_panneaux=(2100+897*1)/(3,5*12*7*1)
  
certbot certonly --cert-name domaine --non-interactive --staging --webroot -w /var/www/certbot --email __email__ -d __domain__ -d www.__domain__ --rsa-key-size 4096 --agree-tos --force-renewal
+
Il faudra donc 10 panneaux de 84W de 7A 12V
  
Si la commande a fonctionné, relancer certbot sans le "staging":
 
  
certbot certonly --cert-name domaine --non-interactive --webroot -w /var/www/certbot --email __email__ -d __domain__ -d www.__domain__ --rsa-key-size 4096 --agree-tos --force-renewal
+
Noter que la valeur cardinale ici est à la ligne 42 du fichier joint, il s'agit
  
redémarrer nginx
+
de l'ensoleillement journalier minimal en décembre à production nominale. Des valeurs de référence peuvent être trouvées sur
  
sudo systemctl restart nginx
+
<nowiki>https://re.jrc.ec.europa.eu/api/v5_2/seriescalc?lat=44.203142&lon=0.616363&loss=14&angle=45&aspect=0&startyear=2005&endyear=2005&pvcalculation=1&peakpower=1&pvtechchoice=crystSi&browser=0&outputformat=csv</nowiki>
  
le certificat est à renouveler tous les 3 mois en tapant
 
  
certbot renew
+
Mais rien ne vaut une mesure empirique pour vérifier tout ca.
  
 +
Tout commentaire et "retour d'experience" est bienvenu à ce sujet en bas de cette page!
  
 +
La problématique principale du photovoltaïque lowtech autonome est le stockage de l'énergie.
  
Acceder à votre serveur en https en tapant l'adresse suivante dans votre navigateur
+
Vous pouvez lire les caractéristiques des panneaux qu'on vous a donné ou trouvés sur leboncoin à pas cher:
  
https://votre_domaine/nextcloud/
+
-puissance crete: elles s'aditionnent pour obtenir la puissance nécessaire trouvée lors de la phase de dimensionnement.
  
 +
-tension : 12V,24V ou 48V. voir regles série/paralelle pour leur additions
  
Vous pouvez alors configurer nextcloud en ligne par le compte administrateur
+
-intensité: variable selon les modèles mais souvent inferieure à 10A
  
 +
Pour recharger des batteries, en principe, si vous connectez votre panneaux en direct sur une batterie, il suffit que la tension
  
login par défaut sur dietpi: admin
+
à la sortie de vos panneaux soit la même que celles de vos batterie, et ca devrait charger.
  
mot de passe par défaut sur dietpi: mot de passe entrée à l'installation de dietpi</translate>
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_Capture_d_cran_du_2023-08-21_18-47-32.png
 
}}
 
{{Tuto Step
 
|Step_Title=<translate>Rendre votre serveur nomade et autonome énergétiquement en photovoltaique</translate>
 
|Step_Content=<translate>[ATTENTION, cette section remet en question le marché du pétrole!!]
 
  
 +
Il y a un composants importants à retenir pour charger correctement vos batteries:
  
Que ce soit pour des raisons écologiques, ou pour d'autres raisons, il est intéressant d'avoir un serveur autonome énergétiquement,
+
le regulateur ou controleur de charge
  
qui ne dépendra pas des aléas du réseau électrique.
 
  
 +
il en existe de trois sortes: les tor (tout ou rien) les mppt (Maximum power point tracking) et les pwm (Pulse Width Modulation)
  
videos:
+
Les mppt accepte des puissances nominales plus élevées, cad des tensions et intensité plus élevées.
  
bases debutant(panneaux, regulateur, onduleur, conso/prod): <nowiki>https://www.youtube.com/watch?v=8Ft4XQj9lQ4</nowiki>
+
Ils sont composés d'un adaptateur DC/DC et d'un coupe circuit. Le mppt comprend également un adaptateur d'impédence.
  
montage simple kit myshop solaires pour 230V:<nowiki>https://www.youtube.com/watch?v=SvmPEhPq_S8</nowiki>
 
  
 +
Le régulateur ou controleur de charge: il permet de s'assurer que la tension et l'intensité de charge sont bonnes. Il coupe le circuit si
  
 +
leurs valeurs dépassent les intervalles de référence (pour cela le regulateur arrete la charge temporairement et mesure la tension aux bornes des batteries).
  
kit prêts à acheter (si vous avez des subventions et des collègues qui coopèrent bien):
+
Le mmpt a un "algorithme" électronique intégré qui va chercher le point de puissance optimal
  
<nowiki>https://allo.solar/kit-solaire-1650w-230v-autoconsommation-aps.html?gclid=EAIaIQobChMIkY_fxvu-gAMVyLfVCh014gadEAYYASABEgJd8_D_BwE</nowiki>
+
grace a son adaptateur d'impedance.
  
  
solution intermédiaire intégrée:
+
Si vous connectez plusieurs panneaux et plusieurs batteries, il est essentiel d'avoir un bon regulateur pour que couper la charge correctement lorsque la batterie est chargée.
  
Station énergie portable extensible 230V BLUETTI AC200MAX
+
Les tensions de charge de référence sont 12V,24V et 48V.
  
EcoFlow River 2 pro
 
  
 +
Cependant, les prix des modèles augmentent avec la puissance nominales (qui va dépendre de l'amperage) qu'ils acceptent.
  
kits semi lowtech (celui utilisé dans ce guide):
 
  
panneaux photovoltaïque 100W et batterie de voiture plomb acide.
+
Pour limiter l'intensité du courant de la production photovoltaïque, il est plus judicieux d'utiliser des panneaux de plus forte puissance qui sont généralement à des tensions plus élevées
  
 +
(rappel P=U*I,
  
kit vraiment lowtech:
+
rappel E=P*t se conserve dans un systeme fermé).
  
fabriquer sa batterie lithium à partir de déchets: voir barnabé chaillot
+
note: si le systeme de stockage par batterie ou l'appareil connecté à vos panneaux n'absorbe pas toute la puissance produite, et si le régulateur de charge ne coupe pas le circuit, le reste sera dégagé en chaleur.
  
<nowiki>https://www.youtube.com/watch?v=_hwj7Ds50lU</nowiki>
 
  
 +
L'amperage va aussi dependre de la capacité de stockage de vos batteries, dimensionnées pour couvrir vos besoins pendant une periode définie au dimensionnement.
  
  
rappel de base: branchement en série (+ sur - et + sur -) on ajoute le voltage et on garde le meme amperage, branchement en paralelle (+ sur +, - sur -) on ajoute l'amperage et on garde le meme voltage
+
Le courant de charge est calculé en divisant par 4 ou 5 la capacité nominale de la batterie exprimée en Ah qui devrait alors se recharger en 4 ou 5h. Cependant une batterie se rechargera aussi avec un courant de charge de la capacité nominale de la batterie divisée par 20 mais plus lentement (en 20h). Dimensionnez et/ou agencez vos panneaux en conséquence.
  
idem pour les batteries: à mettre en paralelle pour garder la meme tension (voltage)
+
Des montages serie+paralelle peuvent permettrent d'ajuster tension et amperage.
  
  
La première problématique du photovoltaïque lowtech autonome est le dimensionnement de l'installation.  
+
Il y a enfin un dernier point sur lequel être attentif: le déclenchement de la recharge de la batterie par le regulateur/controleur de charge (qui déclenche quand la tension de la batterie diminue en dessous d'un certain seuil).
  
Pour cela on trouve pas mal d'informations sur internet.
 
  
Vous pouvez utiliser la feuille libreoffice en piece jointe pour du dimensionnement "bricolé".
+
En effet, si la puissance soutirée à la batterie est trop faible, il est possible que le temps nécessaire à la décharger suffisamment avec votre consommation journalière pour déclencher la recharge dans le régulateur dépasse le temps d'ensoleillement journalier.
  
  
 +
Dans ce cas, votre batterie ne se rechargera qu'un jour sur deux ou sur trois (selon le seuil de déclenchement de la recharge du regulateur).
  
Le dimensionnement:
+
C'est un paramètre à prendre en compte  dans le dimensionnement (non inclus dans la feuille de calcul).
  
Le orange pi consomme environ 20W
 
  
Un disque usb supplémentaire consomme environ 5W
+
Le régulateur a 3 phases:
  
Un modem 4G consomme environ 5W
 
  
Soit un besoin constant de 35W pour prendre un peu de marge
+
bulk: le regulateur laisse passer le courant
  
le besoin journalier pour un serveur qui tourne 24h/24: 35W*24h=840Wh
 
  
Le besoin journalier pour un serveur qui tourne en journéee seulement:
+
absorption (pour les mppt): la tension de charge augmente un peu pour créer une difference de potentiel suffisante pour continuer à charger la batterie presque pleine.
  
en été: 35W*14h=490Wh
+
En théorie le courant de charge diminue lorsque la batterie est presque rechargée (courant de queue etc.)
  
en hiver: 35W*8h=280Wh
 
  
Notez qu'il s'agit là d'un besoin moyen et si vous souhaitez dimensionner
+
floating: le regulateur alterne interupteur fermée et ouvert à une fréquence donnée pour maintenir la batterie chargée
  
pour des usages divers, il est recommander de procéder de façon plus précise
+
En outre il faut prendre des précautions car la charge des batteries présente certains risques.
  
en calculant les besoins temps réels.
 
  
le dimensionnement du stockage par le temps d'autonomie :
+
La charge de batteries en paralelle ou en série sur des batteries usagées qui n'ont pas les mêmes tensions ou intensité
  
Estimer les pertes à 20% et augmenter le besoin en consquénce:
+
présente en théorie des risques. En effet vous lirez un peu partout que la résistance des fils pour relier ces batteries
  
besoin 24h/24=840/0,80=1050Wh
+
créee des différences de potentiels entre les batteries qui produisent des décharges d'une batterie envers une autre etc.
  
Estimer le temps d'autonomie voulue:
+
créant des risques d'explosion, de degazage pour les batteries plomb etc.
  
exemple 24h
+
Il faut bien se rapeller que les batteries sont des assemblages de composants unitaires de faible tension mis en séries et
  
On va alors dimensionner le stockage pour tenir 24h.
+
en paralelle pour obtenir un générateur de l'intensité et la tension voulue.  
  
Pour des batteries en 12V: 1050Wh/12V=87,5Ah
 
  
Etant donné qu'on veut limiter la décharge des batteries à 50%, on prendra donc
+
On parle souvent de "battery management system" (bms) "intégré" pour les batteries lithium ion.
  
87,5Ah/0,5=175Ah
+
En réalité le régulateur de charge est déjà un "bms". En théorie, le bms intégré s'assure que les tensions et les intensités
  
Soit 2100 Wh en 12V
+
de chaque unité composant la batterie est la même et la rééquilibre au besoin.
  
 +
On peut bien sûr s'interroger si tout ceci n'est pas une façon de rendre le stockage de l'énergie plus cher avec des composants BMS
  
Selon les caractéristiques des panneaux (voir feuille de calcul), on peut estimer
+
artificiellement chers et si ce n'est pas une façon d'éviter de réutiliser des unités de batteries usagées.
  
la recharge de la batterie lorsque l'ensoleillement est minimal (en décembre).
 
  
 +
Il est par exemple étonnat qu'il n'existe pas de BMS pour rééquilibrer automatiquement des batteries plomb acide, ce qui rendrait
  
Pour dimensionner, on peut utiliser la méthode du nombre de jours voulues pour recharger entierement les batteries:
+
utilisable toutes les batteries de décharges de l'industrie automobile pour stocker l'énergie photovoltaïque sans risque!
  
  
Si on veut pouvoir recharger les batteries en un jour en hiver, il faut considérer la puissance produite par vos panneaux au jour d'hiver avec le moins d'ensoleillement.
+
Dans tous les cas, si vous réutilisez des batteries au plomb, utilisez un régulateur pour éviter de continuer à charger vos batteries rechargées (risques de production d'hydrogene),
  
 +
évitez les décharges profondes, et maintenez les batteries à une temperature constante autant que possible.
  
Si on prend 3,5h pour le minimum, le nombre de panneaux nécessaire de puissance x Watt sera:
+
<br />
 +
}}
 +
{{Tuto Step
 +
|Step_Title=Montage et test
 +
|Step_Content=Pour raison budgétaire on dimensionne sur un dixieme de la puissance de panneaux et un quart de la capacité de batterie de ce que la théorie nous a indiqué pour être autonome 24h/24h et en capacité de recharger en un seul jour en hiver, soit un panneau de 100W et une vieille batterie de voiture de 45Ah (100Ah en 12V).
  
C_batterie:Capacité batterie en Wh
 
  
Dans notre exemple 2100Wh
+
Le regulateur utilisé n'accepte pas les panneaux 40V donc on n'a pas utilisé le panneau photovoltaïque d'occasion de 180W à 20€ trouvé sur leboncoin, mais je ne manquerai pas d'updater ce tuto avec dès que j'aurai le materiel et avec les valeurs de production hivernale si j'y arrive!
 +
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_171458_820.jpg
 +
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_171056_521.jpg
 +
|Step_Picture_02=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_171328_268.jpg
 +
|Step_Picture_03=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_173010_697.jpg
 +
|Step_Picture_04=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_172639_858.jpg
 +
}}
 +
{{Tuto Step
 +
|Step_Title=Securisation du serveur
 +
|Step_Content=Au niveau sécurité, les failles connues des cpus peuvent être trouvées sous linux en faisant:
  
T_hiver:temps de recharge journalier minimal en hiver (en h)
+
grep -r . /sys/devices/system/cpu/vulnerabilities
  
Dans notre exemple 3,5h
+
Cette commande sur le orange pi (cpu CortexA55) avec dietpi installé donne:
  
B_hiver:besoin journalier hors temps ensoleillement en hiver (en Wh)
+
/sys/devices/system/cpu/vulnerabilities/spectre_v2:Mitigation: Unprivileged eBPF enabled
  
Dans notre exemple (24h-3,5h)*35W=897Wh
+
/sys/devices/system/cpu/vulnerabilities/itlb_multihit:Not affected
  
n_voulus:nombre de jour voulus pour recharger entierement la batterie
+
/sys/devices/system/cpu/vulnerabilities/mmio_stale_data:Not affected
  
Dans notre exemple 1
+
/sys/devices/system/cpu/vulnerabilities/mds:Not affected
  
I:amperage sortie d'un panneau photovoltaique
+
/sys/devices/system/cpu/vulnerabilities/l1tf:Not affected
  
Dans notre exemple 7A
+
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass:Mitigation: Speculative Store Bypass disabled via prctl
  
U:tension sortie d'un panneau photovoltaique
+
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort:Not affected
  
Dans notre exemple 12V
+
/sys/devices/system/cpu/vulnerabilities/spectre_v1:Mitigation: __user pointer sanitization
  
Nb_panneaux=C_batterie+B_hiver*n_nvoulus/T_hiver*I*U*n_voulus
+
/sys/devices/system/cpu/vulnerabilities/retbleed:Not affected
  
 +
/sys/devices/system/cpu/vulnerabilities/srbds:Not affected
  
Dans l'exemple:
+
/sys/devices/system/cpu/vulnerabilities/meltdown:Not affected
  
Nb_panneaux=(2100+897*1)/(3,5*12*7*1)
 
  
Il faudra donc 10 panneaux de 84W de 7A 12V
+
Ayant testé un orange pi un raspberry pi et un odroid, le probleme reste le même.
  
 +
<u>basiques:</u>
  
Noter que la valeur cardinale ici est à la ligne 42 du fichier joint, il s'agit
+
principe de limiter surface d'attaque
  
de l'ensoleillement journalier minimal en décembre à production nominale. Des valeurs de référence peuvent être trouvées sur
+
on peut passer sa vie à augmenter la sécurité d'un systeme informatique...
  
<nowiki>https://re.jrc.ec.europa.eu/api/v5_2/seriescalc?lat=44.203142&lon=0.616363&loss=14&angle=45&aspect=0&startyear=2005&endyear=2005&pvcalculation=1&peakpower=1&pvtechchoice=crystSi&browser=0&outputformat=csv</nowiki>
+
trouver le bon compromis et évaluer les risques ou appats en termes financiers
  
 +
(le hack est toujours possible)
  
Mais rien ne vaut une mesure empirique pour vérifier tout ca.
+
Cependant quelques éléments car c'est un sujet sur lequel on trouve peu d'informations didactiques rassemblées.
  
Tout commentaire et "retour d'experience" est bienvenu à ce sujet en bas de cette page!
+
acces physique sécurisé:
  
La problématique principale du photovoltaïque lowtech autonome est le stockage de l'énergie.
 
  
Vous pouvez lire les caractéristiques des panneaux qu'on vous a donné ou trouvés sur leboncoin à pas cher:
+
mot de passe grub
  
-puissance crete: elles s'aditionnent pour obtenir la puissance nécessaire trouvée lors de la phase de dimensionnement.
+
Lancer grub-mkpasswd-pbkdf2 dans un terminal
  
-tension : 12V,24V ou 48V. voir regles série/paralelle pour leur additions
+
Copier le texte qui commence par grub.pbkdf2.sha512.10000.xy
  
-intensité: variable selon les modèles mais souvent inferieure à 10A
+
où xy est une longue suite de lettres et de chiffres
  
Pour recharger des batteries, en principe, si vous connectez votre panneaux en direct sur une batterie, il suffit que la tension
+
Ajouter les lignes suivantes à un fichier /etc/grub.d/42_pw
  
à la sortie de vos panneaux soit la même que celles de vos batterie, et ca devrait charger.
+
en remplacant user par votre nom d'utilisateur linux et pw par le
  
 +
texte précemment copié
  
Il y a un composants importants à retenir pour charger correctement vos batteries:
+
cat << EOF
  
le regulateur ou controleur de charge
+
set superusers=user
  
 +
password_pbkdf2 pw
  
il en existe de trois sortes: les tor (tout ou rien) les mppt (Maximum power point tracking) et les pwm (Pulse Width Modulation)
+
EOF
  
Les mppt accepte des puissances nominales plus élevées, cad des tensions et intensité plus élevées.
+
lancer ensuite la commande
  
Ils sont composés d'un adaptateur DC/DC et d'un coupe circuit. Le mppt comprend également un adaptateur d'impédence.
+
update-grub
  
  
Le régulateur ou controleur de charge: il permet de s'assurer que la tension et l'intensité de charge sont bonnes. Il coupe le circuit si
+
bons mots de passes en general
  
leurs valeurs dépassent les intervalles de référence (pour cela le regulateur arrete la charge temporairement et mesure la tension aux bornes des batteries).
+
pour changer le mot de passer de l'utilisateur courant taper
  
Le mmpt a un "algorithme" électronique intégré qui va chercher le point de puissance optimal
+
passwd
  
grace a son adaptateur d'impedance.
+
pour changer le mot de passe de l'utilisateur root taper
  
 +
sudo passwd root
  
Si vous connectez plusieurs panneaux et plusieurs batteries, il est essentiel d'avoir un bon regulateur pour que couper la charge correctement lorsque la batterie est chargée.
 
  
Les tensions de charge de référence sont 12V,24V et 48V.
+
éventuellement vérification d'intégrité du boot (voir ordinateurs de purism par exemple)
  
  
Cependant, les prix des modèles augmentent avec la puissance nominales (qui va dépendre de l'amperage) qu'ils acceptent.
+
chiffrer (crypter) ses supports de stockage:
  
 +
https://doc.ubuntu-fr.org/tutoriel/chiffrer_ses_donnees
  
Pour limiter l'intensité du courant de la production photovoltaïque, il est plus judicieux d'utiliser des panneaux de plus forte puissance qui sont généralement à des tensions plus élevées
+
https://www.dwarmstrong.org/remote-unlock-dropbear/
  
(rappel P=U*I,
 
  
rappel E=P*t se conserve dans un systeme fermé).
+
<u>sécurité d'un serveur:</u>
  
note: si le systeme de stockage par batterie ou l'appareil connecté à vos panneaux n'absorbe pas toute la puissance produite, et si le régulateur de charge ne coupe pas le circuit, le reste sera dégagé en chaleur.
+
apt update automatisé : https://www.linuxtricks.fr/wiki/debian-activer-les-mises-a-jour-automatique-avec-unattended-upgrades
  
 +
lignes à inclure dans votre configuration ssh (/etc/ssh/sshd_config):
  
L'amperage va aussi dependre de la capacité de stockage de vos batteries, dimensionnées pour couvrir vos besoins pendant une periode définie au dimensionnement.
+
Port 22 #changer sur un autre port si vous le souhaitez
  
 +
Protocol 2
  
Le courant de charge est calculé en divisant par 4 ou 5 la capacité nominale de la batterie exprimée en Ah qui devrait alors se recharger en 4 ou 5h. Cependant une batterie se rechargera aussi avec un courant de charge de la capacité nominale de la batterie divisée par 20 mais plus lentement (en 20h). Dimensionnez et/ou agencez vos panneaux en conséquence.
+
PermitRootLogin no
  
Des montages serie+paralelle peuvent permettrent d'ajuster tension et amperage.
+
StrictModes yes
  
 +
PermitEmptyPasswords no
  
Il y a enfin un dernier point sur lequel être attentif: le déclenchement de la recharge de la batterie par le regulateur/controleur de charge (qui déclenche quand la tension de la batterie diminue en dessous d'un certain seuil).
+
X11Forwarding no
  
 +
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
  
En effet, si la puissance soutirée à la batterie est trop faible, il est possible que le temps nécessaire à la décharger suffisamment avec votre consommation journalière pour déclencher la recharge dans le régulateur dépasse le temps d'ensoleillement journalier.
+
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com
  
 +
KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256
  
Dans ce cas, votre batterie ne se rechargera qu'un jour sur deux ou sur trois (selon le seuil de déclenchement de la recharge du regulateur).
+
AllowTcpForwarding no
  
C'est un paramètre à prendre en compte  dans le dimensionnement (non inclus dans la feuille de calcul).
+
MaxSessions 1
  
 +
UsePAM yes
  
Le régulateur a 3 phases:
+
AllowUsers user #remplacer par les utilisateurs autorisées
  
 +
AllowGroups group #remplacer par les groupes autorisés
  
bulk: le regulateur laisse passer le courant
+
PasswordAuthentication no
  
 +
AuthorizedKeysFile .ssh/authorized_keys
  
absorption (pour les mppt): la tension de charge augmente un peu pour créer une difference de potentiel suffisante pour continuer à charger la batterie presque pleine.
 
  
En théorie le courant de charge diminue lorsque la batterie est presque rechargée (courant de queue etc.)
+
firewall logiciel:
  
 +
ufw: https://doc.ubuntu-fr.org/ufw
  
floating: le regulateur alterne interupteur fermée et ouvert à une fréquence donnée pour maintenir la batterie chargée
+
ou fichier de configuration iptables:  
  
En outre il faut prendre des précautions car la charge des batteries présente certains risques.  
+
https://gitlab.com/aurelpere/bp028-hardening/-/blob/main/rhel_iptables_ipv4/files/server_firewall.sh
  
  
La charge de batteries en paralelle ou en série sur des batteries usagées qui n'ont pas les mêmes tensions ou intensité
+
fail2ban: https://doc.ubuntu-fr.org/fail2ban
  
présente en théorie des risques. En effet vous lirez un peu partout que la résistance des fils pour relier ces batteries
+
fail2ban pour nextcloud: https://tuxicoman.jesuislibre.net/2015/01/fail2ban-pour-owncloud-7-sur-debian-jessie.html
  
créee des différences de potentiels entre les batteries qui produisent des décharges d'une batterie envers une autre etc.
 
  
créant des risques d'explosion, de degazage pour les batteries plomb etc.
+
desactiver ipv6 (ou configurer le firewall aussi pour ipv6)
  
Il faut bien se rapeller que les batteries sont des assemblages de composants unitaires de faible tension mis en séries et
+
3 méthodes pour désactiver ipv6:
  
en paralelle pour obtenir un générateur de l'intensité et la tension voulue.
+
dans grub
  
 +
avec sysctl
  
On parle souvent de "battery management system" (bms) "intégré" pour les batteries lithium ion.  
+
ajouter les lignes suivantes à /etc/systcl.conf
  
En réalité le régulateur de charge est déjà un "bms". En théorie, le bms intégré s'assure que les tensions et les intensités
+
net.ipv6.conf.all.disable_ipv6 = 1
  
de chaque unité composant la batterie est la même et la rééquilibre au besoin.  
+
net.ipv6.conf.default.disable_ipv6 = 1
  
On peut bien sûr s'interroger si tout ceci n'est pas une façon de rendre le stockage de l'énergie plus cher avec des composants BMS
+
net.ipv6.conf.all.router_solicitations = 0
  
artificiellement chers et si ce n'est pas une façon d'éviter de réutiliser des unités de batteries usagées.
+
net.ipv6.conf.default.router_solicitations = 0
  
 +
net.ipv6.conf.all.accept_ra_rtr_pref = 0
  
Il est par exemple étonnat qu'il n'existe pas de BMS pour rééquilibrer automatiquement des batteries plomb acide, ce qui rendrait
+
net.ipv6.conf.default.accept_ra_rtr_pref = 0
  
utilisable toutes les batteries de décharges de l'industrie automobile pour stocker l'énergie photovoltaïque sans risque!
+
net.ipv6.conf.all.accept_ra_pinfo = 0
  
 +
net.ipv6.conf.default.accept_ra_pinfo = 0
  
Dans tous les cas, si vous réutilisez des batteries au plomb, utilisez un régulateur pour éviter de continuer à charger vos batteries rechargées (risques de production d'hydrogene),
+
net.ipv6.conf.all.accept_ra_defrtr = 0
  
évitez les décharges profondes, et maintenez les batteries à une temperature constante autant que possible.
+
net.ipv6.conf.default.accept_ra_defrtr = 0
  
<br /></translate>
+
net.ipv6.conf.all.autoconf = 0
}}
 
{{Tuto Step
 
|Step_Title=<translate>Montage et test</translate>
 
|Step_Content=<translate>Pour raison budgétaire on dimensionne sur un dixieme de la puissance de panneaux et un quart de la capacité de batterie de ce que la théorie nous a indiqué pour être autonome 24h/24h et en capacité de recharger en un seul jour en hiver, soit un panneau de 100W et une vieille batterie de voiture de 45Ah (100Ah en 12V).
 
  
 +
net.ipv6.conf.default.autoconf = 0
  
Le regulateur utilisé n'accepte pas les panneaux 40V donc on n'a pas utilisé le panneau photovoltaïque d'occasion de 180W à 20€ trouvé sur leboncoin, mais je ne manquerai pas d'updater ce tuto avec dès que j'aurai le materiel et avec les valeurs de production hivernale si j'y arrive!</translate>
+
net.ipv6.conf.all.accept_redirects = 0
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_171458_820.jpg
 
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_171056_521.jpg
 
|Step_Picture_02=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_171328_268.jpg
 
|Step_Picture_03=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_173010_697.jpg
 
|Step_Picture_04=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_172639_858.jpg
 
}}
 
{{Tuto Step
 
|Step_Title=<translate>Securisation du serveur</translate>
 
|Step_Content=<translate>Au niveau sécurité, les failles connues des cpus peuvent être trouvées sous linux en faisant:
 
  
grep -r . /sys/devices/system/cpu/vulnerabilities
+
net.ipv6.conf.default.accept_redirects = 0
  
Cette commande sur le orange pi (cpu CortexA55) avec dietpi installé donne:
+
net.ipv6.conf.all.accept_source_route = 0
  
/sys/devices/system/cpu/vulnerabilities/spectre_v2:Mitigation: Unprivileged eBPF enabled
+
net.ipv6.conf.default.accept_source_route = 0
  
/sys/devices/system/cpu/vulnerabilities/itlb_multihit:Not affected
+
net.ipv6.conf.all.max_addresses = 1
  
/sys/devices/system/cpu/vulnerabilities/mmio_stale_data:Not affected
+
net.ipv6.conf.default.max_addresses = 1
  
/sys/devices/system/cpu/vulnerabilities/mds:Not affected
+
avec le network manager nmcli
  
/sys/devices/system/cpu/vulnerabilities/l1tf:Not affected
+
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/using-networkmanager-to-disable-ipv6-for-a-specific-connection_configuring-and-managing-networking
  
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass:Mitigation: Speculative Store Bypass disabled via prctl
 
  
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort:Not affected
+
sécuriser le serveur en cas de multi utilisateur ou autres utilisateurs ayant obtenu un accès:
  
/sys/devices/system/cpu/vulnerabilities/spectre_v1:Mitigation: __user pointer sanitization
 
  
/sys/devices/system/cpu/vulnerabilities/retbleed:Not affected
+
listes de fichiers à sécuriser (permissions etc.): https://linuxfr.org/forums/linux-general/posts/liste-des-fichiers-linux-a-securiser-owner-group-permissions-setuid-setgid-sticky-bit
  
/sys/devices/system/cpu/vulnerabilities/srbds:Not affected
 
  
/sys/devices/system/cpu/vulnerabilities/meltdown:Not affected
+
guides de durcissement anssi : https://www.ssi.gouv.fr/guide/recommandations-de-securite-relatives-a-un-systeme-gnulinux/
  
  
Ayant testé un orange pi un raspberry pi et un odroid, le probleme reste le même.
+
<u>Pour aller plus loin en termes de sécurité:</u>
  
<u>basiques:</u>
 
  
principe de limiter surface d'attaque
+
firewall physique libre: pcengines/ logiciel libre OPNSense
  
on peut passer sa vie à augmenter la sécurité d'un systeme informatique...
 
  
trouver le bon compromis et évaluer les risques ou appats en termes financiers
+
fail2ban avec listes géographiques: https://thecustomizewindows.com/2016/11/fail2ban-geoip-action-script-block-ssh-country/
 
 
(le hack est toujours possible)
 
 
 
Cependant quelques éléments car c'est un sujet sur lequel on trouve peu d'informations didactiques rassemblées.
 
 
 
acces physique sécurisé:
 
 
 
 
 
mot de passe grub
 
 
 
Lancer grub-mkpasswd-pbkdf2 dans un terminal
 
 
 
Copier le texte qui commence par grub.pbkdf2.sha512.10000.xy
 
 
 
où xy est une longue suite de lettres et de chiffres
 
 
 
Ajouter les lignes suivantes à un fichier /etc/grub.d/42_pw
 
 
 
en remplacant user par votre nom d'utilisateur linux et pw par le
 
 
 
texte précemment copié
 
 
 
cat << EOF
 
 
 
set superusers=user
 
 
 
password_pbkdf2 pw
 
 
 
EOF
 
 
 
lancer ensuite la commande
 
 
 
update-grub
 
 
 
 
 
bons mots de passes en general
 
 
 
pour changer le mot de passer de l'utilisateur courant taper
 
 
 
passwd
 
 
 
pour changer le mot de passe de l'utilisateur root taper
 
 
 
sudo passwd root
 
 
 
 
 
éventuellement vérification d'intégrité du boot (voir ordinateurs de purism par exemple)
 
 
 
 
 
chiffrer (crypter) ses supports de stockage:
 
 
 
https://doc.ubuntu-fr.org/tutoriel/chiffrer_ses_donnees
 
 
 
https://www.dwarmstrong.org/remote-unlock-dropbear/
 
 
 
 
 
<u>sécurité d'un serveur:</u>
 
 
 
apt update automatisé : https://www.linuxtricks.fr/wiki/debian-activer-les-mises-a-jour-automatique-avec-unattended-upgrades
 
 
 
lignes à inclure dans votre configuration ssh (/etc/ssh/sshd_config):
 
 
 
Port 22 #changer sur un autre port si vous le souhaitez
 
 
 
Protocol 2
 
 
 
PermitRootLogin no
 
 
 
StrictModes yes
 
 
 
PermitEmptyPasswords no
 
 
 
X11Forwarding no
 
 
 
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
 
 
 
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com
 
 
 
KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256
 
 
 
AllowTcpForwarding no
 
 
 
MaxSessions 1
 
 
 
UsePAM yes
 
 
 
AllowUsers user #remplacer par les utilisateurs autorisées
 
 
 
AllowGroups group #remplacer par les groupes autorisés
 
 
 
PasswordAuthentication no
 
 
 
AuthorizedKeysFile .ssh/authorized_keys
 
 
 
 
 
firewall logiciel:
 
 
 
ufw: https://doc.ubuntu-fr.org/ufw
 
 
 
ou fichier de configuration iptables:
 
 
 
https://gitlab.com/aurelpere/bp028-hardening/-/blob/main/rhel_iptables_ipv4/files/server_firewall.sh
 
 
 
 
 
fail2ban: https://doc.ubuntu-fr.org/fail2ban
 
 
 
fail2ban pour nextcloud: https://tuxicoman.jesuislibre.net/2015/01/fail2ban-pour-owncloud-7-sur-debian-jessie.html
 
 
 
 
 
desactiver ipv6 (ou configurer le firewall aussi pour ipv6)
 
 
 
3 méthodes pour désactiver ipv6:
 
 
 
dans grub
 
 
 
avec sysctl
 
 
 
ajouter les lignes suivantes à /etc/systcl.conf
 
 
 
net.ipv6.conf.all.disable_ipv6 = 1
 
 
 
net.ipv6.conf.default.disable_ipv6 = 1
 
 
 
net.ipv6.conf.all.router_solicitations = 0
 
 
 
net.ipv6.conf.default.router_solicitations = 0
 
 
 
net.ipv6.conf.all.accept_ra_rtr_pref = 0
 
 
 
net.ipv6.conf.default.accept_ra_rtr_pref = 0
 
 
 
net.ipv6.conf.all.accept_ra_pinfo = 0
 
 
 
net.ipv6.conf.default.accept_ra_pinfo = 0
 
 
 
net.ipv6.conf.all.accept_ra_defrtr = 0
 
 
 
net.ipv6.conf.default.accept_ra_defrtr = 0
 
 
 
net.ipv6.conf.all.autoconf = 0
 
 
 
net.ipv6.conf.default.autoconf = 0
 
 
 
net.ipv6.conf.all.accept_redirects = 0
 
 
 
net.ipv6.conf.default.accept_redirects = 0
 
 
 
net.ipv6.conf.all.accept_source_route = 0
 
 
 
net.ipv6.conf.default.accept_source_route = 0
 
 
 
net.ipv6.conf.all.max_addresses = 1
 
 
 
net.ipv6.conf.default.max_addresses = 1
 
 
 
avec le network manager nmcli
 
 
 
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/using-networkmanager-to-disable-ipv6-for-a-specific-connection_configuring-and-managing-networking
 
 
 
 
 
sécuriser le serveur en cas de multi utilisateur ou autres utilisateurs ayant obtenu un accès:
 
 
 
 
 
listes de fichiers à sécuriser (permissions etc.): https://linuxfr.org/forums/linux-general/posts/liste-des-fichiers-linux-a-securiser-owner-group-permissions-setuid-setgid-sticky-bit
 
 
 
 
 
guides de durcissement anssi : https://www.ssi.gouv.fr/guide/recommandations-de-securite-relatives-a-un-systeme-gnulinux/
 
 
 
 
 
<u>Pour aller plus loin en termes de sécurité:</u>
 
 
 
 
 
firewall physique libre: pcengines/ logiciel libre OPNSense
 
 
 
 
 
fail2ban avec listes géographiques: https://thecustomizewindows.com/2016/11/fail2ban-geoip-action-script-block-ssh-country/
 
 
 
 
 
Créer un sas de connection à votre service en ligne (MySafeip): https://linuxfr.org/news/mysafeip-un-tiers-de-confiance-pour-votre-pare-feu
 
 
 
sécuriser les services systemd linux: https://github.com/juju4/ansible-harden-systemd
 
 
 
 
 
compiler un kernel :
 
 
 
[https://doc.ubuntu-fr.org/tutoriel/comment_compiler_un_kernel_de_kernel.orghttps://github.com/robertdebock/ansible-role-kernel https://doc.ubuntu-fr.org/tutoriel/comment_compiler_un_kernel_de_kernel.org]
 
 
 
[https://doc.ubuntu-fr.org/tutoriel/comment_compiler_un_kernel_de_kernel.orghttps://github.com/robertdebock/ansible-role-kernel https://github.com/robertdebock/ansible-role-kernel]</translate>
 
}}
 
{{Tuto Step
 
|Step_Title=<translate>Installation de nextcloud 2/4</translate>
 
|Step_Content=<translate>Voir images</translate>
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_05.jpg
 
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_06.jpg
 
|Step_Picture_02=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_07.jpg
 
|Step_Picture_03=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_08.jpg
 
|Step_Picture_04=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_09.jpg
 
|Step_Picture_05=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_10.jpg
 
}}
 
{{Tuto Step
 
|Step_Title=<translate>Installation de nextcloud 3/4</translate>
 
|Step_Content=<translate>Voir images</translate>
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_11.jpg
 
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_12.jpg
 
|Step_Picture_02=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_13.jpg
 
|Step_Picture_03=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_14.jpg
 
|Step_Picture_04=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_15.jpg
 
|Step_Picture_05=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_16.jpg
 
}}
 
{{Tuto Step
 
|Step_Title=<translate>Installation de nextcloud 4/4</translate>
 
|Step_Content=<translate>Voir images</translate>
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_17.jpg
 
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_18.jpg
 
|Step_Picture_02=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_19.jpg
 
|Step_Picture_03=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_20.jpg
 
|Step_Picture_04=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_21.jpg
 
}}
 
{{Tuto Step
 
|Step_Title=<translate>configuration du reseau local</translate>
 
|Step_Content=<translate>Brancher le orangepi ou le raspberry pi à votre box internet
 
 
 
(avec un cable rj45 pour le orange pi qui n'a pas le wifi par défaut, avec un cable rj45 ou en wifi pour votre raspberry pi)
 
 
 
 
 
 
 
Pour se connecter en ssh sans login avec dropbear au orange pi/raspberry pi
 
 
 
copier votre clé publique ssh dans le fichier authorized_keys
 
 
 
placé dans ~/.ssh/authorized_keys
 
 
 
ne pas oublier de faire un chmod 0600 sur ce fichier
 
 
 
 
 
Pour le orange pi, qui utilise dropbear:
 
 
 
ajouter la ligne DROPBEAR_EXTRA_ARGS="-s"
 
 
 
au fichier /etc/default/dropbear
 
 
 
 
 
Pour obtenir l'ip de votre dietpi ou raspberry pi, taper la commande suivante:
 
 
 
 
 
'''ip a'''
 
 
 
 
 
L'adresse ip s'affiche  (192.168.198.160 sur l'image jointe)
 
 
 
 
 
Verifier que votre serveur est accessible depuis un autre ordinateur connecté à votre box en tapant dans la barre de votre navigateur (en remplacant adresse_ip par l'adresse trouvée avec la commande ip a)
 
 
 
'''<nowiki>http://adresse_ip/nextcloud</nowiki>'''
 
 
 
 
 
'''<u>Rendre votre réseau local accessible depuis internet:</u>'''
 
 
 
 
 
Configurer votre box pour rendre le serveur accessible . Pour rendre votre dietpi accessible depuis internet, il faut aller dans la configuration de votre box et
 
 
 
dans la section "NAT" "Port Forwarding" mettre le port 80 et renseigner l'ip trouvée précedemment ainsi que le port 443 et renseigner l'ip trouvée précédemment également.
 
 
 
 
 
Je n'ai pas de box donc je n'ai pas pu vous faire de screenshot mais vous trouverez des ressources sur internet pour cela. Par exemple https://pratiquepc.fr/ouvrir-des-ports-sur-une-livebox/
 
 
 
 
 
Vous pouvez ensuite trouver votre ip publique (celle accessible par tous sur internet) en tapant depuis votre console dietpi
 
 
 
'''curl ifconfig.me'''
 
 
 
(si curl n'est pas installé lancer la commande apt update && apt install curl)
 
 
 
 
 
Une fois la configuration NAT/Port Forwarding effectué, tester si nextcloud est accessible sur internet en rentrant l'adresse suivante dans la barre de votre navigateur internet:
 
 
 
'''<nowiki>http://adresse_ip_publique</nowiki>>/nextcloud'''
 
 
 
(remplacer adresse_ip_publique par l'adresse trouvée précédemment</translate>
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_0_ip_a_ifconfig_eth0_ubuntu.jpg
 
}}
 
{{Tuto Step
 
|Step_Title=<translate>configuration d'un vpn wireguard pour rendre accessible votre serveur depuis une box 4g ou un modem 4g</translate>
 
|Step_Content=<translate>[ATTENTION, cette section remet en question le marché des vpns!!]
 
 
 
Cette section n'est utile que pour les connections 4G/5G.
 
 
 
 
 
La 4g a l'avantage d'être mobile, avec une tres faible consommation du modem autour de 5W, et vous pouvez trouver des modems 4g sans wifi pour limiter la surface d'attaque de votre serveur (exemple netgear lm1200 autour de 150€).
 
 
 
 
 
'''qu'est ce qu'un vpn?'''
 
 
 
Les VPN sont principalement connus pour les "clients" vpn. C'est à dire que vous l'utilisez sur votre ordinateur pour vous "anonymiser".
 
 
 
Le vpn est en fait un tunnel entre votre ordinateur et un ordinateur distant à partir duquel partent vos requetes vers internet. Tout votre traffic en direction d'internet va passer par ce tunnel.
 
 
 
Internet pense ainsi que vos requetes proviennent de cet ordinateur distant. C'est à dire que votre ip publique devient celle de cet ordinateur distant.
 
 
 
Votre fournisseur d'accès ne voit que le traffic entre votre ordinateur et cet ordinateur distant, ce qui vous "anonymise".
 
 
 
 
 
En réalité, vous êtes anonyme vis à vis de votre fournisseur d'acces à internet, mais vous ne faites que déplacer la confiance vers votre fournisseur vpn qui lui peut voir votre traffic.
 
 
 
 
 
Le vpn a aussi d'autres utilités comme vous donner accès à des sites qui filtrent l'accès selon la "provenance" de votre adresse ip publique.
 
 
 
 
 
Vous pouvez tout à fait créer votre propre serveur vpn, et dans notre cas, ce serveur vpn permettra de rediriger les requetes internet faites sur ce serveur vers votre orange pi/raspberry pi en passant par le tunnel (dans l'autre sens que lorsque vous l'utilisez en tant que client pour accéder à internet).
 
 
 
 
 
Et nous allons voir comment.
 
 
 
 
 
'''Créer un serveur sur gandi.net'''
 
 
 
 
 
Créer un compte sur gandi.net, puis créer un serveur dans gandicloud vps. Voir les images jointes pour la création en 3 clics du serveur qui coute 5€/mois.
 
 
 
 
 
Pour créer une clé ssh et se logger voir
 
 
 
<nowiki>https://docs.gandi.net/fr/hebergement_web/connexion/cle_ssh.html</nowiki>
 
 
 
<nowiki>https://docs.gandi.net/fr/cloud/operations_courantes/connexion_serveur.html</nowiki>
 
 
 
 
 
Une fois loggé sur le serveur,
 
 
 
lancer la commande pour installer wireguard et les dépendances nécessaires
 
 
 
sudo apt update && sudo apt install wireguard resolvconf iptables nano -y
 
 
 
 
 
Lancer la même commande sur votre orange pi/raspberry pi.
 
 
 
 
 
lancer ensuite les commandes suivantes sur votre
 
 
 
serveur et sur le orange pi/raspberry pi pour creer les cles privés et publiques de wireguard
 
 
 
sudo mkdir -p /etc/wireguard
 
 
 
sudo sh -c 'wg genkey | (umask 0077 && tee /etc/wireguard/private_key) | wg pubkey > /etc/wireguard/public_key'
 
 
 
 
 
Afficher la clé publique dietpi sur votre orange pi/raspberry pi en tapant
 
 
 
sudo cat /etc/wireguard/public_key
 
 
 
Afficher egalement la clé publique du serveur gandi sur votre serveur en tapant
 
 
 
sudo cat /etc/wireguard/public_key
 
 
 
 
 
Entrer ensuite les commandes suivantes pour créer un fichier de configuration /etc/wireguard/wg0.conf sur votre serveur:
 
 
 
Taper les lignes suivantes (remplacer cle_publique_du_orange_pi_ou_raspberry_pi par celle affichée précédemment) :
 
 
 
echo "[Interface]" | sudo tee /etc/wireguard/wg0.conf
 
 
 
echo "Address=10.10.0.1/24" | sudo tee -a /etc/wireguard/wg0.conf
 
 
 
echo "PrivateKey=$(sudo cat /etc/wireguard/private_key)" | sudo tee -a /etc/wireguard/wg0.conf
 
 
 
echo "ListenPort=12345" | sudo tee -a /etc/wireguard/wg0.conf
 
 
 
echo "[Peer]" | sudo tee -a /etc/wireguard/wg0.conf
 
 
 
echo "PublicKey=cle_publique_du_orange_pi_ou_raspberry_pi" | sudo tee -a /etc/wireguard/wg0.conf
 
 
 
echo "AllowedIPs=10.10.0.2/32" | sudo tee -a /etc/wireguard/wg0.conf
 
 
 
 
 
Entrer ensuite la commande suivante sur le serveur pour lancer et activer le service vpn
 
 
 
sudo systemctl start wg-quick@wg0
 
 
 
sudo systemctl enable wg-quick@wg0
 
 
 
 
 
taper ensuite
 
 
 
curl ifconfig.me
 
 
 
 
 
pour obtenir l'ip publique de votre serveur gandi.
 
 
 
 
 
Taper ensuite les lignes suivantes sur votre dietpi (remplacer cle_publique_du_serveur par celle affichée précédemment et ip_publique_du_serveur par celle affichée précédemment) :
 
 
 
echo "[Interface]" | sudo tee /etc/wireguard/wg0.conf
 
 
 
echo "Address=10.10.0.2/24" | sudo tee -a /etc/wireguard/wg0.conf
 
 
 
echo "PrivateKey=$(sudo cat /etc/wireguard/private_key)" | sudo tee -a /etc/wireguard/wg0.conf
 
 
 
echo "[Peer]" | sudo tee -a /etc/wireguard/wg0.conf
 
 
 
echo "PublicKey=cle_publique_du_serveur" | sudo tee -a /etc/wireguard/wg0.conf
 
 
 
echo "AllowedIPs=10.10.0.1/32" | sudo tee -a /etc/wireguard/wg0.conf
 
 
 
echo "Endpoint=ip_publique_du_serveur:12345" | sudo tee -a /etc/wireguard/wg0.conf
 
 
 
La ligne AllowedIPS définit les ips de destination (sortantes) qui passeront par le tunnel et seront chiffrées mais aussi les ips entrantes autorisées.
 
 
 
Si vous souhaitez configurer votre "client" (orange pi ou raspberry pi) pour utiliser le vpn pour accéder à internet, remplacer AllowedIPs=10.10.0.1/32 par AllowedIPs=0.0.0.0/0
 
 
 
En définissant 0.0.0.0/0 on indique que tout le traffic du orange pi/raspberry pi passera par le tunnel wireguard et toutes les ip entrantes seront autorisées.
 
 
 
Il est alors important de bien configurer son firewall sur le serveur!
 
 
 
Pour vérifier que wireguard fonctionne, lancer la commande suivante sur le serveur vpn:
 
 
 
ping 10.10.10.2 -c 4
 
 
 
Le ping doit fonctionner
 
 
 
Ca ne fonctionne de façon systématique chez moi, mais je suis sur que si vous essayez loin de l'oeil de sauron votre météo numérique ira mieux que la mienne, et ca fonctionnera chez vous ;)
 
 
 
 
 
Si vous utilisez un serveur vpn, il faudra penser à le sécuriser comme le orange pi (voir section sécurisation).
 
 
 
<br /></translate>
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_gandi_1.png
 
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_gandi_2.png
 
}}
 
{{Tuto Step
 
|Step_Title=<translate>configuration d'un vpn openvpn pour rendre accessible votre serveur depuis une box 4g ou un modem 4g</translate>
 
|Step_Content=<translate>Dans le cas où ca ne fonctionnerait pas avec wireguard, vous pouvez utiliser openvpn, (qui est configurable sans ligne de commande à la souris!).
 
 
 
 
 
Pour cela suivez les étapes suivantes sur votre serveur gandi  (n'oubliez pas de désinstaller wireguard sur votre serveur et le dietpi avec sudo apt remove wireguard && sudo apt purge wireguard si ca n'a pas fonctionné avec wireguard)
 
 
 
 
 
wget -O- "<nowiki>https://as-repository.openvpn.net/as-repo-public.gpg</nowiki>" | sudo apt-key add -
 
 
 
echo "deb <nowiki>http://as-repository.openvpn.net/as/debian</nowiki> bullseye main" | sudo tee /etc/apt/sources.list.d/ovpnas.list
 
 
 
sudo apt install openvpn-as
 
 
 
 
 
voir https://openvpn.net/vpn-server-resources/installing-openvpn-access-server-on-a-linux-system/ pour les détails.
 
 
 
 
 
Rendez vous ensuite sur la page de configuration du serveur: https://<adresse_ip_du_serveur>
 
 
 
login:openvpn
 
 
 
password: indiqué dans le log de l'installation
 
 
 
 
 
Image 1: go to admin panel
 
 
 
reentrer vos login/password
 
 
 
 
 
Image 2:
 
 
 
Network settings: Activer UDP seulement et port 1194 puis save settings
 
 
 
 
 
Image 3:
 
 
 
VPN Settings: remplir les champs comme indiqué sur le screenshot puis save settings
 
 
 
 
 
Image 4:
 
 
 
User Management/User permission : changer le mot de passe dans local password et entrer l'adresse ip fixe du screeenshot puis save settings.
 
 
 
 
 
Image 5 :
 
 
 
Puis update running server
 
 
 
Pour vous reconnecter à l'interface de configuration:
 
 
 
<nowiki>https://adresse_ip_du_serveur:943</nowiki>
 
 
 
 
 
 
 
Image 6:
 
 
 
User Management/User profile: cliquer sur new profile
 
 
 
Puis cliquer sur create profile
 
 
 
 
 
Renommer le fichier de configuration téléchargé en openvpn.conf
 
 
 
 
 
Ouvrir le fichier de configuration et trouver la ligne auth-user-pass et la remplacer par la ligne suivante:
 
 
 
auth-user-pass auth.txt
 
 
 
 
 
Lancer ensuite sur le orangepi raspberry pi:
 
 
 
sudo apt update && sudo apt install openvpn-client
 
 
 
 
 
Copier le fichier de configuration téléchargé vers /etc/openvpn/client/openvpn.conf sur votre orangepi/raspberry pi
 
 
 
 
 
creer un fichier auth.txt placé dans ce repertoire /etc/openvpn/client dans lequel vous copiez les deux lignes suivantes en remplacant password par votre mot de passe:
 
 
 
openvpn
 
 
 
password
 
 
 
 
 
Lancer ensuite le client vpn:
 
 
 
sudo systemctl start openvpn-client@openvpn
 
 
 
 
 
Si vous voulez que le client se connecte automatiquement au lancement de la machine taper
 
 
 
sudo systemctl enable openvpn-client@openvpn
 
 
 
 
 
 
 
Si vous utilisez un serveur vpn, il faudra penser à le sécuriser comme le orange pi (voir section sécurisation).</translate>
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen1.png
 
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen2.png
 
|Step_Picture_02=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen3.png
 
|Step_Picture_03=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen4.png
 
|Step_Picture_04=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen4.1.png
 
|Step_Picture_05=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_ovpnscreen6.png
 
}}
 
{{Tuto Step
 
|Step_Title=<translate>Rediriger les requetes du serveur vpn vers le orange pi-raspberry pi</translate>
 
|Step_Content=<translate>Pour rediriger les requetes sur le serveur vers le orange pi / raspberry pi, on met en place un serveur logiciel web nginx:
 
 
 
 
 
sudo apt install nginx -y
 
 
 
 
 
On ouvre ensuite le fichier de configuration de ce logiciel serveur web:
 
 
 
sudo nano /etc/nginx/sites-enabled/default
 
 
 
 
 
Remplacer le contenu du fichier par ce qui suit:
 
 
 
 
 
server {
 
 
 
listen 80;
 
 
 
server_name localhost;
 
 
 
server_tokens off;
 
 
 
add_header Permissions-Policy "accelerometer=(),autoplay=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),fullscreen=(),geolocation=(),gyroscope=(),magnetometer=(),microphone=(),midi=(),payment=(),picture-in-picture=(),publickey-credentials-get=(),screen-wake-lock=(),sync-xhr=(self),usb=(),web-share=(),xr-spatial-tracking=()";
 
 
 
add_header Strict-Transport-Security "max-age=31536000 ; includeSubDomains";
 
 
 
add_header X-Frame-Options "SAMEORIGIN";
 
 
 
add_header X-Content-Type-Options nosniff;
 
 
 
add_header Content-Security-Policy "script-src 'self';";
 
 
 
add_header X-Permitted-Cross-Domain-Policies none;
 
 
 
add_header Referrer-Policy no-referrer;
 
 
 
add_header Clear-Site-Data "cache,cookies,storage";
 
 
 
location / {
 
 
 
proxy_pass <nowiki>http://10.10.0.2</nowiki>;
 
 
 
proxy_set_header Host $host;
 
 
 
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 
 
 
proxy_set_header X-Real-IP $remote_addr;
 
 
 
proxy_set_header X-Forwarded-Proto $scheme;
 
 
 
client_max_body_size 20M;
 
 
 
limit_except GET HEAD POST {deny all;}
 
 
 
}
 
 
 
 
 
}
 
 
 
 
 
Nginx va rediriger les requetes faites sur l'ip publique de votre serveur vers le nextcloud de votre orange pi / raspberry pi (ligne proxy_pass <nowiki>http://10.10.0.2</nowiki>;)
 
 
 
 
 
Vous pouvez tester si cela fonctionne en vous rendant sur la page:
 
 
 
http://ip_publique_de_votre_serveur_gandi
 
 
 
 
 
Attention, de nombreux navigateurs n'acceptent plus tres bien les redirections en http, voir la section https pour configurer le https (il faudra prendre un nom de domaine).</translate>
 
}}
 
{{Tuto Step
 
|Step_Title=<translate>Nom de domaine et adresse fixe</translate>
 
|Step_Content=<translate>Le nom de domaine est l'adresse dans votre navigateur : par exemple lowtechlab.org.
 
 
 
 
 
Il vous permet de rendre votre serveur accessible plus facilement avec une adresse facilement memorisable. Il ne fait qu'associer le nom de domaine à l'adresse ip de votre serveur vpn ou l'adresse ip de votre box.
 
 
 
 
 
Que vous enregistriez un nom de domaine pour rediriger vers votre adresse ip ou pas (c'est nécessaire pour avoir le https cependant), il faut noter que par défaut, les fournisseurs d'accès vous octroient une  adresse ip différente à chaque connexion.
 
 
 
 
 
Si vous souhaitez une adresse ip fixe, il faut en faire la demande à votre fournisseur d'accès. Ce n'est malheureusement plus très répandue dans les offres grands publics. Orange propose à la place un "DynDns" qui vous propose une adresse en lettres correspondant à votre adresse ip mais à laquelle vous ne pouvez pas rattacher facilement un nom de domaine. Certains gestionnaires de nom de domaine, comme infomaniak, proposent tout de même d'enregistrer un nom de domaine pour le dyndns qui est acessible assez facilement sans surcout chez les principaux opérateurs.
 
 
 
 
 
Si vous avez un accès en 4G, il n'est pas possible d'avoir une adresse ip fixe et votre adresse ip publique correspondra à un "pool". C'est à dire que l'opérateur alloue une adresse ip publique pour plusieurs clients, ne vous permettant pas d'utiliser la technique du NAT/Port Forwarding pour rendre votre dietpi accessible sur internet.
 
 
 
Il faudra alors prendre un nom de domaine pour votre serveur vpn qui redirige les requetes vers votre dietpi.
 
 
 
 
 
Voir image jointe pour l'enregistrement d'un nom de domaine: c'est la ligne nom "@" type A qu'il faut renseigner avec l'adresse ip publique de votre box ou de votre serveur vpn.
 
 
 
 
 
 
 
<br /></translate>
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_gandi3.png
 
}}
 
{{Tuto Step
 
|Step_Title=<translate>Configuration https sur serveur gandi vpn</translate>
 
|Step_Content=<translate>Si vous avez un vpn/serveur reverse proxy:
 
 
 
 
 
Sur votre serveur gandi, effectuer les opérations suivantes:
 
 
 
 
 
Creer un fichier /etc/nginx/conf.d/dietpi.conf et copier les lignes suivante:
 
 
 
server {
 
 
 
listen 80;
 
 
 
server_name localhost;
 
 
 
server_tokens off;
 
 
 
add_header Permissions-Policy "accelerometer=(),autoplay=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),fullscreen=(),geolocation=(),gyroscope=(),magnetometer=(),microphone=(),midi=(),payment=(),picture-in-picture=(),publickey-credentials-get=(),screen-wake-lock=(),sync-xhr=(self),usb=(),web-share=(),xr-spatial-tracking=()";
 
 
 
add_header Strict-Transport-Security "max-age=31536000 ; includeSubDomains";
 
 
 
add_header X-Frame-Options "SAMEORIGIN";
 
 
 
add_header X-Content-Type-Options nosniff;
 
 
 
add_header Content-Security-Policy "script-src 'self';";
 
 
 
add_header X-Permitted-Cross-Domain-Policies none;
 
 
 
add_header Referrer-Policy no-referrer;
 
 
 
<nowiki>#</nowiki>add_header Clear-Site-Data "cache,cookies,storage";
 
 
 
return 301 <nowiki>https://$host$request_uri</nowiki>;
 
 
 
location / {
 
 
 
return 301 <nowiki>https://$host$request_uri</nowiki>;
 
 
 
}
 
 
 
}
 
 
 
lancer ensuite les commandes suivantes:
 
 
 
sudo apt install letsencrypt
 
 
 
wget <nowiki>https://raw.githubusercontent.com/certbot/certbot/master/certbot-nginx/certbot_nginx/_internal/tls_configs/options-ssl-nginx.conf</nowiki>
 
 
 
sudo cp options-ssl-nginx.conf /etc/letsencrypt/options-ssl-nginx.conf
 
 
 
wget <nowiki>https://raw.githubusercontent.com/certbot/certbot/master/certbot/certbot/ssl-dhparams.pem</nowiki>
 
 
 
sudo cp ssl-dhparams.pem /etc/letsencrypt/ssl-dhparams.pem
 
 
 
sudo rm /etc/nginx/sites-enabled/default
 
 
 
sudo apt remove certbot
 
 
 
sudo apt install python3-certbot-nginx
 
 
 
obtenir les certificats (rempalcer __domain__ par votre domaine):
 
 
 
sudo certbot certonly --nginx -d __domain__
 
 
 
copier ensuite les lignes suivante dans votre fichier /etc/nginx/conf.d/dietpi.conf
 
 
 
en remplacant __domain__ par votre domaine
 
 
 
server {
 
 
 
listen 80;
 
 
 
server_name localhost;
 
 
 
server_tokens off;
 
 
 
add_header Permissions-Policy "accelerometer=(),autoplay=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),fullscreen=(),geolocation=(),gyroscope=(),magnetometer=(),microphone=(),midi=(),payment=(),picture-in-picture=(),publickey-credentials-get=(),screen-wake-lock=(),sync-xhr=(self),usb=(),web-share=(),xr-spatial-tracking=()";
 
 
 
add_header Strict-Transport-Security "max-age=31536000 ; includeSubDomains";
 
 
 
add_header X-Frame-Options "SAMEORIGIN";
 
 
 
add_header X-Content-Type-Options nosniff;
 
 
 
add_header Content-Security-Policy "script-src 'self';";
 
 
 
add_header X-Permitted-Cross-Domain-Policies none;
 
 
 
add_header Referrer-Policy no-referrer;
 
 
 
<nowiki>#</nowiki>add_header Clear-Site-Data "cache,cookies,storage";
 
 
 
return 301 <nowiki>https://$host$request_uri</nowiki>;
 
 
 
location / {
 
 
 
return 301 <nowiki>https://$host$request_uri</nowiki>;
 
 
 
}
 
 
 
}
 
 
 
server {
 
 
 
listen 443 ssl http2;
 
 
 
server_name localhost;
 
 
 
server_tokens off;
 
 
 
ssl_certificate /etc/letsencrypt/live/__domain__/fullchain.pem;
 
 
 
ssl_certificate_key /etc/letsencrypt/live/__domain__/privkey.pem;
 
 
 
include /etc/letsencrypt/options-ssl-nginx.conf;
 
 
 
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
 
 
 
add_header Permissions-Policy "accelerometer=(),autoplay=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),fullscreen=(),geolocation=(),gyroscope=(),magnetometer=(),microphone=(),midi=(),payment=(),picture-in-picture=(),publickey-credentials-get=(),screen-wake-lock=(),sync-xhr=(self),usb=(),web-share=(),xr-spatial-tracking=()";
 
 
 
add_header Strict-Transport-Security "max-age=31536000 ; includeSubDomains";
 
 
 
add_header X-Frame-Options "SAMEORIGIN";
 
 
 
add_header X-Content-Type-Options nosniff;
 
 
 
add_header Content-Security-Policy "script-src 'self';";
 
 
 
add_header X-Permitted-Cross-Domain-Policies none;
 
 
 
add_header Referrer-Policy no-referrer;
 
 
 
<nowiki>#</nowiki>add_header Clear-Site-Data "cache,cookies,storage";
 
 
 
location / {
 
 
 
proxy_pass <nowiki>http://10.10.10.2</nowiki>;
 
 
 
proxy_set_header Host $host;
 
 
 
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 
 
 
proxy_set_header X-Real-IP $remote_addr;
 
 
 
proxy_set_header X-Forwarded-Proto $scheme;
 
 
 
client_max_body_size 20M;
 
 
 
limit_except GET HEAD POST {deny all;}
 
 
 
}
 
 
 
}
 
 
 
redémarrer nginx
 
 
 
sudo systemctl restart nginx
 
 
 
 
 
Acceder à votre serveur en https en tapant l'adresse suivante dans votre navigateur
 
 
 
https://votre_domaine/nextcloud/
 
 
 
 
 
Vous pouvez alors configurer nextcloud en ligne par le compte administrateur
 
 
 
login par défaut sur dietpi: admin
 
 
 
mot de passe par défaut sur dietpi: mot de passe entrée à l'installation de dietpi</translate>
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_Capture_d_cran_du_2023-08-21_18-47-32.png
 
}}
 
{{Tuto Step
 
|Step_Title=<translate>Configuration https sur dietpi si vous etes branché en box</translate>
 
|Step_Content=<translate>Si vous n'avez pas de vpn/serveur reverse proxy.
 
 
 
 
 
Effectuer les opération suivantes directement sur votre dietpi:
 
 
 
 
 
créer un fichier wellknown.conf dans /etc/nginx/sites-dietpi
 
 
 
Le fichier doit contenir les lignes suivantes:
 
 
 
location ^~ /.well-known {
 
 
 
<nowiki>#</nowiki> The rules in this block are an adaptation of the rules
 
 
 
<nowiki>#</nowiki> in `.htaccess` that concern `/.well-known`.
 
 
 
location = /.well-known/carddav { return 301 /nextcloud/remote.php/dav/; }
 
 
 
location = /.well-known/caldav  { return 301 /nextcloud/remote.php/dav/; }
 
 
 
location /.well-known/acme-challenge    {  root /var/www/certbot; }
 
 
 
location /.well-known/pki-validation    { try_files $uri $uri/ =404; }
 
 
 
<nowiki>#</nowiki> Let Nextcloud's API for `/.well-known` URIs handle all other
 
 
 
<nowiki>#</nowiki> requests by passing them to the front-end controller.
 
 
 
return 301 /nextcloud/index.php$request_uri;
 
 
 
}
 
 
 
Modifier ensuite le fichier /etc/nginx/sites-available/default
 
 
 
et ajouter les lignes suivantes à la fin en remplacant _domain_ par votre domaine (par exemple nextcloud.com):
 
 
 
 
 
server {
 
 
 
listen 443      ssl http2;
 
 
 
listen [::]:443 ssl http2;
 
 
 
 
 
ssl_certificate /etc/letsencrypt/live/_domain_/fullchain.pem;
 
 
 
ssl_certificate_key /etc/letsencrypt/live/_domain_/privkey.pem;
 
 
 
include /etc/letsencrypt/options-ssl-nginx.conf;
 
 
 
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
 
 
 
 
 
root /var/www;
 
 
 
index index.php index.html index.htm index.nginx-debian.html;
 
 
 
server_name "$hostname";
 
 
 
include /etc/nginx/sites-dietpi/*.conf;
 
 
 
location / {
 
 
 
try_files $uri $uri/ =404;
 
 
 
}
 
 
 
location ~ \.php(?:$|/) {
 
 
 
include snippets/fastcgi-php.conf;
 
 
 
fastcgi_pass php;
 
 
 
}
 
 
 
}
 
 
 
Lancer ensuite les commandes suivantes :
 
 
 
sudo apt install letsencrypt
 
 
 
wget <nowiki>https://raw.githubusercontent.com/certbot/certbot/master/certbot-nginx/certbot_nginx/_internal/tls_configs/options-ssl-nginx.conf</nowiki>
 
 
 
sudo cp options-ssl-nginx.conf /etc/letsencrypt/options-ssl-nginx.conf
 
 
 
sudo chown "$USER":"$USER" /etc/letsencrypt/options-ssl-nginx.conf
 
 
 
sudo chmod 0755 /etc/letsencrypt/options-ssl-nginx.conf
 
 
 
wget <nowiki>https://raw.githubusercontent.com/certbot/certbot/master/certbot/certbot/ssl-dhparams.pem</nowiki>
 
 
 
sudo cp ssl-dhparams.pem /etc/letsencrypt/ssl-dhparams.pem
 
 
 
sudo chown "$USER":"$USER" /etc/letsencrypt/ssl-dhparams.pem
 
 
 
sudo chmod 0755 /etc/letsencrypt/ssl-dhparams.pem
 
 
 
sudo rm /etc/nginx/sites-enabled/default
 
 
 
sudo mkdir -p /var/www/certbot
 
 
 
sudo chown "$USER":"$USER" /var/www/certbot
 
 
 
sudo chmod 0755 /var/www/certbot
 
 
 
lancer ensuite les commandes suivantes en remplacant __domain__ par votre domaine et __email__ par votre email:
 
 
 
sudo mkdir -p /etc/letsencrypt/live/__domain__
 
 
 
sudo chown "$USER":"$USER" /etc/letsencrypt/live/__domain__
 
 
 
sudo chmod 0755 /etc/letsencrypt/live/__domain__
 
 
 
openssl req -x509 -nodes -newkey rsa:4096 -days 1 -keyout '/etc/letsencrypt/live/__domain__/privkey.pem' -out '/etc/letsencrypt/live/__domain__/fullchain.pem' -subj '/CN=localhost'
 
 
 
sudo systemctl restart nginx
 
 
 
sudo rm /etc/letsencrypt/live/__domain__/privkey.pem
 
 
 
sudo rm /etc/letsencrypt/live/__domain__/fullchain.pem
 
 
 
certbot certonly --cert-name domaine --non-interactive --staging --webroot -w /var/www/certbot --email __email__ -d __domain__ -d www.__domain__ --rsa-key-size 4096 --agree-tos --force-renewal
 
 
 
Si la commande a fonctionné, relancer certbot sans le "staging":
 
 
 
certbot certonly --cert-name domaine --non-interactive --webroot -w /var/www/certbot --email __email__ -d __domain__ -d www.__domain__ --rsa-key-size 4096 --agree-tos --force-renewal
 
 
 
redémarrer nginx
 
 
 
sudo systemctl restart nginx
 
 
 
le certificat est à renouveler tous les 3 mois en tapant
 
 
 
certbot renew
 
 
 
 
 
 
 
Acceder à votre serveur en https en tapant l'adresse suivante dans votre navigateur
 
 
 
https://votre_domaine/nextcloud/
 
 
 
 
 
Vous pouvez alors configurer nextcloud en ligne par le compte administrateur
 
 
 
 
 
login par défaut sur dietpi: admin
 
 
 
mot de passe par défaut sur dietpi: mot de passe entrée à l'installation de dietpi</translate>
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_Capture_d_cran_du_2023-08-21_18-47-32.png
 
}}
 
{{Tuto Step
 
|Step_Title=<translate>Rendre votre serveur nomade et autonome énergétiquement en photovoltaique</translate>
 
|Step_Content=<translate>[ATTENTION, cette section remet en question le marché du pétrole!!]
 
 
 
 
 
Que ce soit pour des raisons écologiques, ou pour d'autres raisons, il est intéressant d'avoir un serveur autonome énergétiquement,
 
 
 
qui ne dépendra pas des aléas du réseau électrique.
 
 
 
 
 
videos:
 
 
 
bases debutant(panneaux, regulateur, onduleur, conso/prod): <nowiki>https://www.youtube.com/watch?v=8Ft4XQj9lQ4</nowiki>
 
 
 
montage simple kit myshop solaires pour 230V:<nowiki>https://www.youtube.com/watch?v=SvmPEhPq_S8</nowiki>
 
 
 
 
 
 
 
kit prêts à acheter (si vous avez des subventions et des collègues qui coopèrent bien):
 
 
 
<nowiki>https://allo.solar/kit-solaire-1650w-230v-autoconsommation-aps.html?gclid=EAIaIQobChMIkY_fxvu-gAMVyLfVCh014gadEAYYASABEgJd8_D_BwE</nowiki>
 
 
 
 
 
solution intermédiaire intégrée:
 
 
 
Station énergie portable extensible 230V BLUETTI AC200MAX
 
 
 
EcoFlow River 2 pro
 
 
 
 
 
kits semi lowtech (celui utilisé dans ce guide):
 
 
 
panneaux photovoltaïque 100W et batterie de voiture plomb acide.
 
 
 
 
 
kit vraiment lowtech:
 
 
 
fabriquer sa batterie lithium à partir de déchets: voir barnabé chaillot
 
 
 
<nowiki>https://www.youtube.com/watch?v=_hwj7Ds50lU</nowiki>
 
 
 
 
 
 
 
rappel de base: branchement en série (+ sur - et + sur -) on ajoute le voltage et on garde le meme amperage, branchement en paralelle (+ sur +, - sur -) on ajoute l'amperage et on garde le meme voltage
 
 
 
idem pour les batteries: à mettre en paralelle pour garder la meme tension (voltage)
 
 
 
 
 
La première problématique du photovoltaïque lowtech autonome est le dimensionnement de l'installation.
 
 
 
Pour cela on trouve pas mal d'informations sur internet.
 
 
 
Vous pouvez utiliser la feuille libreoffice en piece jointe pour du dimensionnement "bricolé".
 
 
 
 
 
 
 
Le dimensionnement:
 
 
 
Le orange pi consomme environ 20W
 
 
 
Un disque usb supplémentaire consomme environ 5W
 
 
 
Un modem 4G consomme environ 5W
 
 
 
Soit un besoin constant de 35W pour prendre un peu de marge
 
 
 
le besoin journalier pour un serveur qui tourne 24h/24: 35W*24h=840Wh
 
 
 
Le besoin journalier pour un serveur qui tourne en journéee seulement:
 
 
 
en été: 35W*14h=490Wh
 
 
 
en hiver: 35W*8h=280Wh
 
 
 
Notez qu'il s'agit là d'un besoin moyen et si vous souhaitez dimensionner
 
 
 
pour des usages divers, il est recommander de procéder de façon plus précise
 
 
 
en calculant les besoins temps réels.
 
 
 
le dimensionnement du stockage par le temps d'autonomie :
 
 
 
Estimer les pertes à 20% et augmenter le besoin en consquénce:
 
 
 
besoin 24h/24=840/0,80=1050Wh
 
 
 
Estimer le temps d'autonomie voulue:
 
 
 
exemple 24h
 
 
 
On va alors dimensionner le stockage pour tenir 24h.
 
 
 
Pour des batteries en 12V: 1050Wh/12V=87,5Ah
 
 
 
Etant donné qu'on veut limiter la décharge des batteries à 50%, on prendra donc
 
 
 
87,5Ah/0,5=175Ah
 
 
 
Soit 2100 Wh en 12V
 
 
 
 
 
Selon les caractéristiques des panneaux (voir feuille de calcul), on peut estimer
 
 
 
la recharge de la batterie lorsque l'ensoleillement est minimal (en décembre).
 
 
 
 
 
Pour dimensionner, on peut utiliser la méthode du nombre de jours voulues pour recharger entierement les batteries:
 
 
 
 
 
Si on veut pouvoir recharger les batteries en un jour en hiver, il faut considérer la puissance produite par vos panneaux au jour d'hiver avec le moins d'ensoleillement.
 
 
 
 
 
Si on prend 3,5h pour le minimum, le nombre de panneaux nécessaire de puissance x Watt sera:
 
 
 
C_batterie:Capacité batterie en Wh
 
 
 
Dans notre exemple 2100Wh
 
 
 
T_hiver:temps de recharge journalier minimal en hiver (en h)
 
 
 
Dans notre exemple 3,5h
 
 
 
B_hiver:besoin journalier hors temps ensoleillement en hiver (en Wh)
 
 
 
Dans notre exemple (24h-3,5h)*35W=897Wh
 
 
 
n_voulus:nombre de jour voulus pour recharger entierement la batterie
 
 
 
Dans notre exemple 1
 
 
 
I:amperage sortie d'un panneau photovoltaique
 
 
 
Dans notre exemple 7A
 
 
 
U:tension sortie d'un panneau photovoltaique
 
 
 
Dans notre exemple 12V
 
 
 
Nb_panneaux=C_batterie+B_hiver*n_nvoulus/T_hiver*I*U*n_voulus
 
 
 
 
 
Dans l'exemple:
 
 
 
Nb_panneaux=(2100+897*1)/(3,5*12*7*1)
 
 
 
Il faudra donc 10 panneaux de 84W de 7A 12V
 
 
 
 
 
Noter que la valeur cardinale ici est à la ligne 42 du fichier joint, il s'agit
 
 
 
de l'ensoleillement journalier minimal en décembre à production nominale. Des valeurs de référence peuvent être trouvées sur
 
 
 
<nowiki>https://re.jrc.ec.europa.eu/api/v5_2/seriescalc?lat=44.203142&lon=0.616363&loss=14&angle=45&aspect=0&startyear=2005&endyear=2005&pvcalculation=1&peakpower=1&pvtechchoice=crystSi&browser=0&outputformat=csv</nowiki>
 
 
 
 
 
Mais rien ne vaut une mesure empirique pour vérifier tout ca.
 
 
 
Tout commentaire et "retour d'experience" est bienvenu à ce sujet en bas de cette page!
 
 
 
La problématique principale du photovoltaïque lowtech autonome est le stockage de l'énergie.
 
 
 
Vous pouvez lire les caractéristiques des panneaux qu'on vous a donné ou trouvés sur leboncoin à pas cher:
 
 
 
-puissance crete: elles s'aditionnent pour obtenir la puissance nécessaire trouvée lors de la phase de dimensionnement.
 
 
 
-tension : 12V,24V ou 48V. voir regles série/paralelle pour leur additions
 
 
 
-intensité: variable selon les modèles mais souvent inferieure à 10A
 
 
 
Pour recharger des batteries, en principe, si vous connectez votre panneaux en direct sur une batterie, il suffit que la tension
 
 
 
à la sortie de vos panneaux soit la même que celles de vos batterie, et ca devrait charger.
 
 
 
 
 
Il y a un composants importants à retenir pour charger correctement vos batteries:
 
 
 
le regulateur ou controleur de charge
 
 
 
 
 
il en existe de trois sortes: les tor (tout ou rien) les mppt (Maximum power point tracking) et les pwm (Pulse Width Modulation)
 
 
 
Les mppt accepte des puissances nominales plus élevées, cad des tensions et intensité plus élevées.
 
 
 
Ils sont composés d'un adaptateur DC/DC et d'un coupe circuit. Le mppt comprend également un adaptateur d'impédence.
 
 
 
 
 
Le régulateur ou controleur de charge: il permet de s'assurer que la tension et l'intensité de charge sont bonnes. Il coupe le circuit si
 
 
 
leurs valeurs dépassent les intervalles de référence (pour cela le regulateur arrete la charge temporairement et mesure la tension aux bornes des batteries).
 
 
 
Le mmpt a un "algorithme" électronique intégré qui va chercher le point de puissance optimal
 
 
 
grace a son adaptateur d'impedance.
 
 
 
 
 
Si vous connectez plusieurs panneaux et plusieurs batteries, il est essentiel d'avoir un bon regulateur pour que couper la charge correctement lorsque la batterie est chargée.
 
 
 
Les tensions de charge de référence sont 12V,24V et 48V.
 
 
 
 
 
Cependant, les prix des modèles augmentent avec la puissance nominales (qui va dépendre de l'amperage) qu'ils acceptent.
 
 
 
 
 
Pour limiter l'intensité du courant de la production photovoltaïque, il est plus judicieux d'utiliser des panneaux de plus forte puissance qui sont généralement à des tensions plus élevées
 
 
 
(rappel P=U*I,
 
 
 
rappel E=P*t se conserve dans un systeme fermé).
 
 
 
note: si le systeme de stockage par batterie ou l'appareil connecté à vos panneaux n'absorbe pas toute la puissance produite, et si le régulateur de charge ne coupe pas le circuit, le reste sera dégagé en chaleur.
 
 
 
 
 
L'amperage va aussi dependre de la capacité de stockage de vos batteries, dimensionnées pour couvrir vos besoins pendant une periode définie au dimensionnement.
 
 
 
 
 
Le courant de charge est calculé en divisant par 4 ou 5 la capacité nominale de la batterie exprimée en Ah qui devrait alors se recharger en 4 ou 5h. Cependant une batterie se rechargera aussi avec un courant de charge de la capacité nominale de la batterie divisée par 20 mais plus lentement (en 20h). Dimensionnez et/ou agencez vos panneaux en conséquence.
 
 
 
Des montages serie+paralelle peuvent permettrent d'ajuster tension et amperage.
 
 
 
 
 
Il y a enfin un dernier point sur lequel être attentif: le déclenchement de la recharge de la batterie par le regulateur/controleur de charge (qui déclenche quand la tension de la batterie diminue en dessous d'un certain seuil).
 
 
 
 
 
En effet, si la puissance soutirée à la batterie est trop faible, il est possible que le temps nécessaire à la décharger suffisamment avec votre consommation journalière pour déclencher la recharge dans le régulateur dépasse le temps d'ensoleillement journalier.
 
 
 
 
 
Dans ce cas, votre batterie ne se rechargera qu'un jour sur deux ou sur trois (selon le seuil de déclenchement de la recharge du regulateur).
 
 
 
C'est un paramètre à prendre en compte  dans le dimensionnement (non inclus dans la feuille de calcul).
 
 
 
 
 
Le régulateur a 3 phases:
 
 
 
 
 
bulk: le regulateur laisse passer le courant
 
 
 
 
 
absorption (pour les mppt): la tension de charge augmente un peu pour créer une difference de potentiel suffisante pour continuer à charger la batterie presque pleine.
 
 
 
En théorie le courant de charge diminue lorsque la batterie est presque rechargée (courant de queue etc.)
 
 
 
 
 
floating: le regulateur alterne interupteur fermée et ouvert à une fréquence donnée pour maintenir la batterie chargée
 
 
 
En outre il faut prendre des précautions car la charge des batteries présente certains risques.
 
 
 
 
 
La charge de batteries en paralelle ou en série sur des batteries usagées qui n'ont pas les mêmes tensions ou intensité
 
 
 
présente en théorie des risques. En effet vous lirez un peu partout que la résistance des fils pour relier ces batteries
 
 
 
créee des différences de potentiels entre les batteries qui produisent des décharges d'une batterie envers une autre etc.
 
 
 
créant des risques d'explosion, de degazage pour les batteries plomb etc.
 
 
 
Il faut bien se rapeller que les batteries sont des assemblages de composants unitaires de faible tension mis en séries et
 
 
 
en paralelle pour obtenir un générateur de l'intensité et la tension voulue.
 
 
 
 
 
On parle souvent de "battery management system" (bms) "intégré" pour les batteries lithium ion.
 
 
 
En réalité le régulateur de charge est déjà un "bms". En théorie, le bms intégré s'assure que les tensions et les intensités
 
 
 
de chaque unité composant la batterie est la même et la rééquilibre au besoin.
 
 
 
On peut bien sûr s'interroger si tout ceci n'est pas une façon de rendre le stockage de l'énergie plus cher avec des composants BMS
 
 
 
artificiellement chers et si ce n'est pas une façon d'éviter de réutiliser des unités de batteries usagées.
 
 
 
 
 
Il est par exemple étonnat qu'il n'existe pas de BMS pour rééquilibrer automatiquement des batteries plomb acide, ce qui rendrait
 
 
 
utilisable toutes les batteries de décharges de l'industrie automobile pour stocker l'énergie photovoltaïque sans risque!
 
 
 
 
 
Dans tous les cas, si vous réutilisez des batteries au plomb, utilisez un régulateur pour éviter de continuer à charger vos batteries rechargées (risques de production d'hydrogene),
 
 
 
évitez les décharges profondes, et maintenez les batteries à une temperature constante autant que possible.
 
 
 
<br /></translate>
 
}}
 
{{Tuto Step
 
|Step_Title=<translate>Montage et test</translate>
 
|Step_Content=<translate>Pour raison budgétaire on dimensionne sur un dixieme de la puissance de panneaux et un quart de la capacité de batterie de ce que la théorie nous a indiqué pour être autonome 24h/24h et en capacité de recharger en un seul jour en hiver, soit un panneau de 100W et une vieille batterie de voiture de 45Ah (100Ah en 12V).
 
 
 
 
 
Le regulateur utilisé n'accepte pas les panneaux 40V donc on n'a pas utilisé le panneau photovoltaïque d'occasion de 180W à 20€ trouvé sur leboncoin, mais je ne manquerai pas d'updater ce tuto avec dès que j'aurai le materiel et avec les valeurs de production hivernale si j'y arrive!</translate>
 
|Step_Picture_00=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_171458_820.jpg
 
|Step_Picture_01=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_171056_521.jpg
 
|Step_Picture_02=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_171328_268.jpg
 
|Step_Picture_03=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_173010_697.jpg
 
|Step_Picture_04=Serveur_orangepi-raspberry_nextcloud_en_photovolta_que_autonome_IMG_20230821_172639_858.jpg
 
}}
 
{{Tuto Step
 
|Step_Title=<translate>Securisation du serveur</translate>
 
|Step_Content=<translate>Au niveau sécurité, les failles connues des cpus peuvent être trouvées sous linux en faisant:
 
 
 
grep -r . /sys/devices/system/cpu/vulnerabilities
 
 
 
Cette commande sur le orange pi (cpu CortexA55) avec dietpi installé donne:
 
 
 
/sys/devices/system/cpu/vulnerabilities/spectre_v2:Mitigation: Unprivileged eBPF enabled
 
 
 
/sys/devices/system/cpu/vulnerabilities/itlb_multihit:Not affected
 
 
 
/sys/devices/system/cpu/vulnerabilities/mmio_stale_data:Not affected
 
 
 
/sys/devices/system/cpu/vulnerabilities/mds:Not affected
 
 
 
/sys/devices/system/cpu/vulnerabilities/l1tf:Not affected
 
 
 
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass:Mitigation: Speculative Store Bypass disabled via prctl
 
 
 
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort:Not affected
 
 
 
/sys/devices/system/cpu/vulnerabilities/spectre_v1:Mitigation: __user pointer sanitization
 
 
 
/sys/devices/system/cpu/vulnerabilities/retbleed:Not affected
 
 
 
/sys/devices/system/cpu/vulnerabilities/srbds:Not affected
 
 
 
/sys/devices/system/cpu/vulnerabilities/meltdown:Not affected
 
 
 
 
 
Ayant testé un orange pi un raspberry pi et un odroid, le probleme reste le même.
 
 
 
<u>basiques:</u>
 
 
 
principe de limiter surface d'attaque
 
 
 
on peut passer sa vie à augmenter la sécurité d'un systeme informatique...
 
 
 
trouver le bon compromis et évaluer les risques ou appats en termes financiers
 
 
 
(le hack est toujours possible)
 
 
 
Cependant quelques éléments car c'est un sujet sur lequel on trouve peu d'informations didactiques rassemblées.
 
 
 
acces physique sécurisé:
 
 
 
 
 
mot de passe grub
 
 
 
Lancer grub-mkpasswd-pbkdf2 dans un terminal
 
 
 
Copier le texte qui commence par grub.pbkdf2.sha512.10000.xy
 
 
 
où xy est une longue suite de lettres et de chiffres
 
 
 
Ajouter les lignes suivantes à un fichier /etc/grub.d/42_pw
 
 
 
en remplacant user par votre nom d'utilisateur linux et pw par le
 
 
 
texte précemment copié
 
 
 
cat << EOF
 
 
 
set superusers=user
 
 
 
password_pbkdf2 pw
 
 
 
EOF
 
 
 
lancer ensuite la commande
 
 
 
update-grub
 
 
 
 
 
bons mots de passes en general
 
 
 
pour changer le mot de passer de l'utilisateur courant taper
 
 
 
passwd
 
 
 
pour changer le mot de passe de l'utilisateur root taper
 
 
 
sudo passwd root
 
 
 
 
 
éventuellement vérification d'intégrité du boot (voir ordinateurs de purism par exemple)
 
 
 
 
 
chiffrer (crypter) ses supports de stockage:
 
 
 
https://doc.ubuntu-fr.org/tutoriel/chiffrer_ses_donnees
 
 
 
https://www.dwarmstrong.org/remote-unlock-dropbear/
 
 
 
 
 
<u>sécurité d'un serveur:</u>
 
 
 
apt update automatisé : https://www.linuxtricks.fr/wiki/debian-activer-les-mises-a-jour-automatique-avec-unattended-upgrades
 
 
 
lignes à inclure dans votre configuration ssh (/etc/ssh/sshd_config):
 
 
 
Port 22 #changer sur un autre port si vous le souhaitez
 
 
 
Protocol 2
 
 
 
PermitRootLogin no
 
 
 
StrictModes yes
 
 
 
PermitEmptyPasswords no
 
 
 
X11Forwarding no
 
 
 
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
 
 
 
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com
 
 
 
KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256
 
 
 
AllowTcpForwarding no
 
 
 
MaxSessions 1
 
 
 
UsePAM yes
 
 
 
AllowUsers user #remplacer par les utilisateurs autorisées
 
 
 
AllowGroups group #remplacer par les groupes autorisés
 
 
 
PasswordAuthentication no
 
 
 
AuthorizedKeysFile .ssh/authorized_keys
 
 
 
 
 
firewall logiciel:
 
 
 
ufw: https://doc.ubuntu-fr.org/ufw
 
 
 
ou fichier de configuration iptables:
 
 
 
https://gitlab.com/aurelpere/bp028-hardening/-/blob/main/rhel_iptables_ipv4/files/server_firewall.sh
 
 
 
 
 
fail2ban: https://doc.ubuntu-fr.org/fail2ban
 
 
 
fail2ban pour nextcloud: https://tuxicoman.jesuislibre.net/2015/01/fail2ban-pour-owncloud-7-sur-debian-jessie.html
 
 
 
 
 
desactiver ipv6 (ou configurer le firewall aussi pour ipv6)
 
 
 
3 méthodes pour désactiver ipv6:
 
 
 
dans grub
 
 
 
avec sysctl
 
 
 
ajouter les lignes suivantes à /etc/systcl.conf
 
 
 
net.ipv6.conf.all.disable_ipv6 = 1
 
 
 
net.ipv6.conf.default.disable_ipv6 = 1
 
 
 
net.ipv6.conf.all.router_solicitations = 0
 
 
 
net.ipv6.conf.default.router_solicitations = 0
 
 
 
net.ipv6.conf.all.accept_ra_rtr_pref = 0
 
 
 
net.ipv6.conf.default.accept_ra_rtr_pref = 0
 
 
 
net.ipv6.conf.all.accept_ra_pinfo = 0
 
 
 
net.ipv6.conf.default.accept_ra_pinfo = 0
 
 
 
net.ipv6.conf.all.accept_ra_defrtr = 0
 
 
 
net.ipv6.conf.default.accept_ra_defrtr = 0
 
 
 
net.ipv6.conf.all.autoconf = 0
 
 
 
net.ipv6.conf.default.autoconf = 0
 
 
 
net.ipv6.conf.all.accept_redirects = 0
 
 
 
net.ipv6.conf.default.accept_redirects = 0
 
 
 
net.ipv6.conf.all.accept_source_route = 0
 
 
 
net.ipv6.conf.default.accept_source_route = 0
 
 
 
net.ipv6.conf.all.max_addresses = 1
 
 
 
net.ipv6.conf.default.max_addresses = 1
 
 
 
avec le network manager nmcli
 
 
 
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/using-networkmanager-to-disable-ipv6-for-a-specific-connection_configuring-and-managing-networking
 
 
 
 
 
sécuriser le serveur en cas de multi utilisateur ou autres utilisateurs ayant obtenu un accès:
 
 
 
 
 
listes de fichiers à sécuriser (permissions etc.): https://linuxfr.org/forums/linux-general/posts/liste-des-fichiers-linux-a-securiser-owner-group-permissions-setuid-setgid-sticky-bit
 
 
 
 
 
guides de durcissement anssi : https://www.ssi.gouv.fr/guide/recommandations-de-securite-relatives-a-un-systeme-gnulinux/
 
 
 
 
 
<u>Pour aller plus loin en termes de sécurité:</u>
 
 
 
 
 
firewall physique libre: pcengines/ logiciel libre OPNSense
 
 
 
 
 
fail2ban avec listes géographiques: https://thecustomizewindows.com/2016/11/fail2ban-geoip-action-script-block-ssh-country/
 
  
  
Ligne 2 748 : Ligne 1 281 :
 
[https://doc.ubuntu-fr.org/tutoriel/comment_compiler_un_kernel_de_kernel.orghttps://github.com/robertdebock/ansible-role-kernel https://doc.ubuntu-fr.org/tutoriel/comment_compiler_un_kernel_de_kernel.org]
 
[https://doc.ubuntu-fr.org/tutoriel/comment_compiler_un_kernel_de_kernel.orghttps://github.com/robertdebock/ansible-role-kernel https://doc.ubuntu-fr.org/tutoriel/comment_compiler_un_kernel_de_kernel.org]
  
[https://doc.ubuntu-fr.org/tutoriel/comment_compiler_un_kernel_de_kernel.orghttps://github.com/robertdebock/ansible-role-kernel https://github.com/robertdebock/ansible-role-kernel]</translate>
+
[https://doc.ubuntu-fr.org/tutoriel/comment_compiler_un_kernel_de_kernel.orghttps://github.com/robertdebock/ansible-role-kernel https://github.com/robertdebock/ansible-role-kernel]
 
}}
 
}}
 
{{Notes
 
{{Notes
|Notes=<translate>Pas de remerciements, c'est galère et on m'a pas aidé ;)</translate>
+
|Notes=Pas de remerciements, c'est galère et on m'a pas aidé ;)
 
}}
 
}}
 
{{PageLang
 
{{PageLang
 +
|Language=fr
 
|SourceLanguage=none
 
|SourceLanguage=none
 
|IsTranslation=0
 
|IsTranslation=0
|Language=fr
 
 
}}
 
}}
 
{{Tuto Status
 
{{Tuto Status
 
|Complete=Draft
 
|Complete=Draft
 
}}
 
}}

Version du 21 août 2023 à 21:52

Tutorial de avatarAurelpere | Catégories : Énergie, Outils

Tutoriel pour mettre en place un serveur nextcloud (équivalent drive google mais libre et adapté à l'organisation collective) sur un ordinateur monocarte autonome (alimenté en photovoltaïque avec stockage) Ce tutoriel n'est pas tout à fait "lowtech" en première approche dans la mesure où il s'agit d'informatique et de photovoltaique. Cependant, il se veut le plus didactique possible et rejoint la philosophie lowtech de partager les savoirs faires, éviter la tech inaccessible par la rétention d'information, la complexification by design ou la dépendance propriétaire by design. Nextcloud (service accessible sur framasoft ici : https://www.frama.space/abc/fr/) est un service assez cool pour s'organiser à plusieurs et permet de partager des fichiers, avoir un annuaire, un chat, de travailler en cooperation sur des fichiers libreoffice voire même de faire des visios. On peut aussi imaginer des infokiosques mobiles sur ce principe. Le tuto remet en question le marché des vpns, le photovoltaique avec stockage neuf et cher (en réalité le photovoltaique est devenu trop competitif face au pétrole et encore plus face au nucléaire!), et le marché des gafam et leur design de surveillance nocif pour la confiance et le lien social. Les commandes sont celles pour un systeme debian

Licence : Attribution (CC BY)

Introduction

Ce tutoriel est fait pour mettre en place un serveur nextcloud (équivalent drive google mais libre et adapté à l'organisation collective) sur un ordinateur monocarte autonome (de type raspberry pi et alimenté en photovoltaïque avec stockage).

Ce tutoriel n'est pas tout à fait "lowtech" en première approche dans la mesure où il s'agit d'informatique et de photovoltaique.

Cependant, il se veut le plus didactique possible et rejoint la philosophie lowtech de partager les savoirs faires, éviter la tech inaccessible par la rétention d'information, la complexification by design ou la dépendance propriétaire by design.

Nextcloud (service accessible sur framasoft ici : https://www.frama.space/abc/fr/) est un service assez cool pour s'organiser à plusieurs et permet de partager des fichiers, avoir un annuaire, un chat, de travailler en cooperation sur des fichiers libreoffice voire même de faire des visios.

On peut aussi imaginer des infokiosques mobiles sur ce principe.

Le tuto remet en question le marché des vpns, le photovoltaique avec stockage neuf et cher (en réalité le photovoltaique est devenu trop competitif face au pétrole et encore plus face au nucléaire!), et le marché des gafam et leur design de surveillance nocif pour la confiance et le lien social.

Les commandes sont celles pour un systeme debian.


Matériaux

Outils

autonomie.ods

Étape 1 - Materiel

Les liens vers le materiel photovoltaïque utilisé sont dans le fichier autonomie.ods ( lisible avec libreoffice) attaché à ce tutoriel.


-Orange pi :

Carte utilisée: Orange pi 5

ordinateur monocarte avec 4,8,16 ou 32 Go de ram

Un processeur à 2,4Ghz ARM Cortex-A55

Cette carte est compatible avec les disques nvme pcie 2.0 ssd 2242 ou 2230 (le pcie étant rétrocompatible cad que les 3.0, 4.0, 5.0 fonctionnent à vitesse réduite sur l'orange pi 5)

Meme principe qu'ici Ordinateur low-tech mais un peu plus puissant et on peut y brancher un disque dur (pratique pour nextcloud qui est fait pour héberger des fichiers) et ca démarre tout seul sur clé usb.

Prix: 143€ sur aliexpress en version 16 Go au 2 août 2023

Il est nécessaire d'acheter une petit boitier à 10€ (ou en fabriquer un ) en plus pour éviter que la carte soit à nue


-Stockage/disque dur:

Ici on utilise une clé usb Kingston 32Go et une carte nvme samsung de 512Go.

On peut brancher une disque dur de plus grande capacité soit en usb, soit une carte nvme (nvme pcie 2.0 ssd 2242 ou 2230. compatible avec les pcie 3.0 4.0 et superieur mais la vitesse est réduite).

Une carte nvme samsung 2242 de 500Go coute 50€ environ au 2 août 2023.


-clé usb : 10€


-cable rj45: 5€


-Box internet ou modem 4G selon votre connection internet.


-Panneau solaire: Ici on utilise un panneau flexible de 100W acheté 100€ neuf mais on en trouve à 30€ d'occasion sur leboncoin équivalent en puissance.

Note: le besoin théorique est de 4 panneaux de 100W avec 3,5h d'ensoleillement journalier en hiver pour couvrir les besoins en faisant tourner le serveur 24h/24. Voir fichier autonomie.ods


-batterie de voiture usée: utiliser sa précédente batterie de voiture plomb acide lorsqu'elle commence à lacher quand il fait trop chaud!


-convertisseur batterie 12/24V-usb 5V: 20€ evitez amazon si vous le pouvez)


- regulateur pwm 30A: 30€ neuf si on ne prend pas de la marque


-cable electrique mc4: 20€

Étape 2 - Installation de nextcloud 1/4

1.Téléchargement de dietpi et préparation de la clé usb


Pour l'installation, je vous conseille d'utiliser dietpi:


https://dietpi.com/#download


Selectionner votre ordinateur monocarte (orange pi dans le cas présent) puis telecharger


Dezipper l'archive obtenue.


Utiliser ensuite balena etcher pour créer une clé usb bootable pour installer dietpi sur votre ordinateur monocarte (orange pi 5 dans le cas présent mais ca fonctionne pareil sur d'autres ordinateurs monocartes).


https://etcher.balena.io/#download-etcher


Double cliquer sur le fichier téléchargé


Selectionner l'image de dietpi téléchargée, selectionner votre clé usb, cliquer sur flash.


Il ne vous reste plus qu'à brancher la clé usb sur le orangepi et il bootera automatiquement sur la clé usb.


Pour un raspberry pi, on utilise une carte sd mais on peut configurer le boot usb également (voir ici : https://makerhelp.fr/booter-un-raspberry-pi-4-sur-un-disque-dur-ou-un-ssd-en-usb/).


2. Installation de nextcloud


Allumer votre orangepi/raspberrypi avec la clé usb branchée.


Le login par défaut au démarrage est root et le mot de passe dietpi.


Suivre les menus que vous propose dietpi au premier démarrage pour installer le service nextcloud. C'es très facile, c'est en anglais et tout est automatisé. J'ai mis les images des menus à sélectionner pour l'installation de nextcloud dans cette etape et les étapes 3 à 6.


Vous pouvez vous déplacer dans les menus au clavier avec les fleches et la touche tab.


Selectionner avec espace et valider avec entree.


Voir images des étapes 3 à 6 pour le déroulement de l'installation et les entrées à sélectionner.



Étape 3 - Installation de nextcloud 2/4

Voir images

Étape 4 - Installation de nextcloud 3/4

Voir images

Étape 5 - Installation de nextcloud 4/4

Voir images

Étape 6 - configuration du reseau local

Brancher le orangepi ou le raspberry pi à votre box internet

(avec un cable rj45 pour le orange pi qui n'a pas le wifi par défaut, avec un cable rj45 ou en wifi pour votre raspberry pi)


Pour se connecter en ssh sans login avec dropbear au orange pi/raspberry pi

copier votre clé publique ssh dans le fichier authorized_keys

placé dans ~/.ssh/authorized_keys

ne pas oublier de faire un chmod 0600 sur ce fichier


Pour le orange pi, qui utilise dropbear:

ajouter la ligne DROPBEAR_EXTRA_ARGS="-s"

au fichier /etc/default/dropbear


Pour obtenir l'ip de votre dietpi ou raspberry pi, taper la commande suivante:


ip a


L'adresse ip s'affiche (192.168.198.160 sur l'image jointe)


Verifier que votre serveur est accessible depuis un autre ordinateur connecté à votre box en tapant dans la barre de votre navigateur (en remplacant adresse_ip par l'adresse trouvée avec la commande ip a)

http://adresse_ip/nextcloud


Rendre votre réseau local accessible depuis internet:


Configurer votre box pour rendre le serveur accessible . Pour rendre votre dietpi accessible depuis internet, il faut aller dans la configuration de votre box et

dans la section "NAT" "Port Forwarding" mettre le port 80 et renseigner l'ip trouvée précedemment ainsi que le port 443 et renseigner l'ip trouvée précédemment également.


Je n'ai pas de box donc je n'ai pas pu vous faire de screenshot mais vous trouverez des ressources sur internet pour cela. Par exemple https://pratiquepc.fr/ouvrir-des-ports-sur-une-livebox/


Vous pouvez ensuite trouver votre ip publique (celle accessible par tous sur internet) en tapant depuis votre console dietpi

curl ifconfig.me

(si curl n'est pas installé lancer la commande apt update && apt install curl)


Une fois la configuration NAT/Port Forwarding effectué, tester si nextcloud est accessible sur internet en rentrant l'adresse suivante dans la barre de votre navigateur internet:

http://adresse_ip_publique>/nextcloud

(remplacer adresse_ip_publique par l'adresse trouvée précédemment




Étape 7 - configuration d'un vpn wireguard pour rendre accessible votre serveur depuis une box 4g ou un modem 4g

[ATTENTION, cette section remet en question le marché des vpns!!]

Cette section n'est utile que pour les connections 4G/5G.


La 4g a l'avantage d'être mobile, avec une tres faible consommation du modem autour de 5W, et vous pouvez trouver des modems 4g sans wifi pour limiter la surface d'attaque de votre serveur (exemple netgear lm1200 autour de 150€).


qu'est ce qu'un vpn?

Les VPN sont principalement connus pour les "clients" vpn. C'est à dire que vous l'utilisez sur votre ordinateur pour vous "anonymiser".

Le vpn est en fait un tunnel entre votre ordinateur et un ordinateur distant à partir duquel partent vos requetes vers internet. Tout votre traffic en direction d'internet va passer par ce tunnel.

Internet pense ainsi que vos requetes proviennent de cet ordinateur distant. C'est à dire que votre ip publique devient celle de cet ordinateur distant.

Votre fournisseur d'accès ne voit que le traffic entre votre ordinateur et cet ordinateur distant, ce qui vous "anonymise".


En réalité, vous êtes anonyme vis à vis de votre fournisseur d'acces à internet, mais vous ne faites que déplacer la confiance vers votre fournisseur vpn qui lui peut voir votre traffic.


Le vpn a aussi d'autres utilités comme vous donner accès à des sites qui filtrent l'accès selon la "provenance" de votre adresse ip publique.


Vous pouvez tout à fait créer votre propre serveur vpn, et dans notre cas, ce serveur vpn permettra de rediriger les requetes internet faites sur ce serveur vers votre orange pi/raspberry pi en passant par le tunnel (dans l'autre sens que lorsque vous l'utilisez en tant que client pour accéder à internet).


Et nous allons voir comment.


Créer un serveur sur gandi.net


Créer un compte sur gandi.net, puis créer un serveur dans gandicloud vps. Voir les images jointes pour la création en 3 clics du serveur qui coute 5€/mois.


Pour créer une clé ssh et se logger voir

https://docs.gandi.net/fr/hebergement_web/connexion/cle_ssh.html

https://docs.gandi.net/fr/cloud/operations_courantes/connexion_serveur.html


Une fois loggé sur le serveur,

lancer la commande pour installer wireguard et les dépendances nécessaires

sudo apt update && sudo apt install wireguard resolvconf iptables nano -y


Lancer la même commande sur votre orange pi/raspberry pi.


lancer ensuite les commandes suivantes sur votre

serveur et sur le orange pi/raspberry pi pour creer les cles privés et publiques de wireguard

sudo mkdir -p /etc/wireguard

sudo sh -c 'wg genkey



Étape 8 - configuration d'un vpn openvpn pour rendre accessible votre serveur depuis une box 4g ou un modem 4g

Dans le cas où ca ne fonctionnerait pas avec wireguard, vous pouvez utiliser openvpn, (qui est configurable sans ligne de commande à la souris!).


Pour cela suivez les étapes suivantes sur votre serveur gandi (n'oubliez pas de désinstaller wireguard sur votre serveur et le dietpi avec sudo apt remove wireguard && sudo apt purge wireguard si ca n'a pas fonctionné avec wireguard)


wget -O- "https://as-repository.openvpn.net/as-repo-public.gpg"

Étape 9 - Rediriger les requetes du serveur vpn vers le orange pi-raspberry pi

Pour rediriger les requetes sur le serveur vers le orange pi / raspberry pi, on met en place un serveur logiciel web nginx:


sudo apt install nginx -y


On ouvre ensuite le fichier de configuration de ce logiciel serveur web:

sudo nano /etc/nginx/sites-enabled/default


Remplacer le contenu du fichier par ce qui suit:


server {

listen 80;

server_name localhost;

server_tokens off;

add_header Permissions-Policy "accelerometer=(),autoplay=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),fullscreen=(),geolocation=(),gyroscope=(),magnetometer=(),microphone=(),midi=(),payment=(),picture-in-picture=(),publickey-credentials-get=(),screen-wake-lock=(),sync-xhr=(self),usb=(),web-share=(),xr-spatial-tracking=()";

add_header Strict-Transport-Security "max-age=31536000 ; includeSubDomains";

add_header X-Frame-Options "SAMEORIGIN";

add_header X-Content-Type-Options nosniff;

add_header Content-Security-Policy "script-src 'self';";

add_header X-Permitted-Cross-Domain-Policies none;

add_header Referrer-Policy no-referrer;

add_header Clear-Site-Data "cache,cookies,storage";

location / {

proxy_pass http://10.10.0.2;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-Proto $scheme;

client_max_body_size 20M;

limit_except GET HEAD POST {deny all;}

}


}


Nginx va rediriger les requetes faites sur l'ip publique de votre serveur vers le nextcloud de votre orange pi / raspberry pi (ligne proxy_pass http://10.10.0.2;)


Vous pouvez tester si cela fonctionne en vous rendant sur la page:

http://ip_publique_de_votre_serveur_gandi


Attention, de nombreux navigateurs n'acceptent plus tres bien les redirections en http, voir la section https pour configurer le https (il faudra prendre un nom de domaine).

Étape 10 - Nom de domaine et adresse fixe

Le nom de domaine est l'adresse dans votre navigateur : par exemple lowtechlab.org.


Il vous permet de rendre votre serveur accessible plus facilement avec une adresse facilement memorisable. Il ne fait qu'associer le nom de domaine à l'adresse ip de votre serveur vpn ou l'adresse ip de votre box.


Que vous enregistriez un nom de domaine pour rediriger vers votre adresse ip ou pas (c'est nécessaire pour avoir le https cependant), il faut noter que par défaut, les fournisseurs d'accès vous octroient une adresse ip différente à chaque connexion.


Si vous souhaitez une adresse ip fixe, il faut en faire la demande à votre fournisseur d'accès. Ce n'est malheureusement plus très répandue dans les offres grands publics. Orange propose à la place un "DynDns" qui vous propose une adresse en lettres correspondant à votre adresse ip mais à laquelle vous ne pouvez pas rattacher facilement un nom de domaine. Certains gestionnaires de nom de domaine, comme infomaniak, proposent tout de même d'enregistrer un nom de domaine pour le dyndns qui est acessible assez facilement sans surcout chez les principaux opérateurs.


Si vous avez un accès en 4G, il n'est pas possible d'avoir une adresse ip fixe et votre adresse ip publique correspondra à un "pool". C'est à dire que l'opérateur alloue une adresse ip publique pour plusieurs clients, ne vous permettant pas d'utiliser la technique du NAT/Port Forwarding pour rendre votre dietpi accessible sur internet.

Il faudra alors prendre un nom de domaine pour votre serveur vpn qui redirige les requetes vers votre dietpi.


Voir image jointe pour l'enregistrement d'un nom de domaine: c'est la ligne nom "@" type A qu'il faut renseigner avec l'adresse ip publique de votre box ou de votre serveur vpn.






Étape 11 - Configuration https sur serveur gandi vpn

Si vous avez un vpn/serveur reverse proxy:


Sur votre serveur gandi, effectuer les opérations suivantes:


Creer un fichier /etc/nginx/conf.d/dietpi.conf et copier les lignes suivante:

server {

listen 80;

server_name localhost;

server_tokens off;

add_header Permissions-Policy "accelerometer=(),autoplay=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),fullscreen=(),geolocation=(),gyroscope=(),magnetometer=(),microphone=(),midi=(),payment=(),picture-in-picture=(),publickey-credentials-get=(),screen-wake-lock=(),sync-xhr=(self),usb=(),web-share=(),xr-spatial-tracking=()";

add_header Strict-Transport-Security "max-age=31536000 ; includeSubDomains";

add_header X-Frame-Options "SAMEORIGIN";

add_header X-Content-Type-Options nosniff;

add_header Content-Security-Policy "script-src 'self';";

add_header X-Permitted-Cross-Domain-Policies none;

add_header Referrer-Policy no-referrer;

#add_header Clear-Site-Data "cache,cookies,storage";

return 301 https://$host$request_uri;

location / {

return 301 https://$host$request_uri;

}

}

lancer ensuite les commandes suivantes:

sudo apt install letsencrypt

wget https://raw.githubusercontent.com/certbot/certbot/master/certbot-nginx/certbot_nginx/_internal/tls_configs/options-ssl-nginx.conf

sudo cp options-ssl-nginx.conf /etc/letsencrypt/options-ssl-nginx.conf

wget https://raw.githubusercontent.com/certbot/certbot/master/certbot/certbot/ssl-dhparams.pem

sudo cp ssl-dhparams.pem /etc/letsencrypt/ssl-dhparams.pem

sudo rm /etc/nginx/sites-enabled/default

sudo apt remove certbot

sudo apt install python3-certbot-nginx

obtenir les certificats (rempalcer __domain__ par votre domaine):

sudo certbot certonly --nginx -d __domain__

copier ensuite les lignes suivante dans votre fichier /etc/nginx/conf.d/dietpi.conf

en remplacant __domain__ par votre domaine

server {

listen 80;

server_name localhost;

server_tokens off;

add_header Permissions-Policy "accelerometer=(),autoplay=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),fullscreen=(),geolocation=(),gyroscope=(),magnetometer=(),microphone=(),midi=(),payment=(),picture-in-picture=(),publickey-credentials-get=(),screen-wake-lock=(),sync-xhr=(self),usb=(),web-share=(),xr-spatial-tracking=()";

add_header Strict-Transport-Security "max-age=31536000 ; includeSubDomains";

add_header X-Frame-Options "SAMEORIGIN";

add_header X-Content-Type-Options nosniff;

add_header Content-Security-Policy "script-src 'self';";

add_header X-Permitted-Cross-Domain-Policies none;

add_header Referrer-Policy no-referrer;

#add_header Clear-Site-Data "cache,cookies,storage";

return 301 https://$host$request_uri;

location / {

return 301 https://$host$request_uri;

}

}

server {

listen 443 ssl http2;

server_name localhost;

server_tokens off;

ssl_certificate /etc/letsencrypt/live/__domain__/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/__domain__/privkey.pem;

include /etc/letsencrypt/options-ssl-nginx.conf;

ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

add_header Permissions-Policy "accelerometer=(),autoplay=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),fullscreen=(),geolocation=(),gyroscope=(),magnetometer=(),microphone=(),midi=(),payment=(),picture-in-picture=(),publickey-credentials-get=(),screen-wake-lock=(),sync-xhr=(self),usb=(),web-share=(),xr-spatial-tracking=()";

add_header Strict-Transport-Security "max-age=31536000 ; includeSubDomains";

add_header X-Frame-Options "SAMEORIGIN";

add_header X-Content-Type-Options nosniff;

add_header Content-Security-Policy "script-src 'self';";

add_header X-Permitted-Cross-Domain-Policies none;

add_header Referrer-Policy no-referrer;

#add_header Clear-Site-Data "cache,cookies,storage";

location / {

proxy_pass http://10.10.10.2;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-Proto $scheme;

client_max_body_size 20M;

limit_except GET HEAD POST {deny all;}

}

}

redémarrer nginx

sudo systemctl restart nginx


Acceder à votre serveur en https en tapant l'adresse suivante dans votre navigateur

https://votre_domaine/nextcloud/


Vous pouvez alors configurer nextcloud en ligne par le compte administrateur

login par défaut sur dietpi: admin

mot de passe par défaut sur dietpi: mot de passe entrée à l'installation de dietpi




Étape 12 - Configuration https sur dietpi si vous etes branché en box




Étape 13 - Rendre votre serveur nomade et autonome énergétiquement en photovoltaique

[ATTENTION, cette section remet en question le marché du pétrole!!]


Que ce soit pour des raisons écologiques, ou pour d'autres raisons, il est intéressant d'avoir un serveur autonome énergétiquement,

qui ne dépendra pas des aléas du réseau électrique.


videos:

bases debutant(panneaux, regulateur, onduleur, conso/prod): https://www.youtube.com/watch?v=8Ft4XQj9lQ4

montage simple kit myshop solaires pour 230V:https://www.youtube.com/watch?v=SvmPEhPq_S8


kit prêts à acheter (si vous avez des subventions et des collègues qui coopèrent bien):

https://allo.solar/kit-solaire-1650w-230v-autoconsommation-aps.html?gclid=EAIaIQobChMIkY_fxvu-gAMVyLfVCh014gadEAYYASABEgJd8_D_BwE


solution intermédiaire intégrée:

Station énergie portable extensible 230V BLUETTI AC200MAX

EcoFlow River 2 pro


kits semi lowtech (celui utilisé dans ce guide):

panneaux photovoltaïque 100W et batterie de voiture plomb acide.


kit vraiment lowtech:

fabriquer sa batterie lithium à partir de déchets: voir barnabé chaillot

https://www.youtube.com/watch?v=_hwj7Ds50lU


rappel de base: branchement en série (+ sur - et + sur -) on ajoute le voltage et on garde le meme amperage, branchement en paralelle (+ sur +, - sur -) on ajoute l'amperage et on garde le meme voltage

idem pour les batteries: à mettre en paralelle pour garder la meme tension (voltage)


La première problématique du photovoltaïque lowtech autonome est le dimensionnement de l'installation.

Pour cela on trouve pas mal d'informations sur internet.

Vous pouvez utiliser la feuille libreoffice en piece jointe pour du dimensionnement "bricolé".


Le dimensionnement:

Le orange pi consomme environ 20W

Un disque usb supplémentaire consomme environ 5W

Un modem 4G consomme environ 5W

Soit un besoin constant de 35W pour prendre un peu de marge

le besoin journalier pour un serveur qui tourne 24h/24: 35W*24h=840Wh

Le besoin journalier pour un serveur qui tourne en journéee seulement:

en été: 35W*14h=490Wh

en hiver: 35W*8h=280Wh

Notez qu'il s'agit là d'un besoin moyen et si vous souhaitez dimensionner

pour des usages divers, il est recommander de procéder de façon plus précise

en calculant les besoins temps réels.

le dimensionnement du stockage par le temps d'autonomie :

Estimer les pertes à 20% et augmenter le besoin en consquénce:

besoin 24h/24=840/0,80=1050Wh

Estimer le temps d'autonomie voulue:

exemple 24h

On va alors dimensionner le stockage pour tenir 24h.

Pour des batteries en 12V: 1050Wh/12V=87,5Ah

Etant donné qu'on veut limiter la décharge des batteries à 50%, on prendra donc

87,5Ah/0,5=175Ah

Soit 2100 Wh en 12V


Selon les caractéristiques des panneaux (voir feuille de calcul), on peut estimer

la recharge de la batterie lorsque l'ensoleillement est minimal (en décembre).


Pour dimensionner, on peut utiliser la méthode du nombre de jours voulues pour recharger entierement les batteries:


Si on veut pouvoir recharger les batteries en un jour en hiver, il faut considérer la puissance produite par vos panneaux au jour d'hiver avec le moins d'ensoleillement.


Si on prend 3,5h pour le minimum, le nombre de panneaux nécessaire de puissance x Watt sera:

C_batterie:Capacité batterie en Wh

Dans notre exemple 2100Wh

T_hiver:temps de recharge journalier minimal en hiver (en h)

Dans notre exemple 3,5h

B_hiver:besoin journalier hors temps ensoleillement en hiver (en Wh)

Dans notre exemple (24h-3,5h)*35W=897Wh

n_voulus:nombre de jour voulus pour recharger entierement la batterie

Dans notre exemple 1

I:amperage sortie d'un panneau photovoltaique

Dans notre exemple 7A

U:tension sortie d'un panneau photovoltaique

Dans notre exemple 12V

Nb_panneaux=C_batterie+B_hiver*n_nvoulus/T_hiver*I*U*n_voulus


Dans l'exemple:

Nb_panneaux=(2100+897*1)/(3,5*12*7*1)

Il faudra donc 10 panneaux de 84W de 7A 12V


Noter que la valeur cardinale ici est à la ligne 42 du fichier joint, il s'agit

de l'ensoleillement journalier minimal en décembre à production nominale. Des valeurs de référence peuvent être trouvées sur

https://re.jrc.ec.europa.eu/api/v5_2/seriescalc?lat=44.203142&lon=0.616363&loss=14&angle=45&aspect=0&startyear=2005&endyear=2005&pvcalculation=1&peakpower=1&pvtechchoice=crystSi&browser=0&outputformat=csv


Mais rien ne vaut une mesure empirique pour vérifier tout ca.

Tout commentaire et "retour d'experience" est bienvenu à ce sujet en bas de cette page!

La problématique principale du photovoltaïque lowtech autonome est le stockage de l'énergie.

Vous pouvez lire les caractéristiques des panneaux qu'on vous a donné ou trouvés sur leboncoin à pas cher:

-puissance crete: elles s'aditionnent pour obtenir la puissance nécessaire trouvée lors de la phase de dimensionnement.

-tension : 12V,24V ou 48V. voir regles série/paralelle pour leur additions

-intensité: variable selon les modèles mais souvent inferieure à 10A

Pour recharger des batteries, en principe, si vous connectez votre panneaux en direct sur une batterie, il suffit que la tension

à la sortie de vos panneaux soit la même que celles de vos batterie, et ca devrait charger.


Il y a un composants importants à retenir pour charger correctement vos batteries:

le regulateur ou controleur de charge


il en existe de trois sortes: les tor (tout ou rien) les mppt (Maximum power point tracking) et les pwm (Pulse Width Modulation)

Les mppt accepte des puissances nominales plus élevées, cad des tensions et intensité plus élevées.

Ils sont composés d'un adaptateur DC/DC et d'un coupe circuit. Le mppt comprend également un adaptateur d'impédence.


Le régulateur ou controleur de charge: il permet de s'assurer que la tension et l'intensité de charge sont bonnes. Il coupe le circuit si

leurs valeurs dépassent les intervalles de référence (pour cela le regulateur arrete la charge temporairement et mesure la tension aux bornes des batteries).

Le mmpt a un "algorithme" électronique intégré qui va chercher le point de puissance optimal

grace a son adaptateur d'impedance.


Si vous connectez plusieurs panneaux et plusieurs batteries, il est essentiel d'avoir un bon regulateur pour que couper la charge correctement lorsque la batterie est chargée.

Les tensions de charge de référence sont 12V,24V et 48V.


Cependant, les prix des modèles augmentent avec la puissance nominales (qui va dépendre de l'amperage) qu'ils acceptent.


Pour limiter l'intensité du courant de la production photovoltaïque, il est plus judicieux d'utiliser des panneaux de plus forte puissance qui sont généralement à des tensions plus élevées

(rappel P=U*I,

rappel E=P*t se conserve dans un systeme fermé).

note: si le systeme de stockage par batterie ou l'appareil connecté à vos panneaux n'absorbe pas toute la puissance produite, et si le régulateur de charge ne coupe pas le circuit, le reste sera dégagé en chaleur.


L'amperage va aussi dependre de la capacité de stockage de vos batteries, dimensionnées pour couvrir vos besoins pendant une periode définie au dimensionnement.


Le courant de charge est calculé en divisant par 4 ou 5 la capacité nominale de la batterie exprimée en Ah qui devrait alors se recharger en 4 ou 5h. Cependant une batterie se rechargera aussi avec un courant de charge de la capacité nominale de la batterie divisée par 20 mais plus lentement (en 20h). Dimensionnez et/ou agencez vos panneaux en conséquence.

Des montages serie+paralelle peuvent permettrent d'ajuster tension et amperage.


Il y a enfin un dernier point sur lequel être attentif: le déclenchement de la recharge de la batterie par le regulateur/controleur de charge (qui déclenche quand la tension de la batterie diminue en dessous d'un certain seuil).


En effet, si la puissance soutirée à la batterie est trop faible, il est possible que le temps nécessaire à la décharger suffisamment avec votre consommation journalière pour déclencher la recharge dans le régulateur dépasse le temps d'ensoleillement journalier.


Dans ce cas, votre batterie ne se rechargera qu'un jour sur deux ou sur trois (selon le seuil de déclenchement de la recharge du regulateur).

C'est un paramètre à prendre en compte dans le dimensionnement (non inclus dans la feuille de calcul).


Le régulateur a 3 phases:


bulk: le regulateur laisse passer le courant


absorption (pour les mppt): la tension de charge augmente un peu pour créer une difference de potentiel suffisante pour continuer à charger la batterie presque pleine.

En théorie le courant de charge diminue lorsque la batterie est presque rechargée (courant de queue etc.)


floating: le regulateur alterne interupteur fermée et ouvert à une fréquence donnée pour maintenir la batterie chargée

En outre il faut prendre des précautions car la charge des batteries présente certains risques.


La charge de batteries en paralelle ou en série sur des batteries usagées qui n'ont pas les mêmes tensions ou intensité

présente en théorie des risques. En effet vous lirez un peu partout que la résistance des fils pour relier ces batteries

créee des différences de potentiels entre les batteries qui produisent des décharges d'une batterie envers une autre etc.

créant des risques d'explosion, de degazage pour les batteries plomb etc.

Il faut bien se rapeller que les batteries sont des assemblages de composants unitaires de faible tension mis en séries et

en paralelle pour obtenir un générateur de l'intensité et la tension voulue.


On parle souvent de "battery management system" (bms) "intégré" pour les batteries lithium ion.

En réalité le régulateur de charge est déjà un "bms". En théorie, le bms intégré s'assure que les tensions et les intensités

de chaque unité composant la batterie est la même et la rééquilibre au besoin.

On peut bien sûr s'interroger si tout ceci n'est pas une façon de rendre le stockage de l'énergie plus cher avec des composants BMS

artificiellement chers et si ce n'est pas une façon d'éviter de réutiliser des unités de batteries usagées.


Il est par exemple étonnat qu'il n'existe pas de BMS pour rééquilibrer automatiquement des batteries plomb acide, ce qui rendrait

utilisable toutes les batteries de décharges de l'industrie automobile pour stocker l'énergie photovoltaïque sans risque!


Dans tous les cas, si vous réutilisez des batteries au plomb, utilisez un régulateur pour éviter de continuer à charger vos batteries rechargées (risques de production d'hydrogene),

évitez les décharges profondes, et maintenez les batteries à une temperature constante autant que possible.


Étape 14 - Montage et test

Pour raison budgétaire on dimensionne sur un dixieme de la puissance de panneaux et un quart de la capacité de batterie de ce que la théorie nous a indiqué pour être autonome 24h/24h et en capacité de recharger en un seul jour en hiver, soit un panneau de 100W et une vieille batterie de voiture de 45Ah (100Ah en 12V).


Le regulateur utilisé n'accepte pas les panneaux 40V donc on n'a pas utilisé le panneau photovoltaïque d'occasion de 180W à 20€ trouvé sur leboncoin, mais je ne manquerai pas d'updater ce tuto avec dès que j'aurai le materiel et avec les valeurs de production hivernale si j'y arrive!

Étape 15 - Securisation du serveur

Au niveau sécurité, les failles connues des cpus peuvent être trouvées sous linux en faisant:

grep -r . /sys/devices/system/cpu/vulnerabilities

Cette commande sur le orange pi (cpu CortexA55) avec dietpi installé donne:

/sys/devices/system/cpu/vulnerabilities/spectre_v2:Mitigation: Unprivileged eBPF enabled

/sys/devices/system/cpu/vulnerabilities/itlb_multihit:Not affected

/sys/devices/system/cpu/vulnerabilities/mmio_stale_data:Not affected

/sys/devices/system/cpu/vulnerabilities/mds:Not affected

/sys/devices/system/cpu/vulnerabilities/l1tf:Not affected

/sys/devices/system/cpu/vulnerabilities/spec_store_bypass:Mitigation: Speculative Store Bypass disabled via prctl

/sys/devices/system/cpu/vulnerabilities/tsx_async_abort:Not affected

/sys/devices/system/cpu/vulnerabilities/spectre_v1:Mitigation: __user pointer sanitization

/sys/devices/system/cpu/vulnerabilities/retbleed:Not affected

/sys/devices/system/cpu/vulnerabilities/srbds:Not affected

/sys/devices/system/cpu/vulnerabilities/meltdown:Not affected


Ayant testé un orange pi un raspberry pi et un odroid, le probleme reste le même.

basiques:

principe de limiter surface d'attaque

on peut passer sa vie à augmenter la sécurité d'un systeme informatique...

trouver le bon compromis et évaluer les risques ou appats en termes financiers

(le hack est toujours possible)

Cependant quelques éléments car c'est un sujet sur lequel on trouve peu d'informations didactiques rassemblées.

acces physique sécurisé:


mot de passe grub

Lancer grub-mkpasswd-pbkdf2 dans un terminal

Copier le texte qui commence par grub.pbkdf2.sha512.10000.xy

où xy est une longue suite de lettres et de chiffres

Ajouter les lignes suivantes à un fichier /etc/grub.d/42_pw

en remplacant user par votre nom d'utilisateur linux et pw par le

texte précemment copié

cat << EOF

set superusers=user

password_pbkdf2 pw

EOF

lancer ensuite la commande

update-grub


bons mots de passes en general

pour changer le mot de passer de l'utilisateur courant taper

passwd

pour changer le mot de passe de l'utilisateur root taper

sudo passwd root


éventuellement vérification d'intégrité du boot (voir ordinateurs de purism par exemple)


chiffrer (crypter) ses supports de stockage:

https://doc.ubuntu-fr.org/tutoriel/chiffrer_ses_donnees

https://www.dwarmstrong.org/remote-unlock-dropbear/


sécurité d'un serveur:

apt update automatisé : https://www.linuxtricks.fr/wiki/debian-activer-les-mises-a-jour-automatique-avec-unattended-upgrades

lignes à inclure dans votre configuration ssh (/etc/ssh/sshd_config):

Port 22 #changer sur un autre port si vous le souhaitez

Protocol 2

PermitRootLogin no

StrictModes yes

PermitEmptyPasswords no

X11Forwarding no

Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr

MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com

KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256

AllowTcpForwarding no

MaxSessions 1

UsePAM yes

AllowUsers user #remplacer par les utilisateurs autorisées

AllowGroups group #remplacer par les groupes autorisés

PasswordAuthentication no

AuthorizedKeysFile .ssh/authorized_keys


firewall logiciel:

ufw: https://doc.ubuntu-fr.org/ufw

ou fichier de configuration iptables:

https://gitlab.com/aurelpere/bp028-hardening/-/blob/main/rhel_iptables_ipv4/files/server_firewall.sh


fail2ban: https://doc.ubuntu-fr.org/fail2ban

fail2ban pour nextcloud: https://tuxicoman.jesuislibre.net/2015/01/fail2ban-pour-owncloud-7-sur-debian-jessie.html


desactiver ipv6 (ou configurer le firewall aussi pour ipv6)

3 méthodes pour désactiver ipv6:

dans grub

avec sysctl

ajouter les lignes suivantes à /etc/systcl.conf

net.ipv6.conf.all.disable_ipv6 = 1

net.ipv6.conf.default.disable_ipv6 = 1

net.ipv6.conf.all.router_solicitations = 0

net.ipv6.conf.default.router_solicitations = 0

net.ipv6.conf.all.accept_ra_rtr_pref = 0

net.ipv6.conf.default.accept_ra_rtr_pref = 0

net.ipv6.conf.all.accept_ra_pinfo = 0

net.ipv6.conf.default.accept_ra_pinfo = 0

net.ipv6.conf.all.accept_ra_defrtr = 0

net.ipv6.conf.default.accept_ra_defrtr = 0

net.ipv6.conf.all.autoconf = 0

net.ipv6.conf.default.autoconf = 0

net.ipv6.conf.all.accept_redirects = 0

net.ipv6.conf.default.accept_redirects = 0

net.ipv6.conf.all.accept_source_route = 0

net.ipv6.conf.default.accept_source_route = 0

net.ipv6.conf.all.max_addresses = 1

net.ipv6.conf.default.max_addresses = 1

avec le network manager nmcli

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/using-networkmanager-to-disable-ipv6-for-a-specific-connection_configuring-and-managing-networking


sécuriser le serveur en cas de multi utilisateur ou autres utilisateurs ayant obtenu un accès:


listes de fichiers à sécuriser (permissions etc.): https://linuxfr.org/forums/linux-general/posts/liste-des-fichiers-linux-a-securiser-owner-group-permissions-setuid-setgid-sticky-bit


guides de durcissement anssi : https://www.ssi.gouv.fr/guide/recommandations-de-securite-relatives-a-un-systeme-gnulinux/


Pour aller plus loin en termes de sécurité:


firewall physique libre: pcengines/ logiciel libre OPNSense


fail2ban avec listes géographiques: https://thecustomizewindows.com/2016/11/fail2ban-geoip-action-script-block-ssh-country/


Créer un sas de connection à votre service en ligne (MySafeip): https://linuxfr.org/news/mysafeip-un-tiers-de-confiance-pour-votre-pare-feu

sécuriser les services systemd linux: https://github.com/juju4/ansible-harden-systemd


compiler un kernel :

https://doc.ubuntu-fr.org/tutoriel/comment_compiler_un_kernel_de_kernel.org

https://github.com/robertdebock/ansible-role-kernel

Notes et références

Pas de remerciements, c'est galère et on m'a pas aidé ;)

Commentaires

Draft