Voici la doc d'upgrade d'Alternc sur nos serveurs.

historique

Une fois la mise à jour terminé ne pas oublier de tester.

Mise à jour 3.5.x vers 3.5.y

Cette procédure s'applique pour des mises à jour de versions Koumbit à Koumbit (~rc ou ~nmu).

À partir de bookworm, on passe aux sources upstream.

Avant de commencer, assurez-vous que tout roule et que vous avez l'espace disque disponible. Ça peut valoir la peine de se faire un courriel de test par exemple. Il est bon également d'avoir en main un courriel extérieur à l'installation pour pouvoir communiquer en cas de problème.

Cette procédure prend environ 45 minutes et implique généralement un downtime de quelques minutes.

  1. Noter la version actuelle d'AlternC
    • Il y a une version de package, ex.: 3.5.0~rc1+0~20191218224408.56~1.gbp
    • Mais aussi la version taguée dans Git, ex.: 3.5.0.4
  2. backup du code d'AlternC
     # whereis alternc
     alternc: 
       /usr/sbin/alternc.install 
       /usr/lib/alternc 
       /etc/alternc 
       /usr/share/alternc
    • /usr/sbin/alternc.install est un symlink donc on n'a pas à le conserver
    • /usr/lib/alternc : ce sont les scripts. On fait un git init / git add / git commit de tout
    • /etc/alternc : config. faire un commit dans /etc vu qu'il y devrait déjà y avoir un dépôt Git pour etckeeper
    • /usr/share/alternc : le code. On fait un git init / git add / git commit de tout
  3. Backup de la base de données
     mkdir ~/YYYYMMDD_backups_pre_upgrade_altc
     mysqldump alternc > ~/YYYYMMDD_backups_pre_upgrade_altc/alternc.sql
  4. Vérfier que les derniers backups se sont terminés sans erreurs.
     tail /var/log/backupninja.log
     # Voir le motd.d pour la commande exacte qui peut être avec borg
     rdiff-backup -l backup-server.koumbit.net@backup.koumbit.net::/backup/server.koumbit.net//rdiff-backup
  5. Vérifier l'état des paquets
     apt-mark showhold
     apt-cache policy $(aptitude search ~i~nalternc -F %p | tr -s '\n' ' ')
     # et ensuite apt-cache policy des autres paquets on hold

    Pour une vue rapide: for i in $(apt-mark showhold); do echo $i; apt-cache policy $i | grep -A 1 Installed; done. S'il y a des updates dispos, checker ce que c'est pour avoir une idée de l'impact.

  6. Assurer que les dernières mises à jour ont bien été appliquées

    Dans la base de données d'AlternC, la "value" de la ligne dont le "name" est "alternc_version" dans la table "alternc_status" devrait correspondre au dernier fichier de /usr/share/alternc/install/upgrades/3.5.0.x.xxx. Ou autrement dit :

     > SELECT value FROM alternc_status WHERE name='alternc_version';
    
  7. Retirer le hold sur les paquets à upgrader En général, il s'agit des paquets suivants :
     apt-mark unhold alternc alternc-certificate-provider-letsencrypt alternc-roundcube roundcube roundcube-mysql roundcube-plugins
  8. Faire la mise-à-jour
     apt update
     apt upgrade
    Le upgrade mentionne des changements dans certains fichiers et nous demande de choisir quelle version conserver. Prenez note de ces changements en regardant le diff, mais en général on veut prendre les versions fournies par les paquets. Puppet va remettre les configurations nécessaires à priori.

S'il y a roundcube, il est possible que ça demande s'il faut configurer la base de données de roundcube. À priori non puisqu'on a déjà une installation fonctionnelle lors d'un upgrade.

Mesures à prendre lors de l'upgrade vers Bullseye

Ces mesures sont temporaires pendant que l'on fait le switch de AlternC 3.5 buster à AlternC compatible avec bullseye

profile::letsencrypt::webroot_path: '/var/lib/acme'

MAJ 3.3.11 (stretch) -> 3.5pre

Une documentation plus à jour est disponible côté upstream: https://aide.alternc.org/300/Mise-a-jour-3-3-x-vers-3-5-x

En date du 27 mai 2019! 29971 Note, on vise l'intégration à puppet4 après la maj.

  1. Vérifier les configurations de debconf de votre alternc. Ça va vous aider si jamais puppet écrase certaines configurations.
    • # debconf-get-selections | grep alternc > /root/MAJalternc-debconfsetting.txt
      # cat !$
  2. rouler alternc.install et raccorder les changements au templates
  3. Avant de partir analyser le setup de vhost d'AlternC sur la base de données alternc
    •  MariaDB [alternc]> select count(0), type from sub_domaines group by type; 
      
  4. installer alternc-ssl (sinon, alternc3.5 va dire que certains table comme alternc.certificates n'existe pas)
  5. stop puppet : puppet agent --disable
  6. sources de koumbit dépot alternc35 : http://debian.koumbit.net/debian/dists/alternc35/ :

         echo 'deb http://debian.koumbit.net/debian alternc35 main' > /etc/apt/sources.list.d/alternc35.list
         apt update
    • enlèver les sources d'upstream ou de 3.3 de kt
  7. faire un backup de la base de données :

         mysqldump alternc > "/root/alternc-pre-upgrade-`date +%F`.sql"
  8. update les packages :

        apt remove alternc-ssl
    • Retirer la cron-job qui n'est pas supprimé quand on supprime le package.
      •  rm /etc/cron.d/alternc-ssl  

        apt upgrade alternc alternc-roundcube alternc-mailman
  9. mettre la ligne (sans quotes) ALTERNC_REQUEST_CERTIFICATES=system dans /etc/alternc/local.sh

    • Ceci fera en sorte que alternc-certificate-provider-letsencrypt ne demande seulement que les certificats de système lors d'alternc.install (e.g. ça évite d'attendre que des centaines de noms de domaines demandent soudainement un certificat)

  10. dans la base de données d'alternc: assurer que les variables fqdn_dovecot, etc. sont correcte dans le système :

         update variable set value = 'mail.<domaine>' where name in ('fqdn_postfix', 'fqdn_dovecot');
         update variable set value = 'ftp.<domaine>' where name = 'fqdn_proftpd';
         update variable set value = 'listes.<domaine>' where name = 'mailman_url';
    
  11. rouler alternc.install
    • erreur

              Running upgrade script 3.5.0.1.sql
      ERROR 1146 (42S02) at line 23: Table 'alternc.certificates' doesn't exist
      ERROR 1146 (42S02) at line 41: Table 'alternc.certif_hosts' doesn't exist
      ERROR 1062 (23000) at line 69: Duplicate entry 'fqdn_dovecot' for key 'PRIMARY'
      ERROR 1062 (23000) at line 73: Duplicate entry 'fqdn_postfix' for key 'PRIMARY'
      ERROR 1062 (23000) at line 77: Duplicate entry 'fqdn_proftpd' for key 'PRIMARY'
              Running upgrade script 3.5.0.2.sql
      ERROR 1064 (42000) at line 3: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near
       'UPDATE alternc_status SET value='3.5.0.2.sql' WHERE name='alternc_version'' at line 5
      Running upgrade script 3.5.0.3.sql
      ERROR 1071 (42000) at line 3: Specified key was too long; max key length is 1000 bytes 
      
      alter table sub_domaines drop index compte;
      alter table sub_domaines modify column valeur VARCHAR(1024);
  12. débogguer ce bris
    1. remplace webmail CNAME avec roundcube webmail access
  13. réactiver puppet

MAJ d'alternc de wheezy à stretch

En 2017/2018, nous avons mis à jour alternc dans le cadre de mise à jour des systèmes d'exploitation.

MAJ d'alternc de bullseye à bookworm

À partir de debian bookworm, on passe des sources Koumbit (branche PU) aux sources upstream.

Page d'aide alternC: https://aide.alternc.org/300/Mise-a-jour-3-5-rcX-vers-3-5-0

Avant de commencer, assurez-vous que toutes les fonctionnalités d'alternC roulent sans problème, et que vous avez l'espace disque suffisant.

Se créer un courriel test est une bonne idée.

Il est bon également d'avoir en main un courriel extérieur à l'installation pour pouvoir communiquer en cas de problème.

Cette procédure n'a pas été testée sur un serveur roulant mailman3

Préparation

Avant toute chose, assurez-vous d'avoir des backups à jour!

On recommande également de faire des git init/commit dans les dossiers alternc (/usr/share/alternc/ et /usr/lib/alternc/), et dans /etc. Enfin, un backup de la DB alternC devrait être fait.

Si alternc-php-fpm doit être mis à jour, il est préférable de le faire avant. On veut minimalement la version 3.4.1~3+0~20260116, les versions précédentes ayant une incompatibilité avec php 8.x (voir 51284).

Module pour les certificats

Si l'installation utilise toujours le module alternc-certificate-provider-letsencrypt, on va vouloir le retirer pour utiliser plutôt le module upstream, renommé à alternc-acme.

En date de décembre 2025, le paquet transitionnel alternc-certificate-provider-letsencrypt upstream semble brisé, avec un conflit de dépendances. On va donc simplement le supprimer.

  1. Supprimer le module et installer alternc-acme
     # apt remove alternc-certificate-provider-letsencrypt
     # apt install alternc-acme
  2. Appliquer le changement à alternC
     # alternc.install
  3. Faire des commits si besoin

Passage de puppet 5.x à puppet 7.x

Si le serveur est géré par puppet, faire le changement de puppetmaster en vue de l'upgrade à bookworm: PuppetConfiguration#Switch_de_puppet5_.2BAOA_puppet7

Ré-installation de alternC depuis les sources upstream

Normalement, aucune coupure n'est à prévoir.

  1. S'assurer que les sources upstream sont bien présentes sur le serveur (si géré par puppet, ça devrait)
  2. Si le serveur est dans puppet: switcher la version à upstream dans les hiera (profile::alternc::alternc_version) et rouler puppet [TOFIX: ça retire les sources alternc35 Koumbit, mais on peut en avoir encore besoin pour par exemple alternc-nss et alternc-php-fpm)

  3. Supprimer les scripts d'upgrade de alternC: rm /usr/share/alternc/install/upgrades/*

  4. Ré-installer alternC: apt install alternc --reinstall

    • si debconf demande des confs / changements
      • "Enable SFTP support with Proftp" -> off

      • modif de /etc/alternc/templates/dovecot/conf.d/95_alternc.conf -> ok (puppet remettra ce qu'il faut)

      • modif de /etc/alternc/templates/opendkim.conf -> ok (puppet remettra ce qu'il faut)

      • modif de la conf proftpd -> ok (puppet remettra ce qu'il faut)

  5. Rouler alternc.install
  6. Modifier la version d'update dans la DB: UPDATE alternc_status SET value="3.4.10.sql" WHERE name="alternc_version";

  7. Rouler le check d'upgrade pour appliquer: /usr/share/alternc/install/upgrade_check.sh

  8. Faire un dernier apt install alternc --reinstall suivi d'un alternc.install

Si le serveur est dans puppet, la run suivante va venir modifier les mots de passe alternC dans les confs postfix/dovecot, et les courriels cessent alors de fonctionner correctement. Dès qu'on a roulé puppet pour que les mots de passe gérés soient remis en place, il faut refaire un alternc.install pour que alternC les utilise et les applique aux confs. On fait ensuite une dernière run puppet pour remettre en place certaines chose que alternc.install écrase...

Pour finir, refaites des commits dans les dossiers alternC et /etc.

OS upgrade

La version de PHP par défaut sera 8.2 après l'upgrade. Tous les sites "Locally hosted" vont ainsi passer de 7.4 à 8.2, ce qui pourrait provoquer des erreurs! Si alternc-php-fpm n'est pas installé, soyez prudents et anticipez le changement de version de PHP avant d'aller de l'avant.

Si alternc-php-fpm est installé, vous serez toujours en mesure de passer les sites Locally Hosted à php7.4-fpm s'ils venaient à cesser de fonctionner. S'il y a beaucoup de sites, vous pourriez envisager de tout passer à 7.4-fpm *avant* l'upgrade.

On peut maintenant faire l'upgrade à Bookworm: voir BookwormUpgrade.

Upgrade roundcube

Si vous étiez avec roundcube 1.4.15, l'interface aura cessé de fonctionner, n'étant pas compatible avec PHP 8.2. Il vous faut donc upgrader roundcube, ainsi que le module alternC pour roundcube (on passe à upstream).

  1. alternc-roundcube vient directement de alternC, sa version disponible devrait être la même que alternC (3.5.4 en date de rédaction)
  2. Le paquet devrait être on hold, installer la version de alternC upstream: apt install alternc-roundcube=3.5.4

  3. Rouler alternc.install
  4. Rouler puppet si le serveur est géré par puppet
  5. Retirer le hold sur les paquets roundcube: apt-mark unhold php-net-sieve roundcube-core roundcube roundcube-mysql roundcube-plugins

  6. Rouler apt update && apt upgrade

    • si changement de conf: keep the local configuration file
  7. Remettre les paquets sur hold
  8. Rouler puppet (doit reloader apache)

Le webmail devrait maintenant loader correctement!

Étapes finales

Réfs: 50899 / 51284

Si AlternC n'est pas dans puppet

Il faut faire bien attention avec le clean_conflicts vu que puppet ne pourra pas remettre les bonnes confs.

Si jamais opendkim a des problèmes, vérifier que la conf dans /etc/opendkim.conf est bien comme celle dans /etc/alternc/templates/opendkim.conf. Si ce n'est pas le cas, on peut la remplacer.

Ce genre de problème pourrait aussi arriver avec d'autres fichiers de configuration.


CategoryAlternc

AlterncUpgrade (last edited 2026-02-13 03:12:13 by nina)