Installez
Ce que l'installation laisse sur votre machine, ce qu'il faut préparer avant de commencer, et les deux méthodes d'installation : le paquet .deb, ou un clonage Git pour ceux qui souhaitent modifier le code.
Ce que l’installation laisse sur votre machine
Voici l’arborescence que produit le paquet .deb. Le canal du clone construit les parties /opt/dinoer/ et /var/log/dinoer/, garde sa configuration dans /opt/dinoer/dinoer.conf, et n’a ni /etc/dinoer/ ni les commandes de /usr/bin : vous appelez les programmes par leur chemin.
/opt/dinoer/
├── shot.py rpa.py campagne.py journal.py
├── lib/
├── scenarios/
├── skills/
├── scripts/
├── docs/
├── dinoer.conf.d/
├── references/
├── requirements.txt
├── venv/
└── .cache/ms-playwright/
/etc/dinoer/
/usr/bin/ dinoer-shot dinoer-rpa dinoer-campaign
dinoer-monter-secrets dinoer-demonter-secrets dinoer-monitor-verifier
/var/log/dinoer/
| Chemin | Ce que c’est |
|---|---|
shot.py, rpa.py, campagne.py | les trois programmes que vous exécutez : une séquence d’actions, un fichier de scénario, une campagne de recherche |
journal.py | lit le journal des opérations : ce qui a été fait sur une cible donnée, et quand |
lib/ | les modules qu’ils importent |
scenarios/, skills/ | le schéma JSON et les exemples de scénarios, et les scénarios que vous promouvez |
scripts/ | le montage et le démontage du répertoire chiffré, et la vérification de surveillance |
docs/ | les guides, y compris GUIDE_LLM.md, dont le numéro de version est demandé par le verrou |
dinoer.conf.d/ | un exemple de profil d’opérateur |
references/ | les références structurelles que rpa.py écrit, partagées avec le groupe dinoer |
requirements.txt | les dépendances Python, aux versions exactes |
venv/ | l’environnement Python, créé pendant l’installation |
.cache/ms-playwright/ | Chromium, téléchargé pendant l’installation |
/etc/dinoer/ | dinoer-sample.conf, un modèle. dinoer.conf n’est jamais créé pour vous : copiez l’exemple et modifiez-le |
/usr/bin/dinoer-* | les six commandes ; la page de manuel est man dinoer |
/var/log/dinoer/ | le journal des opérations, et les preuves archivées pour les pages authentifiées |
Le paquet crée également l’utilisateur système et le groupe dinoer. Ajoutez votre propre
compte à ce groupe pour exécuter Dinoer : sudo usermod -aG dinoer $USER.
Ce qu’il faut préparer en premier
Où il fonctionne Debian et ses dérivés. Les autres systèmes ne sont pas pris en charge, non pas par principe, mais simplement parce que ce sont ceux qui ont été réellement testés.
| Vous avez besoin | Quand | Détail |
|---|---|---|
| Accès réseau | pendant l’installation, toujours | pip télécharge les dépendances Python et Playwright télécharge Chromium. Le paquet ne contient ni l’un ni l’autre |
| Bibliothèques système | toujours | apt installe ce que le paquet déclare : Python 3 avec venv et pip, FUSE et gocryptfs pour le répertoire chiffré, et les bibliothèques sur lesquelles Chromium s’exécute |
| Une instance SearXNG | pour une campagne de recherche avec une cible query | Dinoer ne fournit pas d’instance et n’a pas d’instance publique par défaut. Sans configuration, campagne.py s’arrête avec un message explicite. Définissez DINOER_SEARXNG_URL, ou la clé searxng_url du fichier de configuration : /opt/dinoer/dinoer.conf sur le canal du clone, /etc/dinoer/dinoer.conf sur le canal du paquet (canal du paquet : depuis la 1.0.1) |
| OpenCode | pour que la campagne rédige son rapport | Dinoer exécute opencode run en tant que sous-processus (~/.opencode/bin/opencode, ou DINOER_OPENCODE_BIN), avec le modèle nommé par DINOER_OPENCODE_MODEL. Il n’y a pas de modèle par défaut : la liste proposée par OpenCode évolue au fil du temps, et le 25 septembre 2026 (OpenCode 1.18.32) le modèle que Dinoer utilisait par défaut avait disparu. Sans la variable, l’étape du rapport l’indique et s’arrête. Choisissez un modèle à partir de opencode models ; opencode models | grep deepseek restreint la liste à une seule famille, et d’autres familles méritent d’être essayées. Indiquez-le ensuite dans DINOER_OPENCODE_MODEL. Un appel échoué rapporte l’erreur propre d’OpenCode et indique si le modèle est absent de la liste. Sans un OpenCode fonctionnel, la collecte continue et le corpus est conservé ; seul le rapport n’est pas écrit |
| Ollama | optionnel | Plongements (embeddings) locaux (nomic-embed-text à http://localhost:11434, modifiables avec DINOER_OLLAMA_URL et DINOER_EMBED_MODEL) pour le classement sémantique des pages collectées. En cas d’indisponibilité, le classement revient à l’ordre reçu |
| Le répertoire chiffré | pour les scénarios qui nécessitent une connexion | Le répertoire des informations d’identification |
Sources : debian/control, debian/postinst, requirements.txt,
lib/searxng.py, lib/modeles.py et lib/vector.py, version 1.0.1, lus le
25 septembre 2026. La partie campagne est traitée dans
Campagne de recherche.
Deux canaux, mutuellement exclusifs sur une même machine
Le paquet .deb est le chemin habituel si vous souhaitez utiliser Dinoer ; consultez la section Téléchargements pour obtenir le fichier, la commande d’installation et ce que signifie cette notification de bac à sable apt.
Clonez le code source si vous avez l’intention de modifier Dinoer :
git clone https://github.com/RonanDavalan/dinoer.git
cd dinoer
bash scripts/install.sh
Cela crée l’utilisateur et le groupe système dinoer, un environnement virtuel Python isolé, déploie le code vers /opt/dinoer/, installe Playwright et Chromium dans cet environnement, et exécute un test de base contre une URL réelle avant de se déclarer terminé.
Pourquoi une machine n’admet qu’un seul canal. Les deux écrivent dans /opt/dinoer/ et créent le même utilisateur et le même groupe dinoer, et aucun ne détecte l’autre : dpkg ignore tout de ce que install.sh y a déposé. Supprimer le paquet efface /opt/dinoer/venv, le cache de Chromium, ainsi que l’utilisateur et le groupe dinoer, y compris ceux qu’une installation par clone utilisait. La configuration est aussi lue à deux endroits : /etc/dinoer/dinoer.conf pour le paquet, /opt/dinoer/dinoer.conf pour le clone. Les deux sont du JSON simple, sans commentaires : JSON n’en a pas.
Ensuite, avant toute autre chose
Dinoer refuse de fonctionner tant que la personne qui le pilote n’a pas lu le guide et ne peut citer sa version. Ce n’est pas une simple formalité : un agent qui n’a pas lu le guide improvisera, et l’improvisation concernant les informations d’identification et les requêtes en direct est précisément ce que le système de verrouillage est conçu pour empêcher.
grep notice-version /opt/dinoer/docs/GUIDE_LLM.md
Le nombre qu’il affiche est celui que vous passez comme --guide-version.