Outils pour utilisateurs

Outils du site


auto-hebergement

É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. BookmyName, rattaché à Iliad, vend des noms de domaine à prix coûtant. Choses à savoir :

  • il faut payer chaque année
  • le prix varie en fonction du tld. Un .eu sera moins cher qu'un .fr ou qu'un .org
  • certains 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 tld ont 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 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 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 VPN. La machine n'est accessible que lorsque le VPN est monté. l'IP est fixe mais la machine déplaçable.

Des associations fournissent des VPN.

Configurer son VPN

si absent, installation manuelle, (un problème est en 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

Trucs et astuces

Personnaliser l'interface web

Bridge de communication

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 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 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 </head> at line 29 of /var/www/nextcloud/core/templates/layout.user.php:

<script type=“text/javascript” src=“/ynh_portal.js”></script><link type=“text/css” rel=“stylesheet” href=“/ynh_overlay.css”></link><script type=“text/javascript” src=“/ynhtheme/custom_portal.js”></script><link type=“text/css” rel=“stylesheet” href=“/ynhtheme/custom_overlay.css”></link>

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

auto-hebergement.txt · Dernière modification : 2023/12/13 12:25 de admin_elemac