[Sequanux-ml] Mise en place d'un serveur dédié

Julien Escario escario at azylog.net
Ven 24 Avr 22:45:05 CEST 2020


Bonsoir,
N'étant pas intervenu récemment sur la liste, je crois que c'est à mon
tour de filer quelques tuyaux.

Il me semble avoir lu que tu étais sous Debian 10.

Pour faire a proprement avec Nginx en mode reverse-proxy + certificat
SSL, voici quelques astuces :

Déjà, installer nginx et virer Apache :
# apt remove --purge apache2
# apt install nginx-full

Notes :
* lorsque ce sont des commandes, la mention '#' signifie qu'elle doit
être tapée en root ou vec sudo devant.
* Dans les fichiers de config, le # est utilisé pour commenter la ligne

Ensuite, il faut que tu créé un vhost dans nginx. Edites le fichier
/etc/nginx/sites-available/ledomaine.com et mets dedans :
server {
  # On écoute sur IPv6 & IPv4 (c'est 2020) avec TLS et http2
  listen 80;
  listen [::]:80;

  # Dé-commenter dès qu'on aura générer les certificats
#  listen 443 http2;
#  listen [::]:443 http2;
#  ssl_certificate /etc/myacme/ledomaine.com/fullchain.cer;
#  ssl_certificate_key /etc/myacme/ledomaine.com/ledomaine.com.key;
#  ssl_certificate /etc/myacme/ledomaine.com_ecc/fullchain.cer;
#  ssl_certificate_key /etc/myacme/ledomaine.com_ecc/ledomaine.com.key;

 # Le nom du vhost pour lequel on répond
 server_name ledomaine.com www.ledomaine.com;

 # Les headers pour que Odoo puisse gérer des boutiques multiples
 proxy_set_header X-Forwarded-Host $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header Host $host;

 # Documentroot factice, on ne va pas l'utiliser
 root /var/www/html;

 # On force la redirection en HTTPS
 if ($ssl_protocol = "") {
   rewrite ^ https://$server_name$request_uri permanent;
 }

 # La partie vraiment utile : on redirige les requêtes vers Odoo
 location / {
   proxy_pass http://localhost:8069;
 }

 # Pour génération let's encrypt (cf plus bas)
 location /.well-known/acme-challenge {
   root /var/www/letsencrypt;
 }
}

C'est une config de base. Il manque encore la génération des certificats
et leur configuration.
Evidemment, dans tout cela, il faut que tu remplaces ledomaine.com par
ton domaine réel.

Je pars également du principe que tu as fais pointer ledomaine.com et
www.ledomaine.com vers l'IPv4 ET l'IPv6 de ton serveur.

Et pour finir :
# ln -s /etc/nginx/sites-available/ledomaine.com /etc/nginx/sites-enabled/
# nginx -t
# service nginx reload

Ensuite, il faut générer le certificat avec Let's Encrypt. Il y a
beaucoup de méthodes, je te donne ma préférée :

# mkdir -p /var/www/letsencrypt
# service nginx reload
# cd /root
# curl https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh
| INSTALLONLINE=1  CERT_HOME=/etc/myacme ACCOUNT_EMAIL=<ton adresse
e-mail> sh

Note : remplacer ton adresse e-mail pour être prévenu si le certificat
let's encrypt échoit.

# /root/.acme.sh/acme.sh --upgrade --auto-upgrade 1
# /root/.acme.sh/acme.sh --issue -w /var/www/letsencrypt/ --reloadcmd
"service nginx reload" --keylength ec-384 -d ledomaine.com -d
www.ledomaine.com
# /root/.acme.sh/acme.sh --issue -w /var/www/letsencrypt/ --reloadcmd
"service nginx reload" --keylength 4096 -d ledomaine.com -d
www.ledomaine.com

Ensuite, tu reviens dans le vhost nginx et tu décommentes les lignes 7 à
12 et :
# nginx -t
# service nginx reload

La première commande teste la config nginx, elle ne doit pas retourner
d'erreur :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Et normalement, en te rendant sur https://ledomaine.com et
https://www.ledomaine.com, tu devrais avoir ta page.

Alors, il y aurait encore beaucoup de 'tuning' possible côté sécurité,
notamment sur la partie TLS (désactiver tout ce qui n'est pas TLSv1.2 et
TLSv1.3) + ciphers.

Tu peux aller chercher les bons paramètres ici :
https://ssl-config.mozilla.org/

Tu peux également valider ta config ici :
https://www.ssllabs.com/ssltest/

Disons que l'essentiel y est et je ne voudrais pas faire un mail trop
long (mais qui l'est déjà).

Je travaille de mémoire, on est vendredi soir, il *pourrait* y avoir des
erreurs voire des fautes de typo.

Bon week-end,
Julien

Le 24/04/2020 à 21:37, Xavier BELMERE des accordéons CARTMELEON a écrit :
> Bonjour à vous,
> Merci Simon et Yves pour vos réponses, effectivement, le problème vient
> de la redirection vers le port 8069. J'ai lu et suivi plusieurs tuto
> pour paramétrer apache2, la commande a2ensite ne semble pas fonctionner
> chez moi, ou alors il faut être dans un fichier spécifique qui doit être
> évident pour les gars qui font des tutos, et ne juge pas utile de le
> préciser...
> Yves, si je comprends bien ton lien, ils conseillent de changer de port,
> mais ça ne résoud pas le problème de paramétrage apache2.
> J'ai aussi essayé Nginx, mais dans le tuto que j'ai suivi, je suis
> larguer dans l'ajout de clé SSL...
> Je cherche encore...
> 
> 
> Le ven. 24 avr. 2020 à 13:55, Simon Guinot <simon.guinot at sequanux.org
> <mailto:simon.guinot at sequanux.org>> a écrit :
> 
>     On Mon, Apr 20, 2020 at 03:03:41PM +0200, Xavier BELMERE des
>     accordéons CARTMELEON wrote:
>     > Bonjour à tous.
>     > Par cette période de confinement, j'aide un voisin éleveur de
>     chèvres à
>     > faire son site internet pour que ses clients puisse lui commander ses
>     > produits malgré l'interdiction des marchés.
>     > Pour l'instant, j'ai un serveur avec debian 10 fonctionnel, nous avons
>     > choisi odoo community comme logiciel pour faire le site, et par la
>     même
>     > occasion sa compta.
>     > J'ai actuellement un nom de domaine qui pointe vers le dossier
>     /var/www/
>     > ledomaine.com <http://ledomaine.com>
>     > Mais voilà, par défaut, odoo est accessible sur le port 8069, comment
>     > paramétrer apache pour arriver à la bonne adresse ?
> 
>     Bonjour Xavier,
> 
>     J'espère que quelqu'un d'autre te répondra car je ne connais pas odoo
>     et je ne connais pas bien apache.
> 
>     Tu as probablement un répertoire /etc/apache2/sites-enabled sur ton
>     serveur. Chaque site y a son fichier de configuration. Édite le fichier,
>     change le numéro du port, puis relance apacha via systemctl.
> 
>     Bonne journée !
> 
>     Simon
> 
> 


Plus d'informations sur la liste de diffusion Sequanux-ml