Stage 2 : Vikunja

DGA MI - Pôle Sup de La Salle

🚀 1. Préparation de l'environnement

La première étape consiste à récupérer les images des conteneurs (via podman pull en ligne ou podman load en mode hors-ligne) pour Vikunja et MariaDB 11.4 (si la version de mariadb est plus recente, cela ne devrait pas causé de problème). Ensuite, il faut isoler l'environnement en créant un réseau dédié et des volumes persistants pour la base de données et les fichiers joints.

# 1. Création du réseau
podman network create vikunja-net

# 2. Création des volumes persistants
podman volume create vikunja_db_data
podman volume create vikunja_db_files

Validation de la création du réseau et des volumes Podman

Setup Environnement

🛠️ 2. Déploiement (Méthode 1 : Variables d'environnement CLI)

Cette première méthode permet de configurer et lancer les conteneurs directement via des commandes dans le terminal en utilisant des variables d'environnement (-e).

A. Démarrer MariaDB

podman run -d \
--name vikunja-db \
--network vikunja-net \
--restart always \
-v vikunja_db_data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=mot_de_passe_root_mysql \
-e MYSQL_USER=vikunja \
-e MYSQL_PASSWORD=mot_de_passe_vikunja \
-e MYSQL_DATABASE=vikunja \
mariadb:11.4

B. Démarrer l'application Vikunja

podman run -d \
--name vikunja \
--network vikunja-net \
--restart always \
-p 3456:3456 \
-v vikunja_db_files:/app/vikunja/files \
-e VIKUNJA_DATABASE_HOST=vikunja-db \
-e VIKUNJA_DATABASE_TYPE=mysql \
-e VIKUNJA_DATABASE_USER=vikunja \
-e VIKUNJA_DATABASE_PASSWORD=mot_de_passe_vikunja \
-e VIKUNJA_DATABASE_DATABASE=vikunja \
-e VIKUNJA_SERVICE_PUBLICURL=http://IP_DE_VOTRE_VM:3456/ \
vikunja:latest

Vérification du statut des conteneurs (podman ps)

Statut Podman PS

Accès à l'interface de connexion Vikunja via le port 3456

Interface Web Vikunja

📁 3. Déploiement (Méthode 2 : Fichiers de Configuration)

Pour une meilleure lisibilité et évolutivité, il est préférable d'utiliser des fichiers de configuration dédiés (config.yml et mariadb.env) stockés sur la machine hôte.

A. Création des fichiers

# Fichier mariadb.env
MYSQL_ROOT_PASSWORD=mot_de_passe_root_bdd
MYSQL_DATABASE=vikunja
MYSQL_USER=vikunja
MYSQL_PASSWORD=mot_de_passe_vikunja

# Fichier config.yml
service:
  publicurl: "http://IP_DE_VOTRE_VM:3456/"
  port: 3456
database:
  type: "mysql"
  host: "vikunja-db"
  user: "vikunja"
  password: "mot_de_passe_vikunja"
  database: "vikunja"

Aperçu du fichier config.yml

Fichier config.yml

B. Lancement avec les fichiers

# Lancement MariaDB
podman run --privileged -d \
--name vikunja-db \
--network vikunja-net \
-v vikunja_db_data:/var/lib/mysql:Z \
--env-file mariadb.env \
mariadb:11.4

# Lancement Vikunja
podman run -d \
--name vikunja \
-e XDG_CACHE_HOME=/app/vikunja/files/.cache \
--network vikunja-net \
-p 3456:3456 \
-v /chemin/dossier/config.yml:/app/vikunja/config.yml:Z \
-v vikunja_db_files:/app/vikunja/files:Z \
vikunja:latest

💾 4. Sauvegarde et Migration

Une procédure stricte a été mise en place pour exporter les données (Machine A) et les restaurer (Machine B) en toute sécurité.

A. Exportation (Sauvegarde)

Export de la base de données SQL et création d'une archive compressée pour les fichiers joints :

# Dump de la base de données
podman exec vikunja-db mariadb-dump -u vikunja --password='mot_de_passe_vikunja' vikunja > backup_vikunja.sql

# Sauvegarde des fichiers joints via un conteneur temporaire
podman run --rm --privileged --user root -v vikunja_db_files:/data -v $(pwd):/backup mariadb:11.4 tar czf /backup/files_backup.tar.gz -C /data .

B. Restauration

Après avoir recréé les volumes et réseaux sur le nouveau serveur, les fichiers sont extraits et la base est réimportée :

# Restauration des fichiers joints
podman run --privileged --user root --rm -v vikunja_db_files:/data -v $(pwd):/backup mariadb:11.4 sh -c "tar xzf /backup/files_backup.tar.gz -C /data"

# Import du script SQL (une fois MariaDB lancé)
podman exec -i vikunja-db mariadb -u vikunja --password='mot_de_passe_vikunja' vikunja < backup_vikunja.sql

Preuve de génération des fichiers de sauvegarde (SQL et archive)

Fichiers de sauvegarde