====== Étapes pour s'auto-héberger ====== **Pourquoi ?** Plus on planche sur l'autohébergement, plus c'est une évidence technologique (on cherche forcément à optimiser), écologique (ne circule dans les tuyaux que ce qui est consulté), politique (indépendance, autonomie, contrôle), ... à l'exact opposé des gafam et autres 5g... ===== Acheter un nom de domaine ===== Pour pouvoir être visible de l'Internet et gérer sa propre messagerie, il faut avoir un nom de domaine. [[https://www.bookmyname.com/|BookmyName]], rattaché à [[https://fr.wikipedia.org/wiki/Iliad|Iliad]], vend des noms de domaine à prix coûtant. Choses à savoir : * il faut payer chaque année * le prix varie en fonction du [[https://fr.wikipedia.org/wiki/Domaine_de_premier_niveau|tld]]. Un .eu sera moins cher qu'un .fr ou qu'un .org * certains [[https://fr.wikipedia.org/wiki/Domaine_de_premier_niveau|tld]] ont des contraintes particulières. L'organisme délégataire à toute liberté de gestion. La France exige une domiciliation en France pour le .fr. La mairie de Paris gère le .paris * tous les [[https://fr.wikipedia.org/wiki/Domaine_de_premier_niveau|tld]] ont [[https://www.iana.org/domains/root/db|un sens]] et participent à l'identité du domaine. **.edu**(cation), **.com**(mercial), **.t**(u)**v**(alu), **.**(british )**i**(ndian )**o**(cean territory) * la vente de noms de domaine n'ayant pas de limite, c'est une [[https://www.capital.fr/economie-politique/comment-tuvalu-a-fait-fortune-avec-lextension-web-tv-1358864|source importante de revenus]] pour certains pays ===== Option 1 Prendre un VPN "classique"===== ==== Introduction ==== Pour que le site soit accessible de façon permanente sur Internet, il dois disposer d'une adresse fixe. Internet fonctionne actuellement, encore, avec des IPv4 qui sont en nombre limité. Il faut donc une IPv4 fixe. Quelques [[https://fr.wikipedia.org/wiki/Fournisseur_d%27acc%C3%A8s_%C3%A0_Internet|FAI]] la fournisse gratuitement. C'est le cas de Free® et de Nerim®. D'autres la font payer voire exige de passer à un contrat professionnel comme Orange®. Comme sont nom l'indique, cette adresse ne peut pas bouger. Une autre solution consiste à prendre un [[https://fr.wikipedia.org/wiki/R%C3%A9seau_priv%C3%A9_virtuel|VPN]]. La machine n'est accessible que lorsque le [[https://fr.wikipedia.org/wiki/R%C3%A9seau_priv%C3%A9_virtuel|VPN]] est monté. l'IP est fixe mais la machine déplaçable. Des associations fournissent des VPN. * [[https://www.fdn.fr/|FDN]] * [[https://www.franciliens.net/|franciliens.net]] * [[https://ffdn.org/fr/membres|FFDN]] ==== Configurer son VPN ==== si absent, installation manuelle, (un problème est en [[https://github.com/labriqueinternet/vpnclient_ynh/pull/74/files|cours de résolution]] pour yunohost4 et php 7.3 sudo apt install openvpn une fois les fichiers édités, les mettre dans /home/admin puis les déplacer dans /etc/openvpn et /etc/openvpn/client (si absent, sudo mkdir /etc/openvpn/client) sudo systemctl start openvpn.service sudo systemctl stop openvpn sudo openvpn /etc/openvpn/client.conf en cas de plantage vpn, vérifier et rétablir systemctl sudo systemctl status openvpn@client.service sudo systemctl start openvpn@client.service sudo systemctl enable openvpn@client.service === avec une clé (ta.key) === 3 fichiers /etc/openvpn/client.conf /etc/openvpn/client/auth.txt /etc/openvpn/client/ta.key === sans clé === 4 fichiers à installer ca /etc/openvpn/client/ca.crt cert /etc/openvpn/client/client.crt key /etc/openvpn/client/client.key et le /etc/openvpn/client.conf === finalisation installation === modifier les droits sur les fichiers et vérifier avec ls -ahl /etc/openvpn sudo chmod 644 /etc/openvpn/client.conf sudo chmod 755 /etc/openvpn/client sudo chmod 600 /etc/openvpn/client/auth.txt sudo chmod 644 /etc/openvpn/client/ta.key ===== option 2 VPN sur un VPS ===== ==== Introduction ==== L'intérêt est de passer par wireguard, beaucoup plus efficace qu'openvpn, et améliorer les débits. Également permettre un accès pour le la collaboration distante (DaVinci Resolve par exemple) Un tuto pour configurer le VPN sur le VPS https://forum.yunohost.org/t/homemade-wireguard-vpn-on-a-vps-server/15662/74?page=4 En cas de soucis accès internet avec tunnel wireguard https://www.reddit.com/r/WireGuard/comments/tr1tq7/client_has_no_internet_access_while_connected_to/ ==== Config WG sur VPS ==== installer debian 11 installer WG fichier /etc/wireguard/wg0.conf : [Interface] Address = 10.66.66.1/24,fd42:42:42::1/64 ListenPort = 51820 PrivateKey = ****** PostUp = bash /etc/wireguard/PostUp.sh PostDown = bash /etc/wireguard/PostDown.sh #PostUp = iptables -I INPUT -p udp --dport 51820 -j ACCEPT #PostUp = iptables -I FORWARD -i ens6 -o wg0 -j ACCEPT #PostUp = iptables -I FORWARD -i wg0 -j ACCEPT #PostUp = iptables -t nat -A POSTROUTING -o ens6 -j MASQUERADE #PostUp = ip6tables -I FORWARD -i wg0 -j ACCEPT #PostUp = ip6tables -t nat -A POSTROUTING -o ens6 -j MASQUERADE #PostDown = iptables -D INPUT -p udp --dport 51820 -j ACCEPT #PostDown = iptables -D FORWARD -i ens6 -o wg0 -j ACCEPT #PostDown = iptables -D FORWARD -i wg0 -j ACCEPT #PostDown = iptables -t nat -D POSTROUTING -o ens6 -j MASQUERADE #PostDown = ip6tables -D FORWARD -i wg0 -j ACCEPT #PostDown = ip6tables -t nat -D POSTROUTING -o ens6 -j MASQUERADE ### Client yunohost [Peer] PublicKey = ****** PresharedKey = ****** AllowedIPs = 10.66.66.2/32,fd42:42:42::2/128 Fichier PostUp.sh iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens6 -j MASQUERADE; #ip6tables -A FORWARD -i wg0 -j ACCEPT; #ip6tables -t nat -A POSTROUTING -o ens6 -j MASQUERADE; # icmp iptables -A INPUT -p icmp -j ACCEPT; #ip6tables -A INPUT -p ipv6-icmp -j ACCEPT; # Routing TCP port 25 and 587 from Yunohost Server to internet for j in 25 587 do iptables -t nat -A POSTROUTING -s 10.66.66.2 -p tcp --dport $j -j SNAT --to 217.160.99.43; iptables -A FORWARD -s 10.66.66.2 -p tcp --dport $j -j ACCEPT; #ip6tables -t nat -A POSTROUTING -s fd42:42:42::2 -p tcp --dport $j -j SNAT --to [insert public IPV6 of the VPS]; #ip6tables -A FORWARD -s fd42:42:42::2 -p tcp --dport $j -j ACCEPT; done # Routing TCP port required from VPN server to Yunohost server for i in 25 53 80 140 443 587 993 1194 1195 1935 5222 5269 5432 5665 8099 8443 8447 50059 51820 do iptables -t nat -A PREROUTING -i ens6 -p tcp --dport $i -j DNAT --to-destination 10.66.66.2; iptables -A FORWARD -d 10.66.66.2 -p tcp --dport $i -j ACCEPT; #ip6tables -t nat -A PREROUTING -i ens6 -p tcp --dport $i -j DNAT --to-destination fd42:42:42::2; #ip6tables -A FORWARD -d fd42:42:42::2 -p tcp --dport $i -j ACCEPT; done # Routing UDP port required from VPN server to Yunohost server iptables -A PREROUTING -t nat -i ens6 -p udp --dport 8099 -j DNAT --to-destination 10.66.66.2 # Save and quit (CTRL+O, CTRL+X) ==== Config client WG sur Yunohost ==== /opt/yunohost/wireguard_client/vps.conf : [Interface] PrivateKey = ****** Address = 10.66.66.2/32,fd42:42:42::2/128 DNS = 1.1.1.1,1.0.0.1 PostUp = bash /opt/yunohost/wireguard_client/PostUp.sh PostDown = bash /opt/yunohost/wireguard_client/PostDown.sh [Peer] PublicKey = ***** PresharedKey = ****** Endpoint = ***.**.**.**:51820 AllowedIPs = 0.0.0.0/0,::/0 PersistentKeepalive = 25 Le fichier PostUp.sh # PostUp.sh #Begin IPV4 iptables -w -N vpnclient_in; iptables -w -N vpnclient_out; iptables -w -N vpnclient_fwd; iptables -w -A vpnclient_in -p icmp -j ACCEPT; iptables -w -A vpnclient_in -s 10.66.66.2/24 -j ACCEPT; #Allowing required TCP ports for i in 25 53 80 140 443 587 993 1194 1195 1935 5222 5269 5462 5665 51820 do iptables -w -A vpnclient_in -p tcp --dport $i -j ACCEPT; done iptables -w -A vpnclient_in -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT; iptables -w -A vpnclient_in -j DROP; iptables -w -A vpnclient_out -j ACCEPT; iptables -w -A vpnclient_fwd -j DROP; iptables -w -I INPUT 1 -i wg0 -j vpnclient_in; iptables -w -I OUTPUT 1 -o wg0 -j vpnclient_out; iptables -w -I FORWARD 1 -o wg0 -j vpnclient_fwd; #End IPV4 #Begin IPV6 #ip6tables -w -N vpnclient_in; #ip6tables -w -N vpnclient_out; #ip6tables -w -N vpnclient_fwd; #ip6tables -w -A vpnclient_in -p ipv6-icmp -j ACCEPT; #ip6tables -w -A vpnclient_in -s fd42:42:42::2/64 -j ACCEPT; #Allowing required TCP ports #for i in 25 80 140 443 587 993 5222 5269 #do # ip6tables -w -A vpnclient_in -p tcp --dport $i -j ACCEPT; #done #ip6tables -w -A vpnclient_in -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT; #ip6tables -w -A vpnclient_in -j DROP; #ip6tables -w -A vpnclient_out -j ACCEPT; #ip6tables -w -A vpnclient_fwd -j DROP; #ip6tables -w -I INPUT 1 -i wg0 -j vpnclient_in; #ip6tables -w -I OUTPUT 1 -o wg0 -j vpnclient_out; #ip6tables -w -I FORWARD 1 -o wg0 -j vpnclient_fwd; #End IPV6 # Save and quit (CTRL+O, CTRL+X) Le fichier PostDown.sh : # PostDown.sh #Begin IPV4 iptables -w -F vpnclient_in; iptables -w -F vpnclient_out; iptables -w -F vpnclient_fwd; iptables -D INPUT -i wg0 -j vpnclient_in; iptables -D FORWARD -o wg0 -j vpnclient_fwd; iptables -D OUTPUT -o wg0 -j vpnclient_out; iptables -w -X vpnclient_in; iptables -w -X vpnclient_out; iptables -w -X vpnclient_fwd; #End IPV4 #Begin IPV6 #ip6tables -w -F vpnclient_in; #ip6tables -w -F vpnclient_out; #ip6tables -w -F vpnclient_fwd; #ip6tables -D INPUT -i wg0 -j vpnclient_in; #ip6tables -D FORWARD -o wg0 -j vpnclient_fwd; #ip6tables -D OUTPUT -o wg0 -j vpnclient_out; #ip6tables -w -X vpnclient_in; #ip6tables -w -X vpnclient_out; #ip6tables -w -X vpnclient_fwd; #End IPV6 # Save and quit (CTRL+O, CTRL+X) ===== Trouver une machine ===== ===== Installer Debian Stretch ===== ===== Installer YunoHost ===== * https://yunohost.org/#/install_manually ===== Trucs et astuces ===== ==== Personnaliser l'interface web ==== [[https://yunohost.org/fr/theming?q=%2Ftheming|On peut changer le thème de fond et la tuile volante]] ==== Bridge de communication ==== https://github.com/42wim/matterbridge https://github.com/YunoHost-Apps/mautrix_whatsapp_ynh ==== Vérifier l'état des migrations ==== sudo yunohost tools migrations state | grep buster pour réactiver une migration "passée" sudo sed -i '/buster/d' /etc/yunohost/migrations.yaml ==== Extensions forum Flarum ==== sudo su app=flarum cd /var/www/$app sudo -u $app php7.4 composer.phar require vendor/extension ==== Nextcloud sur serveur Yunohost ==== enlever les fichiers exemples /var/www/nextcloud/core/skeleton Pour avoir [[https://github.com/YunoHost-Apps/onlyoffice_ynh|onlyoffice]] (collaboration traitement de texte, tableur, présentation) fonctionnel dans nextcloud, il faut l'installer sur un sous domaine spécifique et déclarer les divers paramètres zone DNS chez le registar (nom de domaine) ainsi que dans l'appli nextcloud. pour l'appli social dans nextcloud, ajouter en root "location ^~ /.well-known { return 301 /nextcloud/index.php$uri; }" juste avant "try_files $uri $uri/ =404;" dans le fichier /etc/nginx/conf.d/domain.tld.d/nextcloud.conf puis relancer //nginx sudo systemctl reload nginx// NextCloud possède une corbeille (fichiers vidés au bout de 30 jours) et conserve aussi les anciennes versions des fichiers. === Pour vider manuellement === vider manuellement la corbeille: Se placer dans le dossier /var/www/NextCloud, et lancer: //sudo -u nextcloud php7.3 occ trashbin:cleanup --all-users// supprimer les anciennes versions des fichiers : //sudo -u nextcloud php7.3 occ versions:cleanup// Sous [[s_auto_heberger|yunohost]], Il faut être sous buster et php7.3 === Disparition de la "tuile volante" accueil yunohost === Nextcloud <20.0.8~ynh1 The problem can be circumvented by manually adding the following bit of code (normally injected by NGINX) before at line 29 of /var/www/nextcloud/core/templates/layout.user.php: This bit of code is not present without this hack. So I guess the matter lies in /etc/nginx/conf.d/yunohost_panel.conf.inc where NGINX is instructed to insert the code at the place I mentioned above. Nextcloud >20.0.8~ynh1 add in /etc/nginx/conf.d/your_nextcloud_instance_domain/nextcloud.conf under the line fastcgi_param front_controller_active true; fastcgi_param HTTP_ACCEPT_ENCODING ""; # Disable encoding of nextcloud response to inject ynh scripts then reload nginx sudo systemctl reload nginx ==== Les emails avec free ==== sudo nano +76 /etc/postfix/main.cf` ajouter une ligne `smtp_address_preference=ipv6` ensuite CTRL+O puis ENTREE pour enregistrer et enfin `systemctl reload postfix.service` ===== Ressources ===== * https://yunohost.org/#/admindoc_fr https://www.thinkwiki.org/wiki/Wacom_Serial_Tablet_PC_Stylus#Setting_up_your_Xorg.conf