Skip to content

Digital Archives Management System developped by French government/Programme interministériel archives numériques ; core system.

License

Notifications You must be signed in to change notification settings

ProgrammeVitam/vitam

Repository files navigation

VITAM

For a quick presentation in english, please follow this link.

Logo Vitam

Il a pour objectif :

  • la conception, la réalisation et la maintenance mutualisées d’une solution logicielle générique d’archivage électronique. Cette solution logicielle est appelée Vitam. Elle est l'objet du document ;
  • la mise en place ou la mise à jour, dans chacun des trois ministères porteurs, de plates-formes d’archivage utilisant la solution logicielle Vitam ;
  • la réutilisation de la solution logicielle Vitam par le plus grand nombre d’acteurs publics possible, en veillant à sa capacité d'usage dans des contextes divers.
  • les documents sont sous "La Licence Ouverte V2" et le code sous CeCILL 2.1.
  • La "Licence Ouverte V2" est compatible avec la license Creative Commons CC-By-SA 2.0; Une copie de cette licence est disponible dans le fichier ./Licence_CC-By-SA_2.0-en.txt.

Pour plus d’information sur le programme, voir www.programmevitam.fr.

La solution logicielle développée dans le programme Vitam permettra la prise en charge, la conservation, la pérennisation et la consultation sécurisée de très gros volumes d’archives numériques. Elle assurera la gestion complète du cycle de vie des archives et donc la garantie de leur valeur probante. Elle pourra être utilisée pour tout type d'archive, y compris pour des documents classifiés de défense.

Cette solution est développée en logiciel libre pour faciliter sa réutilisation, son évolution, son adaptation à des contextes particuliers si nécessaire, sa maintenance et donc globalement sa pérennité.

L’obligation de mettre en œuvre une solution d’archivage numérique dans les contextes très différents des trois ministères porteurs, tant en termes de pratiques archivistiques qu’en termes de production informatique, a orienté notre choix vers la réalisation d’un back-office. L’objectif est de prendre en compte dans la solution logicielle Vitam, le maximum de fonctions mutualisables et technologiquement complexes, d’autant plus quand elles s’appliquent à des très grands nombres d’objets, et de laisser chaque entité porter ses propres spécificités de processus. Cette vision permet ainsi la réutilisation plus large, tout en assurant la réalisation d’un outil générique intégrable selon les besoins d’acteurs variés dans leur système d’information.

Positionnée comme une brique d’infrastructure, elle prendra en charge toutes les opérations nécessaires pour assurer la pérennisation des documents numériques versés et pour garantir le maintien de leur valeur probante.

C’est le code de ce back-office central qui est ici publié. Des outils annexes sont aussi publiés selon les besoins dans d’autres dépôts (Cf. organisation GitHub ProgrammeVitam).


Le projet se compose des sous-dossiers suivants :

  • sources : code source des composants développés dans le cadre du programme Vitam ;
  • rpm/vitam-product : packages rpm de composants externes ;
  • rpm/vitam-external : constitution du cache de dépendances vers des packages rpm éditeur ;
  • deb/vitam-product : packages deb de composants externes ;
  • deb/vitam-external : constitution du cache de dépendances vers des packages deb éditeur ;
  • deployment : scripts de déploiement ansible pour la solution Vitam ;
  • doc : documentation technique du projet ;
  • dev-deployment : environnement Docker de développement ;
  • packaging : constitution d'un package standalone de la solution logicielle.

Linux (x86) ou MacOS (y compris Apple Silicon)

Logiciels: - IntelliJ IDEA 24 (Ultimate recommandé)

  • Maven 3.9.X et nvm
  • Java 17 JDK
  • Docker (utiliser Rancher Desktop pour Mac)

Matériels: - Mémoire vive: 16GiB - Stockage: 20GiB

Cloner le code sur https://gitlab.dev.programmevitam.fr/vitam/vitam.git ainsi que le jeu de donnéesde test sur https://github.com/ProgrammeVitam/vitam-itests.git. Nous présumons que le dossier du code source se nomme vitam_repo par la suite.

S’assurer que JAVA_HOME et M2_HOME sont renseignés dans le .bashrc ou équivalent (JAVA_HOME pointe vers le répertoire de Java 17, et on peut obtenir M2_HOME avec la commande mvn -version )

Dans le fichier vitam_repo/sources/pom.xml désactiver les modules ihm-demo et ihm-recette

Installer node 18 avec la commande nvm install 18 && nvm use 18

Dans les paramètres IntelliJ: Editor > Code Style > Scheme > Import Scheme > IntelliJ IDEA code style XML et sélectionner le code style téléchargé plus tôt

Copier le répertoire vitam_repo/vitam-conf-dev/intellig-conf/runConfigurations vers vitam_repo/.idea/runConfigurations (si le dossier existe déjà, remplacer le contenu.)

Relancer Intellij IDEA.

Editer le fichier /etc/hosts (ou équivalent) et y ajouter les enregistrements suivants:

 # Vitam

127.0.0.1 access-external.service
127.0.0.1 access-internal.service
127.0.0.1 functional-administration.service
127.0.0.1 scheduler.service
127.0.0.1 elastic-kibana-interceptor.service
127.0.0.1 batch-report.service
127.0.0.1 ingest-external.service
127.0.0.1 ingest-internal.service
127.0.0.1 ihm-demo.service
127.0.0.1 logbook.service
127.0.0.1 metadata.service
127.0.0.1 processing.service
127.0.0.1 security-internal.service
127.0.0.1 storage.service
127.0.0.1 worker.service
127.0.0.1 collect-internal.service
127.0.0.1 collect-external.service
127.0.0.1 metadata-collect.service
127.0.0.1 workspace-collect.serviceccess-internal.service
127.0.0.1 worker.service
127.0.0.1 workspace.service
127.0.0.1 workspace-collect.service

Vitam Core a besoin d’avoir un dossier stockant des données dans la racine de l’ordinateur. Voici l’arborescence nécessaire :

/vitam/
├── conf
├── data
│   ├── ihm-recette
│   │   └── test-data
│   └── storage
├── log
└── tmp

S’assurer que tous les répertoires appartiennent à votre utilisateur (chown).

Ouvrir les paramètres IntelliJ IDEA > Appearance and Behavior > Path Variables et y ajouter une variable nommée vitamLocalShareFolder pointant vers /vitam.

Créer dans /vitam/data/storage un fichier nommé fr.gouv.vitam.storage.offers.workspace.driver.DriverImpl avec le contenu offer-fs-1.service.consul

Créer un lien symbolique de /vitam/data/ihm-recette/test-data/data vers vitam-itests/data (vitam-itests étant le deuxième dépôt cloné au départ.)

Faire un lien symbolique de vitam_repo/vitam-conf-dev/conf vers /vitam/conf. Aller dans /vitam/conf/metadata/mapping et vérifier que les fichiers unit-es-mapping.json et og-es-mapping.json sont des liens symboliques vers les fichiers dans vitam_repo/deployment/ansible-vitam/roles/elasticsearch-mapping/files/.

Aller dans /vitam/conf/worker et s’assurer que plugins.json est bien un lien vers vitam_repo/deployment/ansible-vitam/roles/vitam/files/worker/plugins.json

Créer un lien symbolique de /vitam/data/ihm-recette/test-data/data vers vitam-itests/data (vitam-itests étant le deuxième repository cloné au départ).

Depuis le répertoire vitam_repo/sources exécuter la commande

mvn clean install -D-skipTests -P-vitam

La procédure peut prendre environ 10 à 20 minutes.

Les COTS sont des dépendances externes nécessaires pour lancer le projet en local (mongo et elasticSearch)

L’option la plus simple est d’utiliser docker compose, dont le fichier .yaml se trouve dans vitam_repo/dev-deployment/docker-cots Puis lancer avec IntelliJ ou docker compose: docker compose up

Linux (x86) ou MacOS (y compris Apple Silicon)

Logiciels: * IntelliJ IDEA 24 (Ultimate recommandé) * Plugin multirun * Code style: VitamStyle_Spotless.xml * Maven 3.9.X et nvm * Java 17 JDK * Docker (utiliser Rancher Desktop pour Mac)

Matériels: * Mémoire vive: 16GiB * Stockage: 20GiB

Cloner le code sur https://gitlab.dev.programmevitam.fr/vitam/vitam.git ainsi que le jeu de données de test sur https://github.com/ProgrammeVitam/vitam-itests.git. Nous présumons que le dossier du code source se nomme vitam_repo par la suite.

S’assurer que JAVA_HOME (Pointant vers le dossier de Java 17) et M2_HOME sont renseignés dans le .bashrc ou équivalent (On peut obtenir M2_HOME avec la commande mvn -version )

Dans les paramètres IntelliJ: Editor > Code Style > Scheme > Import Scheme > IntelliJ IDEA code style XML et sélectionner le code style téléchargé plus tôt

Dans le fichier /etc/hosts ajouter ces enregistrements:

 # Vitam

127.0.0.1 access-external.service
127.0.0.1 access-internal.service
127.0.0.1 functional-administration.service
127.0.0.1 scheduler.service
127.0.0.1 elastic-kibana-interceptor.service
127.0.0.1 batch-report.service
127.0.0.1 ingest-external.service
127.0.0.1 ingest-internal.service
127.0.0.1 ihm-demo.service
127.0.0.1 logbook.service
127.0.0.1 metadata.service
127.0.0.1 processing.service
127.0.0.1 security-internal.service
127.0.0.1 storage.service
127.0.0.1 worker.service
127.0.0.1 collect-internal.service
127.0.0.1 collect-external.service
127.0.0.1 metadata-collect.service
127.0.0.1 workspace-collect.serviceccess-internal.service
127.0.0.1 worker.service
127.0.0.1 workspace.service
127.0.0.1 workspace-collect.service

Se mettre dans le dossier vitam_repo/vitam-conf-dev/scripts/ et exécuter vitam_install.sh

Dans IntelliJ, lancer la configuration multiRun Vitam, qui doit normalement éxecuter les 13 services le composant.

Lancer le script init_data_vitam.sh depuis vitam-conf-dev/scripts. Celui-ci doit s’exécuter sans erreurs.

Lancer la configuration multirun Cucumber Init, qui doit également se dérouler sans erreurs.

Lorsque Vitam est démarré vous pouvez ensuite effectuer des requêtes. La liste de ces requêtes se trouve dans vitam-conf-dev/making-vitam-requests Pour vérifier que tout est en place, lancer la requête referential/access-contracts.http. Cette requête doit se terminer par un code 200 (OK). Certaines requêtes ne sont pas possibles car des services Vitam external ne sont pas lancés. Les requêtes dans "Collect" requièrent le lancement des services CollectExternal, Metadata, Metadata Collect.