Instalar
Lo que la instalación deja en su máquina, lo que debe tener listo antes de empezar, y los dos canales: el paquete .deb, o un clon Git para quien quiera modificar el código.
Lo que la instalación deja en su equipo
Este es el árbol que produce el paquete .deb. El canal de clonación construye las partes /opt/dinoer/ y /var/log/dinoer/, guarda su configuración en /opt/dinoer/dinoer.conf, y no tiene ni /etc/dinoer/ ni los comandos de /usr/bin: llamas a los programas por su ruta.
/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/
| Ruta | Qué es |
|---|---|
shot.py, rpa.py, campagne.py | los tres programas que usted ejecuta: una secuencia de acciones, un archivo de escenario, una campaña de investigación |
journal.py | lee el diario de operaciones: lo que se hizo en un objetivo dado, y cuándo |
lib/ | los módulos que importan |
scenarios/, skills/ | el esquema JSON de escenarios y los ejemplos, y los escenarios que usted promueve |
scripts/ | el montaje y desmontaje del directorio cifrado, y la comprobación de monitorización |
docs/ | las guías, incluida GUIDE_LLM.md, cuyo número de versión solicita el bloqueo |
dinoer.conf.d/ | un perfil de operador de ejemplo |
references/ | las referencias estructurales que rpa.py escribe, compartidas con el grupo dinoer |
requirements.txt | las dependencias de Python, en versiones exactas |
venv/ | el entorno de Python, construido durante la instalación |
.cache/ms-playwright/ | Chromium, descargado durante la instalación |
/etc/dinoer/ | dinoer-sample.conf, una plantilla. dinoer.conf nunca se crea para usted: copie la muestra y edítela |
/usr/bin/dinoer-* | los seis comandos; la página del manual es man dinoer |
/var/log/dinoer/ | el diario de operaciones, y la evidencia archivada para páginas autenticadas |
El paquete también crea el usuario y el grupo del sistema dinoer. Añada su propia
cuenta a ese grupo para ejecutar Dinoer: sudo usermod -aG dinoer $USER.
Qué tener listo primero
En qué sistemas funciona Debian y sus derivados. Otros sistemas no están soportados; no es una cuestión de principio, simplemente el perímetro que se ha probado realmente.
| Necesita | Cuándo | Detalle |
|---|---|---|
| Acceso a la red | durante la instalación, siempre | pip descarga las dependencias de Python y Playwright descarga Chromium. El paquete no incluye ninguno de los dos |
| Bibliotecas del sistema | siempre | apt instala lo que declara el paquete: Python 3 con venv y pip, FUSE y gocryptfs para el directorio cifrado, y las bibliotecas de las que depende Chromium |
| Una instancia de SearXNG | para una campaña de investigación con un objetivo query | Dinoer no incluye ninguna ni tiene un valor público por defecto. Si no tiene ninguna configurada, campagne.py se detiene con un mensaje explícito. Establezca DINOER_SEARXNG_URL, o la clave searxng_url del archivo de configuración: /opt/dinoer/dinoer.conf en el canal de clonación, /etc/dinoer/dinoer.conf en el canal de paquete (canal de paquete: desde la versión 1.0.1) |
| OpenCode | para que una campaña redacte su informe | Dinoer ejecuta opencode run como subproceso (~/.opencode/bin/opencode, o DINOER_OPENCODE_BIN), con el modelo indicado por DINOER_OPENCODE_MODEL. No hay ningún modelo por defecto: la lista que ofrece OpenCode cambia con el tiempo, y el 25 de septiembre de 2026 (OpenCode 1.18.32) el modelo que Dinoer utilizaba por defecto había desaparecido. Sin la variable, el paso del informe lo indica y se detiene. Elija un modelo de opencode models; opencode models | grep deepseek limita la lista a una familia, y vale la pena probar otras familias. Después establezca DINOER_OPENCODE_MODEL con ese valor. Una llamada fallida muestra el propio error de OpenCode e indica si el modelo falta en la lista. Sin un OpenCode funcional, la recopilación sigue ejecutándose y el corpus se conserva; solo el informe no se redacta |
| Ollama | opcional | Embeddings locales (nomic-embed-text en http://localhost:11434, modificables con DINOER_OLLAMA_URL y DINOER_EMBED_MODEL) para la clasificación semántica de las páginas recopiladas. Si no está accesible, la clasificación recurre al orden recibido |
| El directorio cifrado | para los escenarios que inician sesión | El directorio de credenciales |
Fuentes: debian/control, debian/postinst, requirements.txt,
lib/searxng.py, lib/modeles.py y lib/vector.py, versión 1.0.1, leídos el
25 de septiembre de 2026. La parte de campañas se trata en
Campaña de investigación.
Dos canales, mutuamente excluyentes en una misma máquina
El paquete .deb es la ruta normal si desea usar Dinoer; consulte
Descargas para obtener el archivo, el comando de instalación y qué
significa ese aviso de “sandbox” apt.
Clone el código fuente en su lugar si tiene la intención de modificar Dinoer:
git clone https://github.com/RonanDavalan/dinoer.git
cd dinoer
bash scripts/install.sh
Esto crea el usuario y grupo del sistema dinoer, un entorno virtual de Python aislado, despliega el código en /opt/dinoer/, instala Playwright y Chromium dentro de ese entorno, y ejecuta una prueba básica contra una URL real antes de declararse completado.
Por qué una máquina admite un solo canal. Ambos escriben en /opt/dinoer/ y crean el mismo usuario y el mismo grupo dinoer, y ninguno detecta al otro: dpkg no sabe nada de lo que install.sh dejó allí. Quitar el paquete borra /opt/dinoer/venv, la caché de Chromium y el usuario y el grupo dinoer, incluidos los que usaba una instalación por clon. La configuración también se lee en dos sitios: /etc/dinoer/dinoer.conf para el paquete, /opt/dinoer/dinoer.conf para el clon. Ambos son JSON simple, sin comentarios: JSON no los tiene.
Entonces, antes que nada,
Dinoer se niega a funcionar hasta que la persona que lo controla haya leído la guía y pueda recitar su número de versión. Esto no es una formalidad: un agente que no la ha leído improvisa, y la improvisación en relación con las credenciales y las solicitudes en tiempo real es precisamente lo que existe para evitar el bloqueo.
grep notice-version /opt/dinoer/docs/GUIDE_LLM.md
El número que imprime es el que se pasa como --guide-version.