Archives par mot-clé : serveur

Certificat Let’s Encrypt sur réseau local

On peut lire un peu partout qu’il n’est pas possible d’utiliser Let’s Encrypt sur son réseau privé. Cette assertion est trop rapide. C’est compliqué, pas supporté par défaut, mais amplement faisable.

Une solution consiste à utiliser les fonctions de challenge DNS de Let’s Encrypt et de récupérer et installer en local ces certificats.

Si l’on souhaite cacher l’architecture interne de notre infrastructure (sans la déclarer dans dans un dns public), il suffit simplement d’utiliser un wildcard de sous-domaine.

Le flux d’action, réseau privé / internet, est le suivant:

Pour fonctionner, cette procédure nécessite un serveur DNS public avec une api permettant de mettre à jour vos enregistrement DNS. Vous trouverez de tels services auprès par exemple de DigitalOcean, Namecheap.

Exemple avec un serveur DNS namecheap

dans un répertoire de votre serveur possédant docker (ou directement avec certbot et python), par exemple /data/certs

git clone https://github.com/heralight/certbot_dns_namecheap.git

créer le fichier namecheap.ini dans /data/certs

dans /data/certs/certbot_dns_namecheap

docker-compose run certbot-dns-namecheap  certonly \
  --non-interactive  -a certbot-dns-namecheap:dns-namecheap \
  --certbot-dns-namecheap:dns-namecheap-credentials=/namecheap.ini \
  --agree-tos \
  --email "[email protected]" \
  -d *.mondomain.com

les certificats se trouvent dans /data/certs/certbot_dns_namecheap/out/certs/live/mondomain.com/

listes des certificats Let’s Encrypt certbot

docker-compose run  certbot-dns-namecheap  certificates  

renouvellement des certificats Let’s Encrypt certbot

Les certificats Let’s Encrypt ont une durée de validité courte, il vous faut les renouveler périodiquement.

docker-compose run  certbot-dns-namecheap  renew --force-renewal

dans un crontab ajouter -T en option pour éviter les problèmes. ex: docker-compose run -T …etc

Ensuite, à vous de configurer ou transférer (avec rsync, etcd ou consul par exemple) ces certificats ou bon vous semble.

Exemple – Lier Ingress avec ces certificats

Ci-après, un exemple d’utilisation pour un cluster Kubernetes avec une sur couche Rancher 2. Ingress va automatiquement utiliser vos certificats générés pour vos services exposés sur votre infrastructure.

Première étape, créer le secret contenant les certificats pour ingress.

kubectl -n devops-tools create secret tls tls-rancher-ingress \   --cert=/data/certs/certbot_dns_namecheap/out/certs/live/mondomain.com/cert.pem \   --key=/data/certs/certbot_dns_namecheap/out/certs/live/mondomain.com/privkey.pem

Ensuite automatiser la mise à jour avec crontab.

43 6 * * * cd /data/certs/certbot_dns_namecheap && /usr/local/bin/docker-compose run -T  certbot-dns-namecheap  renew --post-hook "kubectl -n devops-tools create secret tls tls-rancher-ingress    --cert=/data/certs/certbot_dns_namecheap/out/certs/live/mondomain.com/cert.pem   --key=/data/certs/certbot_dns_namecheap/out/certs/live/mondomain.com/privkey.pem --dry-run -o yaml |    kubectl apply -f - "

En conclusion, pas simple, mais faisable.

Pour information, l’api de Namecheap est disponible uniquement sur demande et sous condition d’avoir beaucoup de leur produit, mais à l’énorme avantage d’être compatible avec des domaines plus exotique, … comme les domaines islandais.

Installer un miroir Maven sur un Nas Synology

But

Installer un miroir Maven sur un Nas Synology, pour accéder plus rapidement aux différents paquets, travailler en intranet,…etc.

Pré-requis

Java, pour l’installer vous pouvez suivre l’article Installer un miroir Maven sur un Nas Synology

Outils

Comme pour le serveur d’application web Java,  Il nous faut un serveur Maven léger. On peut exclure nexus et assimilé, trop complexe et trop gourmand pour nos besoins et surtout nos ressources.
Notre choix se porte sur maven-proxy de codehaus, simple mais efficace, disponible sur http://maven-proxy.codehaus.org/Downloads

Etapes

Passons dans le chroot

Nas>./initDebChroot.sh

L’installation est simple, on peut par exemple décompresser l’archive dans /opt:

Nas> mkdir /opt/mvnrepo
Nas> cd /opt/mvnrepo
Nas> wget http://dist.codehaus.org/maven-proxy/distributions/maven-proxy-standalone-0.2.zip
Nas> unzip maven-proxy-standalone-0.2.zip

Concernant la configuration, en voici une préconfigurer pour les dépôts de springsource. Ajouter, en priorisant, vos repositories dans la deuxième partie du fichier. N’oubliez pas de rajouter leur token dans la liste de la variable repo.list.

Un script pour simplifier le démarrage runMvnProxy.sh:

java  -jar /opt/mvnrepo/maven-proxy-standalone-0.2-app.jar /opt/mvnrepo/MavenProxy.properties

Exécutez-le et testez votre installation http://Nas:9999/

Utiliser ce miroir

sur vos postes de travail, vous devez modifier le fichier settings.xml de maven comme ceci:

<settings>
.
.
<mirrors>
    <mirror>
      <id>MavenMirror</id>
      <name>Home Maven Mirror</name>
      <url>http://NAS:9999/repository/</url>
      <mirrorOf>*</mirrorOf>
    </mirror>
</mirrors>

.
.
</settings>

Pour plus de détails sur cette configuration http://maven.apache.org/guides/mini/guide-proxies.html

Lancer le serveur au démarrage du NAS

Après avoir automatisé l’initialisation du chroot debian,
Un script pour automatiser le démarrage de ce miroir maven, nous le nommerons S93MavenProxy.sh :

#!/bin/sh
#

SynoStop=/usr/bin/killall

case $1 in
start)
echo "Launch Maven Proxy ..."
chroot /opt/debian/chrootgnuspe /opt/mvnrepo/runMvnProxy.sh &amp;
;;
stop)
#$SynoStop tracd > /dev/null 2>&amp;1
;;
#restart)
#   $0 stop
#   $0 start
#   ;;
*)
echo "Usages: $0 [start|stop|restart]"
;;
esac

ajouter le script au répertoire rc.d:

NAS> ln -s yourVolume1Rc.dScript/S93MavenProxy.sh /usr/syno/etc.defaults/rc.d/

TODO:

supporter le stop et restart du script de service.

Automatiser l’initialisation du chroot debian sur un Synology DS210+

Pré requis: DSM 3.X

But

Automatiser l’initialisation du chroot debian sur un Synology DS210+.
Ce système fut précédemment réalisé avec ce tutorial.

Etapes

Dans un nouveau répertoire du /volume1, créez le script S91InitDebian.sh suivant:

#!/bin/sh
#

SynoStop=/usr/bin/killall

case $1 in
start)
        echo "Mount debian ..."
        mount -o bind /volume1/@debian /opt/debian
        mount -o bind /dev /opt/debian/chrootgnuspe/dev
        mount -o bind /proc /opt/debian/chrootgnuspe/proc
   ;;
stop)
   #$SynoStop tracd > /dev/null 2>&1
   ;;
#restart)
#   $0 stop
#   $0 start
#   ;;
*)
   echo "Usages: $0 [start|stop]"
   ;;
esac

ajouter le script au répertoire rc.d du nas Synology:

NAS> ln -s yourVolume1Rc.dScript/S93MavenProxy.sh /usr/syno/etc.defaults/rc.d/

TODO

supporter le stop et restart du script de service.