Config serveur Axiom -- vm duniter-v1-data

Je sais pas où discuter de ça, mais je me dis que c’est plus simple en public.

@poka j’ai changé la config de Duniter 1.8.6 dans la vm, est-ce que tu peux créer une entrée nginx pour lui ?

  • extérieur : duniter-v1-g1.axiom-team.fr:443
  • intérieur : localhost:10020

À propos du nom à rallonge, je pense que ça sera plus clair comme ça quand il y aura des duniter-v2-gdev, duniter-v2-gtest, duniter-v2-g1

Et pour wotwizard, je propose de préparer :

  • extérieur : gql.wotwizard.axiom-team.fr:443 / intérieur localhost:10030
  • extérieur : html.wotwizard.axiom-team.fr:443 / intérieur localhost:10040
  • extérieur : ui.wotwizard.axiom-team.fr:443 / intérieur localhost:10050

Et comme ça je peux installer et tester wwServer, wwClient, et wwUI. @gerard94 peux-tu me préciser :

  • ce qui ne fonctionnait pas avec Duniter v1.8.6 pour wotwizard
  • comment démarrer les dernières versions de wotwizard

Si on arrive au bout de ça, on aura un nouveau nœud wotwizard plus performant avec un uptime plus élevé j’ose espérer !

1 Like

C’est fait.

Cela dit cela ne fonctionnera que lorsque tu auras troqué 127.0.0.1 contre 0.0.0.0 :wink:

tcp        0      0 127.0.0.1:10020         0.0.0.0:*               LISTEN      26962/duniter_defau
1 Like

Haha si c’est pas magique :slight_smile: https://duniter-v1-g1.axiom-team.fr/
https://duniter-v1-g1.axiom-team.fr/blockchain/current

1 Like

De mon côté c’est tout comme, une seule commande:

$ nvh duniter-v1-g1.axiom-team.fr 135 10020 ssl=1
1 Like

C’est quoi ? Pratique en effet :smiley:

Ptit script custom qui tourne depuis 5 ans sur toutes mes infra proxmox:

$ cat /opt/scripts/link/nvh
#/bin/bash
red=`tput setaf 1`
green=`tput setaf 2`
yellow=`tput setaf 3`
bold=`tput bold`
blue=`tput setaf 4`
reset=`tput sgr0`

sslRedir='/etc/nginx/templates/ssl-bloc-redirect.txt'

###
# Get Arguments
###
	args="$@"
	domain="$1"
	vm="$2"
	port="$3"

parseArgs(){
	i=0
	for cmd in $args; do
		arg[$i]=$cmd
		[[ ${arg[$i]} == "p2vm-providing8642" ]] && echo "## Commandé depuis p2vm ##" && p2vmProvided=1
		[[ ${arg[$i]} =~ "domain=" ]] && domain=$(echo ${arg[$i]} | grep "\<domain=" | awk -F '=' '{ print $2 }')
		[[ ${arg[$i]} =~ "vm=" ]] && vm=$(echo ${arg[$i]} | grep "\<vm=" | awk -F '=' '{ print $2 }')
		[[ ${arg[$i]} =~ "port=" ]] && port=$(echo ${arg[$i]} | grep "\<port=" | awk -F '=' '{ print $2 }')
		[[ ${arg[$i]} =~ "tpl=" ]] && tpl=$(echo ${arg[$i]} | grep "\<tpl=" | awk -F '=' '{ print $2 }')
		[[ ${arg[$i]} =~ "ssl=" ]] && ssl=$(echo ${arg[$i]} | grep "\<ssl=" | awk -F '=' '{ print $2 }')
		((i++))
	done
}
parseArgs

ipvm=$(echo "scale=1; $vm-100" | bc)
newVHost="/etc/nginx/conf.d/$vm/$domain.conf"

case $tpl in
    odoo) tplVHost='/etc/nginx/templates/odoo.txt';;
    nextcloud) tplVHost='/etc/nginx/templates/nextcloud.txt';;
    * ) tplVHost='/etc/nginx/templates/vhost.txt';;
esac

addSSL(){
	echo "${yellow}Création du certificat SSL pour $domain...${reset}"
	/usr/local/bin/certbot --nginx certonly -d $domain && echo "${green}Le certificat de $domain a bien été déployé${reset}" || echo "${red}Une erreur s'est produite lors de la création du certificat SSL${reset}"

	sed -i -e 's/listen 80;/listen 443 ssl;/' $newVHost
	sed -i -e '/includes\/errors.conf/i \\   listen [::]:443 ssl;\n   include includes/ssl.conf;' $newVHost
	sed -i -e '/error_log/i \\   ssl_certificate /etc/letsencrypt/live/$domain/fullchain.pem;\n   ssl_certificate_key /etc/letsencrypt/live/$domain/privkey.pem;\n' $newVHost
	cat $sslRedir >> $newVHost
	sed -i -e 's/$domain/'"$domain"'/g' $newVHost
}

if [[ -e $newVHost ]]; then
	echo "${yellow}Le virtualhost existe déjà${reset}"
	if [[ -z $(grep "ssl_certificate_key" $newVHost) ]]; then
		echo "Certificat SSL non présent"
		if [[ $ssl =~ ^(1|true|oui)$ ]]; then
			echo "Installation du certificat SSL ..."
			addSSL
			service nginx reload && echo "${green}Le domaine $domain à bien été créé et configuré =)${reset}" || echo "${red}Impossible de recharger nginx${reset}"
			exit 0
		else
			echo "${yellow}Aucune action n'a été effectué${reset}"
			exit 0
		fi
	else
		echo "${yellow}Le SSL est déjà configuré sur le VHost${reset}"
		exit 0
	fi
fi


create_vhost(){
	[[ ! -d /etc/nginx/conf.d/$vm ]] && mkdir /etc/nginx/conf.d/$vm
	echo "${yellow}Génération du nouveau VirtualHost...${reset}"
	cp $tplVHost $newVHost
	sed -i -e 's/$domain/'"$domain"'/g' $newVHost
	sed -i -e 's/$ipvm/'"$ipvm"'/g' $newVHost
	sed -i -e 's/$vm/'"$vm"'/g' $newVHost
	sed -i -e 's/$port/'"$port"'/g' $newVHost
    if [[ $ssl =~ ^(1|true|oui)$ ]]; then
        printf "${yellow}Configuration SSL du VHost...${reset}"
        addSSL && echo "${green}OK${reset}" || echo "${red}KO${reset}"
    else
        echo "${yellow}Aucune configuration SSL ne sera effectué.${reset}"
    fi
	service nginx reload && echo "${green}Le domaine $domain à bien été créé et configuré =)${reset}" || echo "${red}Impossible de recharger nginx${reset}"
}

echo "Nous allons créer le domaine ${blue}$domain ${reset}qui sera lié au port ${blue}$port ${reset}de la VM ${blue}$vm.${reset}"
if [[ $p2vmProvided != 1 ]]; then
	read -p "${bold}Confirmez-vous cette action ?${reset} (${green}y${reset} ou ${red}n${reset}) : " yn
	case $yn in
		[Yy]* ) create_vhost break;;
		[Nn]* ) echo "${red}Fermeture du script${reset}" && exit;;
		* ) echo "Merci de sélectionner yes ou no";;
	esac
else
	create_vhost
fi

exit 0

Spécifique à mon type d’infra.


$ nvh duniter-v1-g1.axiom-team.fr 135 10020 ssl=1
Le virtualhost existe déjà
Certificat SSL non présent
Installation du certificat SSL ...
Création du certificat SSL pour duniter-v1-g1.axiom-team.fr...
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for duniter-v1-g1.axiom-team.fr

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/duniter-v1-g1.axiom-team.fr/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/duniter-v1-g1.axiom-team.fr/privkey.pem
This certificate expires on 2023-01-23.
These files will be updated when the certificate renews.

NEXT STEPS:
- The certificate will need to be renewed before it expires. Certbot can automatically renew the certificate in the background, but you may need to take steps to enable that functionality. See https://certbot.org/renewal-setup for instructions.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Le certificat de duniter-v1-g1.axiom-team.fr a bien été déployé
Le domaine duniter-v1-g1.axiom-team.fr à bien été créé et configuré =)

Haha incroyable :star_struck:

D’ailleurs, je m’en aperçois maintenant, mais est-ce qu’on peut ajouter pour ws2p

  • extérieur : duniter-v1-g1.axiom-team.fr:443/ws2p
  • intérieur : 0.0.0.0:10025

Je l’ai mis sur 10025 pour garder une sorte de continuité, ça colle avec tes conventions ?

[edit] merci ça fait joli dans cesium

1 Like

Je viens de reéditer le vhost pour autoriser websocket sur /ws2p, ça devrait être ok.

1 Like

En fait, c’est bon, j’arrive bien à faire fonctionner les deux ensemble : https://html.wotwizard.trentesaux.fr/

[edit] en fait, j’ai besoin d’un rappel : comment indiquer à wotwizard un port différent du port par défaut ?

1 Like

@tuxmain, je te propose la démarche suivante :

  1. @poka ajoute les entrées wotmap.axiom-team.fr et worldwotmap.axiom-team.fr vers la vm
  2. tu branches ces deux services
  3. une fois que ça marche, je pointe wotmap.duniter.org et worldwotmap.duniter.org dessus

Pas besoin de redondance pour ces services robustes, juste de garder les noms de domaine que les gens connaissent.

Ok je fais ça maintenant.

1 Like

@poka C’est bon, j’ai ajouté les (world)?wotmap dans le script. Pour la config du serveur web il faut juste servir les dossiers statiques :

  • /home/axiom/worldwotmap/www/
  • /home/axiom/wotmap/

Edit: donc @HugoTrentesaux on verra demain si tout marche bien, à moins que tu préfères dès maintenant.

1 Like

Si vous pouvez faire les config nginx local pour webserver (ports 10030 et 10040 du coup, sans ssl), je m’occuperai ainsi du reverse proxy

1 Like

Tu veux dire qu’on fait tourner un nginx dans la vm ? C’est pas plus simple de faire comme dit tuxmain d’accéder en lecture seule à un volume dans la vm ?

Et oui, on peut attendre un jour même si ça devrait pas être trop dur de lancer le script du cron en oneshot pour voir si ça marche :smiley:

Non pas du tout, c’est ainsi que mon infra fonctionne.

Il ne faut surtout pas confondre le métier nginx webserver, et le métier nginx reverse proxy, qui n’ont rien avoir.

1 Like

Par contre je n’ai jamais fait de config nginx donc je ne garantis rien… (j’utilise Apache chez moi)

Ok alors je m’en occupe.

server {
  listen 10030;

  access_log /var/log/nginx/wotmap_access.log;
  error_log /var/log/nginx/wotmap_error.log;

  root /home/axiom/wotmap/;

  location / {
    try_files $uri $uri/ =404;
  }
}
server {
  listen 10040;

  access_log /var/log/nginx/worldwotmap_access.log;
  error_log /var/log/nginx/worldwotmap_error.log;

  root /home/axiom/worldwotmap/www/;

  location / {
    try_files $uri $uri/ =404;
  }
}
1 Like

ah ok sinon je le fais, apache ça le fait aussi en soit c’est juste qu’on utilise déjà nginx dans cette VM pour https://g1-migrator.axiom-team.fr

C’est bon ça marche, j’ai appliqué les conf server d’hugo et créé les vhosts.

https://worldwotmap.axiom-team.fr

2 Likes

Donc je peux changer les CNAME wotmap.duniter.org et worldwotmap.duniter.org ?

1 Like