Backgroound Image

Installation de Gitea

Une des parties importantes dans la gestions de projets est la collaboration entre les différents intervenants sur le projet, et plus particulièrement le partage et le travail simultané sur différents fichiers par plusieurs collaborateurs.

Une des solutions trouvée pour ce problème est les Systèmes de gestion de Versions VCS.

L’un des premiers outils/serveur trouvés était le CVS (Concurrent versions system) depuis les années 1990, et est devenu quasiment obsolète aujourd’hui, étant basé sur un modèle centralisé, et posant beaucoup de problème de gestions de verrous sur les fichiers.

Le début des années 2000 a vu l’essor de beaucoup de solutions de remplacement à savoir SVN, Mercurial, Bazaar, GIT etc… qui ont se sont quasiment tous basés sur un modèle décentralisé pour palier au problèmes posé par CVS.… Read the full article

Dovecot et Postfix avec comptes virtuels

On a installé un certain nombre de choses sur le serveur, mais il nous manque quand mème un service essentiel, à savoir le mail, que ce soit à l’envoie (SMTP) ou à la reception (POP/IMAP).

Pour ce faire, et mème si on a le choix entre plus fournisseurs de serveurs SMTP et POP/IMAP (sendmail, exim, postfix, courier, solid, dovecot, etc..) mon penchant va plutôt vers un couplage Postfix/Dovecot avec un backend MySQL pour le stockage des noms de domaines virtuel ainsi que données d’authentification utilisateur.

Nous allons tout d’abord créer une base de donnée nommée vmails avec un compte utilisateur ayant les privilèges spécifiques à cette base de donnée, puis nous allons y exécuter le script sql suivant :

DROP TRIGGER IF EXISTS `vmail_users_trg_sha512_new`;
DROP TRIGGER IF EXISTS `vmail_users_trg_sha512_upd`;
DROP TABLE IF EXISTS `vmail_users`;
DROP TABLE IF EXISTS `vmail_domains`;
DROP TABLE IF EXISTS `vmail_aliases`;
CREATE TABLE `vmail_aliases` (
  `id` int UNSIGNED NOT NULL AUTO_INCREMENT,
  `email_src` text COLLATE utf8mb4_bin NOT NULL,
  `email_dst` text COLLATE utf8mb4_bin NOT NULL,
  `dtcrea` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `dtupdt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;


CREATE TABLE `vmail_domains` (
  `id` int UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8mb4_bin NOT NULL,
  `transport` varchar(255) COLLATE utf8mb4_bin NOT NULL DEFAULT 'virtual:',
  `dtcrea` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `dtupdt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `vmail_domains_uk_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

CREATE TABLE `vmail_users` (
  `id` int UNSIGNED NOT NULL AUTO_INCREMENT,
  `domain_id` int UNSIGNED NOT NULL,
  `email` varchar(512) COLLATE utf8mb4_bin NOT NULL,
  `passwd` varchar(200) COLLATE utf8mb4_bin NOT NULL,
  `cpasswd` text COLLATE utf8mb4_bin NOT NULL,
  `quota` int UNSIGNED NOT NULL DEFAULT '1048576000',
  `dtcrea` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `dtupdt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `vmail_users_uk_email` (`email`),
  CONSTRAINT `vmail_users_ibfk_1` FOREIGN KEY (`domain_id`) REFERENCES `vmail_domains` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
DELIMITER $$
CREATE TRIGGER `vmail_users_trg_sha512_new` BEFORE INSERT ON `vmail_users` FOR EACH ROW SET NEW.passwd
Read the full article

PHP 8.2 FPM et PhpMyAdmin

On a installé jusqu’à maintenant apache2, postgresql, certbot (letsencrypt), mysql ou mariadb, mais nous n’avons pas d’outil visuel pour administrer mysql. Autant en desktop j’utilise des outils tels que DbVisualizer, autant pour mysql sur un serveur je préfère utiliser phpMyAdmin pour ne pas avoir de port MySQL ouvert à l’exterieur.

Pour ce faire, il faudrait tout d’abord avoir PHP qui tourne sur le serveur. L’une des raison qui nous ont poussé à installer ce nouveau serveur est d’ailleurs le fait que Debian 12 contient PHP en version 8.2 – nos autres serveurs étant des anciennes Ubuntu et Debian avec tout un tas de truc tournant dessus, on ne peut pas se permettre de migrer vers une version plus récente juste pour PHP et l’option d’installer les version fournies par le PPA d’ondrej ne me réjouie pas sur un serveur en Prod.… Read the full article

PostgreSQL et PGAdmin4

PostgreSQL est disponible en version 15.3 par défaut sur Debian 12, et si vous n’avez pas besoin de fonctionnalités disponibles à partir d’une version plus récente, il est conseillé d’utiliser la version présente dans les dépôts standards.

l’installation se fait donc de façon simple, en exécutant la commande:

apt install postgresql

on passe maintenant à la définition/changement de mot de passe du compte administrateur du serveur de base de donnée. Pour on exécutera le programme psql sous l’utilisateur système postgres :

sudo -u postgres psql

ce qui nous permettra d’exécuter les commandes SQL directement sur le serveur de base de données :

ALTER USER postgres PASSWORD 'myNewSecurePassword';
\q

PgAdmin4, l’outil open source d’administration et de développement de base de données Postgresql ne possède lui pas de binaire par défaut dans les dépôts Debian.… Read the full article

MySQL ou MariaDB

Après l’acquisition de MySQL par Sun Microsystems en 2008, puis le rachat de Sun par Oracle en 2010, Michael Monty Widenius le fondateur de MySQL ayant peur que Oracle décide d’enterrer le projet, a décidé de faire un fork compatible du projet nommé MariaDB (du nom de sa seconde fille Maria) et de chapeauter le projet par une société au nom de Monty Program AB.

A partir de la version 9 (codename: Stretch), debian a décider de supprimer MySQL de ses dépôts et de le remplacer totalement par MariaDB.

Personnellement, pour une utilisation standard les deux projets se valent et se substituent l’un à l’autre, et mise à part dans le cas de besoins spécifiques liés à un engin de stockage non disponible dans l’un ou l’autre, ou alors de services fournies dans les versions commerciales, il sera à vous de choisir le logiciel que vous voulez.… Read the full article

Network Time Protocol

Par défaut, sur une distribution debian 12, le paquet systemd-timesyncd est installé par défaut.

Malheureusement ce paquet ne fourni qu’un petit client leger pour le protocol NTP (Network Time Protocol), qui plus est ne fourni pas de compensation de temps au niveau de l’horloge interne.

Pour remédier à ce problème, rien ne vaut l’installation du bon vieux ntp, qui mème si nous n’avons pas besoin d’un serveur NTP, fourni toute l’implémentation du protocol tout en étant aussi léger :

apt install ntp --purge

Les deux paquets ne devant pas cohabiter simultanément pour ne pas avoir de tentatives de synchronisation en parallèle par deux clients NTP, le gestionnaire de paquet APT ne permet pas d’avoir les deux paquets installés en mème temps.… Read the full article

Historique Bash

Une des commande de base fournie lors de l’installation de bash (on par de built-in command) est la commande history.

Cette commande permet de visualiser les commandes que l’utilisateur en cours a tapé dans son shell auparavant.

La taille de l’historique qui est enregistré dans le répertoire de base de l’utilisateur sous le nom .bash_history est généralement limitée à 1000 enregistrements en mémoire, et le fichier lui mème ne doit pas dépasser les 2000 enregistrements.

Tout ça pour dire que si vous tapper 2000 fois les mème commande, dans une configuration par défaut, vous perdrez les commandes tapées auparavant.

De plus, si vous ouvrez un deuxième bash, vous ne verrez pas l’historique du premier.… Read the full article

Désactiver le mode visuel pour l’éditeur mode texte VIM 

Pour désactiver le mode visuel pour l’éditeur mode texte VIM, l’ajout de la ligne de configuration telle que préconisée dans les différentes documentations en ligne :

set mouse-=a

au fichier /etc/vim/vimrc ne fonctionne pas.

Ce qu’il faut faire c’est ajouter cette ligne au fichier .vimrc de chaque compte utilisateur qui veux utiliser vim. Pour ne pas avoir à le faire pour les futures comptes il est conseillé de créer ce fichier sous le répertoire /etc/skel/ qui contiendra les fichiers initiaux copiés à la création d’un nouveau compte dans son répertoire personnel.

Une autre option plus pratique pour permettre quand mème l’utilisation du copier/coller avec la souris sans enter dans le mode visuel à chaque click/sélection serait plutôt la ligne de configuration:

set mouse=v

Debian 12 alias bookworm

Debian 12 en version stable a été publié le 10 juin 2023.

Nous avons décider de la tester sur un nouveau serveur dédié (commandé chez OVH) et d’adapter les anciennes configurations dessus, l’objectif étant d’avoir:

  • un minimum de configuration d’outils de base
  • un minimum de sécurité
  • un serveur web de type Apache (désolé pour les utilisateurs de Nginx)
  • la dernière version de PHP
  • un serveur de base de donnée mysql (MariaDB, mysql n’étant plus distribué avec debian)
  • un autre de type postgresql.
  • un serveur noSQL de type MongoDB
  • un serveur noSQL de type Redis
  • un serveur IMAP (dovecot) avec comptes virtuels
  • un serveur SMTP (postfix) utilisant dovecot en backend pour l’authentification
  • un serveur Git gitea (gitlab est trop lourd à mon gout)
  • un serveur de partage de fichiers synchronisé (seafile)
  • et pleins d’autres bidules qui nous servirons peut-être par la suite (ou pas ???)
Read the full article