====== É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