Cela fait pas mal d'années que je cherche un serveur web à embarquer dans mes applications à destination d'une JRE (Java Runtime Environment) et qui soit :
- Léger, quelques Ko maximum.
- Rapide à démarrer, quelques millisecondes maximum.
- Perfomant, qui encaisse une charge de plusieurs dizaines de milliers de requêtes par secondes sur mon core I5.
- Asynchrone, pour tirer partie du multithread.
- Compilable nativement, via Kotlin Native ou GraalVM.
- Ayant une syntaxe avec et surtout sans annotations, car la réflexion du code rend compliqué la compilation native.
- Libre, gratuit et interropérable.
- Présent dans le répo Maven Central.
- Modulaire, si j'ai besoin du routing alors je ne veux embarquer que les jars dédiés au routing.
Jooby répond à toutes ces conditions. Donc après avoir utilisé Glassfish (outch), Tomcat, Websphere (hur), Jonas (damned), Weblogic (hur again), Jetty, Sparkjava, Undertow, Javalin, Rapidoid et dernièrement Netty, je pense que je vais migrer vers Jooby qui en plus a de meilleures performances que les autres (d'un facteur 2 par rapport à son meilleur challenger, il est même au niveau des serveurs à destination du C++).
Quelques benchmarks sur des serveurs http. Je partage surtout pour les lignes de commande de siege
(l'utilitaire de benchmark utilisé).
En ce moment je regarde rapidoid et undertow, je recherche des serveurs web ultra-rapides et ultra-légers pour faire de l'embarqué sur du GraalVM natif (et peut-être remplacer Sparkjava qui ne reçoit plus de mises à jour).
Quand OVH fabrique son propre serveur d'intégration continue pour ses propres besoins. Évidemment, c'est un logiciel libre ! Je sens que ça va plaire à @Philou !
Plein de trucs & astuces pour Ansible.
Typiquement, comment s'assurer que tous nos hosts soient up : ansible -m ping all --one-line
Principe :
- Vous installez le serveur Glowroot quelque part.
- Sur vos serveurs de production, vous ajoutez un agent Java à la ligne de commande de démarrage de vos JVM.
- Vous n'oubliez pas de faire pointer votre agent Java vers vos serveur Glowroot.
=> Vous obtenez automatiquement un système de monitoring. GG
D'autre systèmes :
Merci encore une fois à Philou pour le lien (tu es en train de devenir ma nouvelle source de merveilles techniques).
An evolving how-to guide for securing a Linux server. - imthenachoman/How-To-Secure-A-Linux-Server
Je n'aurai jamais assez de tutos expliquant comment sécuriser un Linux. Voilà
Avec une syntaxe proche de Sparkjava et Sinatra.
A simple server for sending and receiving messages in real-time per web socket. (Includes a sleek web-ui) - gotify/server
Techniquement, c'est plus qu'un simple chat. Mais bon, pour la boîte ?
@Animal : avec quelles longueurs de noms de domaines as-tu fait le test ? Genre toto.com et titi.com ou quelque chose de plus grand ?
Je te demande car cet article est clair, l'option server_names_hash_bucket_size permet uniquement de traiter des noms de domaines plus longs.
Pour l'option valant 64, les strings de ces noms pourront prendre jusqu'à 64 octets d'espace mémoire pour être traités (pas 64 caractères, donc attention à l'encodage).
Pour Animal et nos VPS
Une check-list des trucs à faire pour sécuriser son Linux.
Via une river.
Je vous explique
- J'ai un vieux PC portable
- J'y ai installé une debian dessus (en mode console)
- J'ai désactivé tous les périphériques inutiles pour un serveur (carte son, wifi, ports USB)
- J'y ai activé le laptop-mode pour réduire la fréquence du CPU lorsque la machine est peu sollicitée.
Bref, j'ai un PC Portable, qui n'a jamais servi, tout petit, qui ne consomme rien et dont je souhaiterai me servir comme serveur perso.
Mon problème
Je voulais le glissé sous le meuble de la télé pour qu'il prenne le moins de place possible, or quand je referme l'écran, le PC passait en hibernation (et donc bye bye le serveur).
Solution
Désactiver le LidSwith de debian. Pour cela il faut :
- Ouvrir le fichier /etc/systemd/logind.conf en tant que root.
- Modifier/Ajouter/Décommenter la ligne HandleLidSwitch=ignore (ou changer sa valeur de supsend à ignore)
- Redémarrez l'ordinateur ou saisissez la commande :
sudo service systemd-logind restart
Comment tester la sécurité d'un serveur linux avec une seule ligne de commande.
Edit : Doudou pense à regarder ça.
Explication du problème :
La plupart du temps, les VM sont synchronisées avec l'horloge de l'hyperviseur directement et non un serveur de temps. Ce dernier étant lui-même synchronisé avec un serveur NTP (ndr. le serveur de temps).
Le fait est que la synchronisation des threads en Java s'appuie sur des mécanismes de pool de threads et de mise en pause pendant certaines durées ; durées définies par la JVM elle-même et le garbage collector. Or, l'hyperviseur peut - pour des raisons de performances et en cas de partage des ressources physiques entre plusieurs VM - désynchroniser l'horloge des VM avec le "vrai" temps.
Par exemple, il peut y avoir une pause de l'horloge qui dure 40 secondes et l'hyperviseur choisira alors de synchroniser un grand coup les horloges de toutes les VM en cours d'exécution.
Et alors, quel est le problème avec Java ?
Tout simplement qu'à cet instant, tous les threads qui auraient du n'être en pause que quelques millisecondes vont s'activer un grand coup simultanément ce qui va fortement augmenter la charge du CPU et dégrader énormément les performances (puisqu'il n'y a plus partage des ressources via une attribution séquentielle mais concurrence pour accéder à la même ressource : le CPU).
Bref, c'est du caca. En résumé,
Un micro server mail !
Transférer un clone GIT d'un serveur vers un autre (avec tout son historique)
git clone --mirror <URL to my OLD repo location>
cd <New directory where your OLD repo was cloned>
git remote set-url origin <URL to my NEW repo location>
git push -f origin
Liste de sites expliquant comment sécuriser son serveur SSH :
- https://korben.info/tuto-ssh-securiser.html
- http://howto.landure.fr/gnu-linux/trucs-et-astuces-dutilisations-de-ssh
- https://www.guillaume-leduc.fr/2-securiser-son-serveur-ssh.html
- https://openclassrooms.com/courses/reprenez-le-controle-a-l-aide-de-linux/la-connexion-securisee-a-distance-avec-ssh
- http://www.tuto-linux.com/tutoriel/acces-ssh-securise/
Comment sécuriser son serveur avec SSL et TLS (surtout TLS 1.2)
Pour faire simple voici les deux commandes à utiliser au sein de votre répo.
Pull only :
git daemon --base-path=. --export-all --reuseaddr --informative-errors --verbose
Pull / Push :
git daemon --base-path=. --export-all --enable=receive-pack --reuseaddr --informative-errors --verbose
Pour Utiliser le répo :
git clone git://127.0.0.1/
Rappel : Le port part défaut du protocol
Un tuto Docker montrant comment monter un LAMP en récupérant des images depuis le répo Docker (qui je le rappelle ne devrait pas être utiliser en entreprise mais bon).