Installation d’un serveur Debian 9

Salut les amis.

Hier, j’ai réussi à avoir un serveur Kimsufi avec 2 To de HDD pour le prix d’un serveur avec 1 To. à 10€ par mois je ne vais pas regarder trop les performances pures et dures du serveur, sachant que ce serveur sera là pour remplacer mon vieillissant Kimsufi, qui n’a qu’un disque de 512 Go (que je pense reconvertir en serveur de Backup) … Ce nouveau serveur servira de serveur web, serveur de cloud privé, seedbox, serveur GIT, de test pour docker … enfin un peu tout.

Plutôt que de simplement migrer facilement mon serveur Debian 8 vers le nouveau, je vais réécrire ici les procédures d’installation from scratch, mais je pense que ceci aboutira à l’utilisation d’un script post-install … Oui car on est flemmard ou on ne l’est pas !

Partitionnement

La grande question du partitionnement

Alors pour expliquer rapidement.

Un / de 20 Go, suffisant.

/home qui fait pour l’instant 1 To, je vais stocker les fichiers de ma seedbox 😀

/var/log qui fait 5 Go (oui j’ai eu une fois une appli verbeuse, qui m’a généré tellement de log que j’en ai perdu mon serveur … Je préfère donc toujours mettre mon dossier de log dans une partition à part et qu’elle reste isolée du reste du système … Les logs ça grossi vite 🙂

Et le reste ?? Et bien le reste je vais voir. Est ce que j’agrandis mon /home ? est ce que je dédie une partition à autre chose ? Je ne sais pas … de toute façon c’est du LVM donc je verrai avec le temps ! 😉

Premier Démarrage

Création d’un compte utilisateur

Pour commencer, si vous n’avez pas de compte perso, ajoutez en un, si vous en avez un passez cette étape

Je vais donc me créer un compte sur le serveur et définir son mot de passe.

useradd -m -G sudo tom
passwd tom

Maintenant il va falloir personnaliser mon environnement de travail (logiciel, bashrc …)

Pour commencer, c’est personnel, je vais importer mon bashrc et mon env shell. Pour cela j’héberge sur GitHub les fichiers nécessaires

cd /tmp
# On installe git si pas encore installé
sudo apt install git
git clone https://www.github.com/SckyzO/bashrc
cd bashrc
# Copie dans le home directory de l'utilisateur
cp .bashrc .dircolors $HOME
# Copie dans le home directory de root
sudo cp .bashrc .dircolors /root
# On delete :)
rm /tmp/bashrc

Mise en place des dépôts

Nous allons ajouter les dépôts “contrib” et “non-free” ainsi que le rétro-portage Backports

 vi /etc/apt/sources.list
# Les dépôts officiels Debian Jessie :
deb http://httpredir.debian.org/debian/ stretch main contrib non-free
#deb-src http://httpredir.debian.org/debian/ stretch main contrib non-free

# Debian Jessie, mises-à-jour de sécurité :
deb http://security.debian.org/ stretch/updates main contrib non-free
#deb-src http://security.debian.org/ stretch/updates main contrib non-free

# Debian Jessie, mises-à-jour "volatiles" :
deb http://httpredir.debian.org/debian/ stretch-updates main contrib non-free
#deb-src http://httpredir.debian.org/debian/ stretch-updates main contrib non-free

# Debian Jessie, dépôt de rétro-portages ("backports") :
deb http://httpredir.debian.org/debian stretch-backports main contrib non-free
#deb-src http://httpredir.debian.org/debian stretch-backports main contrib non-free

Mise à jour système

apt-get update && apt-get upgrade && apt-get dist-upgrade

Installation des programmes

Divers

apt-get install man manpages-fr manpages-fr-extra manpages-fr-dev bash-completion curl locales fortunes nano python-pip wget zip unzip bzip2 linux-kernel-headers screen ca-certificates fortune-mod lsof strace sudo tree coreutils htop ccze vim-runtime vim-common vim-nox vim vim-syntastic vim-addon-manager vim-runtime build-essential subversion autoconf screen g++ gcc ntp curl git unrar unzip mediainfo ffmpeg

Je ne vais pas rentrer dans les détails des programmes installés. C’est mon environnement

Ajout de mon MOTD Dynamique

Pour ceux qui ne savent pas, je vous renvoie vers le lien suivant :

Création d’un MOTD dynamique : dynmotd

 

Un peu de Sécurité

Sécuriser son serveur SSH, c’est quand même la base. Par défaut la configuration est bien pour une utilisation locale. Mais sur internet, mieux vaut prendre quelques précautions.

Perso, je change le port de connexion par défaut, cela évitera quelques petits soucis (mes amis les bots …), et je n’autorise pas la connexion SSH à l’utilisateur root (non sans déconner !!)

Il vous faudra éditer le fichier /etc/ssh/sshd_config

Changer le port par défaut (évitez de mettre un port compris en 1 et 1024 …)

[ . . . ]
Port 1234 # (mettez le port que vous souhaitez)
[ . . . ]
Protocol 2
[ . . . ]
PermitRootLogin no
[ . . . ]
# Cette variable permet uniquement aux utilisateurs listés après la variable AllowUsers de pouvoir se connecter en ssh (Fonctionne aussi avec AllowGroups)
AllowUsers username1 username2
AllowGroups groupe1 groupe2

Voila le principal est fait. J’écrirai un autre article à destination de la sécurité sur un serveur Linux (ssh, fail2ban, port-knocking …)

Et Ensuite ?

Et bien ensuite va s’en suivre plusieurs articles, pour l’installation et la configuration de plusieurs softs. Je pense à terme faire pas mal de docker. Je reviendrai dessus dans les jours prochains.
Pour l’instant on va s’installer “normalement” une petite seedbox sur le serveur. Je vous présenterai cela par la suite.

 

Et vous vous installez aussi votre Debian comme ceci ?

Mes Wallpapers Novembre 2017

Cela fait un moment que je n’avais pas partagé ni d’articles, ni de wallpapers … Et pourtant j’en ai des articles en modes brouillons.
Je vais profiter d’avoir aménagé à ma nouvelle maison et presque fini la rénovation pour revenir entretenir mon Blog. On verra ce que cela donne dans le temps mais j’ai beaucoup de nouvelles choses à vous partager, et surtout j’ai besoin de me servir de ce blog comme mon pense bête. Dernièrement je me suis ouvert a de nouvelles technologies, notamment AWS, Docker et la domotique. Je vais donc en profiter pour vous sortir quelques articles.

En attendant voici mes Wallpapers du mois de novembre, mais aussi d’octobre, septembre, août, juillet et juin 🙂

Mon bashrc

[UPDATE : 17-01-2017 : Mise à jour du code du bashrc ]

Suite à l’article sur mon motd dynamique, je vous propose en téléchargement mon fichier bashrc personnalisé.

Explication de la personnalisation de Bash (source : Mistra.fr)

Pour personnaliser l’invite de commande bash nous allons devoir modifier quelques fichiers de configuration relatifs à bash.

 

Voici les fichiers qui configurent un bash à son lancement :

  • /etc/profile : ce fichier est chargé quel que soit le shell utilisé (en particulier bash) et quel que soit l’utilisateur. Il ne doit pas contenir d’instruction spécifiques à bash, car sinon cela risque de perturber les autres shells.
  • /etc/bash.bashrc : ce fichier est chargé par tous utilisateurs au lancement d’un bash. Selon la distribution Linux ce fichier peut porter un nom légèrement différent, par exemple /etc/bash/bashrc.
  • ~/.bash_login : ce fichier est spécifique à un utilisateur (en tant que fichier situé dans son home directory) quand il se loggue. Ce fichier n’existe pas forcément, donc si vous en avez besoin n’hésitez pas à le créer.
  • ~/.bashrc : ce fichier est chargé au lancement d’un bash par cet utilisateur. C’est un contexte un peu plus général que se logguer (typiquement lorsqu’on lance la commande “bash”).

Concrètement nous allons travailler dans ~/.bashrc car nous ne souhaitons pas forcément modifier le prompt des autres utilisateurs. On aurait pu travailler dans /etc/bash.bashrc  pour modifier tous les prompts d’un coup.

Continuer la lecture de Mon bashrc

Vider la mémoire cache d’un serveur Linux

Salut à tous,

Vous le savez je bosse sur des serveurs de calculs, et depuis un certains temps certains calculs plantaient par manque de mémoire.

Ce n’est pas un phénomène nouveau, mais je ne vais pas m’étaler sur le pourquoi du comment, je vous conseille plutôt de lire cet article déjà tout bien écrit : https://www.randco.fr/blog/2012/gestion-de-la-ram-sous-linux/

Juste les commandes de bases à savoir :

Vérifier l’état de la mémoire sur votre système

Taper la commande Free avec les options qui vont bien, au pire un petit “man free” (et pas l’inverse) pour plus d’options

$ free -mt
             total       used       free     shared    buffers     cached
Mem:          3832        755       3076          0         25        485
-/+ buffers    244       3587
Swap:         2047          1       2046
Total:        5880        757       5123

Ou alors le bon vieux fichier /proc/meminfo (mais c’est plutôt imbitable pour les néophytes)

$ cat /proc/meminfo
MemTotal:        3924412 kB
MemFree:         3150572 kB
Buffers:           26228 kB
Cached:           497512 kB
SwapCached:          204 kB
Active:           437460 kB
Inactive:         199132 kB
Active(anon):      39828 kB
Inactive(anon):    73212 kB
Active(file):     397632 kB
Inactive(file):   125920 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       2097148 kB
SwapFree:        2095868 kB
Dirty:                 4 kB
Writeback:             0 kB
AnonPages:        112832 kB
Mapped:            13084 kB
Shmem:               188 kB
Slab:              65576 kB
SReclaimable:      33132 kB
SUnreclaim:        32444 kB
KernelStack:        2864 kB
PageTables:         8856 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     4059352 kB
Committed_AS:     257772 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      163900 kB
VmallocChunk:   34359561148 kB
HardwareCorrupted:     0 kB
AnonHugePages:     12288 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       10240 kB
DirectMap2M:     4184064 kB

Bref tout ça pour dire que parfois j’ai besoin de vider le cache ram.

Voici les différentes commandes disponibles

Libère la mémoire des données en cache

$ sync; echo 1 > /proc/sys/vm/drop_caches

Libère la mémoire des données en tampon

$ sync; echo 2 > /proc/sys/vm/drop_caches

Libère la mémoire des données cache et tampon (celle que j’utilise en règle générale).

$ sync; echo 3 > /proc/sys/vm/drop_caches

La commande sync permet de s’assurer que toutes les informations en mémoire en attente d’écriture soient bien répercutées sur le disque (oui mieux vaut prendre un minimum de précaution hein).

Ensuite, libre à vous de faire un petit script ou de mettre tout ça dans un crontab. Par exemple pour vider tous les jours à midi le cache :

# crontab -l

0 12 * *  * sync; echo 3 > /proc/sys/vm/drop_caches

Je profite aussi de cet article pour vous noter comment vider la swap d’un serveur linux

swapoff -a 
swapon -a

Tout simplement 🙂

Création d’un MOTD dynamique : dynmotd


Depuis que je m’occupe de la gestion d’un parc de serveurs Linux, environ 200, j’ai mis en place certaines petites customisations maison.

Ainsi, dès que je me connecte en SSH à un serveur, un motd dynamique s’exécute et il m’est donc simple de savoir quel est le serveur sur lequel je me connecte. Qu’est ce que le motd me demanderont certains ? Simplement l’abréviation de Message Of The Day.

Mettre en place un motd dynamique est très simple.

Suivez le tutoriel ci-dessous

<Mise à jour du 29 Avril 2016>

  • Mise à jour pour dû à un bug du TERM qui bloquait les transfert en SCP
  • Mise à jour du fichier dynmotd.sh avec : optimisation des variables
  • Mise en place du dynmotd uniquement pour le compte root et le groupe admin

</Mise à jour>

Continuer la lecture de Création d’un MOTD dynamique : dynmotd