El archivo crisol.json
Se crea solo junto al ejecutable en el primer arranque. Edítalo con cualquier editor de texto y reinicia la app para aplicar los cambios.
{
"listen": "127.0.0.1:8723",
"db": "",
"org_name": "",
"open_browser": true,
"secure_cookies": false,
"trust_proxy": false,
"allowed_hosts": [],
"allowed_ips": [],
"tls_enabled": false,
"cert_file": "",
"key_file": "",
"encrypt_db": false,
"db_passphrase": "",
"backup_enabled": false,
"backup_dir": "",
"backup_interval_hours": 12,
"backup_keep": 14,
"backup_passphrase": ""
}
| Campo | Tipo | Por defecto | Qué hace |
|---|---|---|---|
listen |
string | "127.0.0.1:8723" |
Dónde escucha. 127.0.0.1:8723 = solo este equipo.
0.0.0.0:8723 = accesible desde la red.
|
db |
string | "" |
Ruta del archivo SQLite. Vacío = junto al ejecutable. |
org_name |
string | "" |
Nombre de tu entidad. Aparece junto al logo y en los informes. |
open_browser |
bool | true |
Abre el navegador al arrancar. Ponlo a false en
un servidor. |
secure_cookies |
bool | false |
Marca las cookies como Secure. Actívalo si sirves por HTTPS (o tras un proxy TLS). |
trust_proxy |
bool | false |
Detrás de un reverse proxy de confianza: usa X-Forwarded-For para mostrar la IP real en la auditoría. |
allowed_hosts |
string[] | [] |
Nombres de host permitidos (anti DNS-rebinding). Añade tu
dominio, p. ej. ["crisol.miempresa.com"]. |
allowed_ips |
string[] | [] |
Lista blanca de IPs/CIDR de cliente. Vacío = sin restricción. Loopback siempre permitido. |
tls_enabled |
bool | false |
Activa HTTPS en el propio binario (autofirmado si no das cert/key). |
cert_file / key_file |
string | "" |
Rutas del certificado y clave PEM. Vacíos = certificado autofirmado. |
encrypt_db |
bool | false |
Cifra la base en reposo (<db>.enc).
Requiere
passphrase. |
db_passphrase |
string | "" |
Passphrase de cifrado. Mejor usar la variable
CRISOL_KEY (no queda en disco).
|
backup_enabled |
bool | false |
Copias automáticas: una al arrancar y otra cada N horas. |
backup_dir |
string | "" |
Carpeta de copias. Vacío =
<carpeta de la BD>/backups.
|
backup_interval_hours |
int | 12 |
Cada cuántas horas se copia (mínimo efectivo: 1). |
backup_keep |
int | 14 |
Cuántas copias se conservan (las más antiguas se borran). 0 = no rotar. |
backup_passphrase |
string | "" |
Passphrase para cifrar las copias. Si está vacía usa db_passphrase / CRISOL_KEY. |
Flags de arranque
Opciones de línea de comandos. Tienen prioridad
sobre el
crisol.json.
./crisol # arranca según crisol.json ./crisol -addr 127.0.0.1:9000 # otra dirección/puerto ./crisol -db /ruta/otra.db # otra base de datos ./crisol -config /ruta/otra.json # otra configuración ./crisol -no-open # no abrir el navegador # Variable de entorno: passphrase de cifrado (base + backups), no queda en disco CRISOL_KEY=<clave> ./crisol # Herramientas manuales de cifrado ./crisol -encrypt datos.db -out datos.db.enc ./crisol -decrypt datos.db.enc -out datos.db
Espacios, proyectos y hallazgos
Organiza el trabajo en espacios de trabajo (por cliente o equipo) y, dentro, en proyectos (cada auditoría). En cada proyecto registras vulnerabilidades con severidad, activo, descripción, impacto, remediación y evidencias/PoC (imágenes). Etiquetas, filtros, búsqueda y acciones en lote para gestionarlas rápido.
CVSS, riesgo y ciclo de retest
Calculadora CVSS con vector y matriz de riesgo (probabilidad × impacto) para priorizar. Ciclo de vida claro: abierto → pendiente de retest → resuelta o riesgo aceptado. El cliente puede pedir retest; pentester y consultor lo confirman. Baselines y fechas de retest/resolución para el seguimiento.
Informes
Genera informes por proyecto con tu marca (logo y color), en el idioma elegido, con sellado/firma verificable de integridad e informe de retest para mostrar la evolución de los hallazgos.
Roles, permisos y cuentas
Cuatro roles — admin, pentester, consultor y cliente. El rol define qué puede hacer cada uno; compartir un espacio solo define qué ve. Cuentas con contraseñas fuertes, 2FA (TOTP + códigos de recuperación) y gestión de sesiones activas.
Calendario, bloc cifrado y auditoría
Calendario para planificar pentests y asignar personas, con solicitudes de cambio. Bloc de notas cifrado por espacio (con su propia clave). Registro de auditoría encadenado por hash: cada acción queda trazada, verificable y exportable (solo el admin).
Importar resultados de escáneres
Importa Nessus, Nmap, Burp, ZAP y CSV y deduplica automáticamente los hallazgos repetidos. El detalle de formatos está en «Escáneres compatibles».
Levantarlo como servidor en red
Para que otros equipos de tu red entren a la misma instancia.
{
"listen": "0.0.0.0:8723"
}
Los demás acceden por
http://<IP-del-servidor>:8723. Averigua tu
IP
con
ipconfig (Windows) o
ip a / ifconfig (Linux/macOS).
Control de acceso por IP (lista blanca)
Limita quién puede entrar
combinando
allowed_hosts (por nombre) y allowed_ips (por dirección de cliente).
Solo
los
equipos de la lista entran; el resto recibe 403.
{
"listen": "0.0.0.0:8723",
"allowed_hosts": ["crisol.miempresa.local"],
"allowed_ips": ["192.168.1.50", "192.168.1.0/24"]
}
| Campo | Qué hace |
|---|---|
allowed_ips |
Lista blanca de IPs de cliente que pueden acceder. Acepta IPs
sueltas
y rangos
CIDR (p. ej. 192.168.1.0/24). La IP loopback
(127.0.0.1/::1)
siempre se permite: el propio equipo nunca se autobloquea. Vacío = sin restricción
por
IP.
Útil para exponer en LAN solo a equipos concretos.
|
allowed_hosts |
Lista blanca por nombre de host. Se rechazan las peticiones cuyo
Host no esté listado. Vacío = sin restricción por nombre.
|
Acceso por nombre DNS propio
Para entrar por un nombre
amable
en vez de
por IP, pon tu nombre en allowed_hosts (p. ej. crisol.miempresa.local) y
haz que ese
nombre resuelva a la IP del servidor: en el DNS interno de la empresa, o en el fichero
hosts de cada equipo cliente. Así el acceso pasa a ser
http://crisol.miempresa.local:8723.
allowed_hosts fija el nombre y
allowed_ips restringe las direcciones de origen. El loopback queda siempre
permitido
para que
administres desde el propio servidor.
HTTPS opcional
Cifra las comunicaciones. Con tu certificado propio o uno automático.
{
"listen": "0.0.0.0:8723",
"tls_enabled": true,
"cert_file": "",
"key_file": ""
}
| Escenario | Qué poner |
|---|---|
| Certificado automático | Deja cert_file y key_file vacíos: se
genera
uno
solo. El navegador avisará
la primera vez (normal en red interna). |
| Certificado propio | Indica las rutas de tu certificado y su clave en
cert_file y
key_file.
|
https://<IP>:8723 y las
cookies
se marcan seguras
automáticamente.Detrás de un proxy inverso (opcional)
Si sirves Crisol-RX detrás de un reverse proxy, activa
trust_proxy en crisol.json para que el registro de actividad y la página
de error
muestren la IP real del visitante en vez de la del proxy.
{
"secure_cookies": true,
"trust_proxy": true
}
Importante:
esto solo
afecta a la IP que se muestra. La seguridad (lista blanca de IPs, límite de intentos de
login) usa
siempre la IP real de la conexión, que no se puede falsear con cabeceras. Déjalo en
false si
no usas proxy.
Configuración recomendada (red privada)
Ejemplo de crisol.json para exponer la
instancia en una red interna con la mínima superficie: acceso restringido por IP/host, TLS,
cifrado en reposo y copias cifradas.
Opción A — Detrás de un proxy inverso (recomendada)
La aplicación escucha solo en
127.0.0.1; un proxy inverso (p. ej. nginx) es lo único que da la cara en la red y
aporta TLS. En este modo el filtrado por IP se aplica en el proxy o en el firewall (la app
solo ve la IP del proxy, por eso allowed_ips va vacío aquí).
{
"listen": "127.0.0.1:8723",
"db": "/opt/crisol/crisol.db",
"org_name": "Mi organización",
"open_browser": false,
"secure_cookies": true,
"trust_proxy": true,
"allowed_hosts": ["crisol.miempresa.local"],
"allowed_ips": [],
"tls_enabled": false,
"cert_file": "",
"key_file": "",
"encrypt_db": true,
"db_passphrase": "",
"backup_enabled": true,
"backup_dir": "/var/backups/crisol",
"backup_interval_hours": 6,
"backup_keep": 7,
"backup_passphrase": ""
}
Opción B — TLS propio en la LAN
Sin proxy: la aplicación sirve
HTTPS directamente. Con cert_file/key_file vacíos genera un certificado
autofirmado (el navegador avisa la primera vez, normal en red interna).
{
"listen": "0.0.0.0:8723",
"db": "/opt/crisol/crisol.db",
"org_name": "Mi organización",
"open_browser": false,
"secure_cookies": true,
"trust_proxy": false,
"allowed_hosts": ["crisol.miempresa.local"],
"allowed_ips": ["192.168.1.0/24"],
"tls_enabled": true,
"cert_file": "",
"key_file": "",
"encrypt_db": true,
"db_passphrase": "",
"backup_enabled": true,
"backup_dir": "/var/backups/crisol",
"backup_interval_hours": 6,
"backup_keep": 7,
"backup_passphrase": ""
}
CRISOL_KEY (deja db_passphrase y
backup_passphrase vacíos).
Checklist operativo
- Cortafuegos: abrir el puerto solo a la subred (o solo 443 con proxy).
- Permisos
600encrisol.jsony el fichero de entorno; carpeta de datos restringida. - Cambiar la contraseña de administrador y activar 2FA.
- Base de datos en disco local SSD (no en recursos de red/SMB).
- Usar la unidad systemd endurecida y guardar las copias en un volumen aparte.
Acceso por certificado (mTLS) y certificados TLS
Capa de acceso previa e independiente: sin un certificado de cliente válido, la conexión se rechaza en el propio handshake TLS y ni siquiera se llega al login. Quien sí lo tiene, aún debe autenticarse con usuario, contraseña y 2FA. Todo lo emite el propio binario, sin herramientas externas.
| Fichero | Para qué | ¿Se reparte? |
|---|---|---|
server-ca.crt |
Confiar en el servidor (quita el aviso del navegador) | Sí, la misma a TODOS los clientes (es pública) |
server-ca.key |
Llave que firma el certificado del servidor | No — secreta, solo en la máquina de admin |
client-ca.crt |
Verifica a los clientes (va en client_ca_file) |
No — se queda en el servidor |
client-ca.key |
Llave que firma la identidad de cada cliente | No — secreta, offline a poder ser |
usuario.p12 |
Identidad personal de un usuario (mTLS) | Solo el suyo a cada persona (único) |
1 · Certificado del servidor (firmado por su CA)
Crea la CA del servidor si no
existe y emite el certificado del servidor con los nombres/IPs por los que accederás. Reparte solo
server-ca.crt.
./crisol -make-server-cert -hosts "crisol.miempresa.local,10.0.0.10" # → server-ca.crt (instálalo como CA de confianza en TODOS los clientes) # → server.crt / server.key (van en cert_file / key_file)
2 · CA de clientes (una vez)
./crisol -make-client-ca -out-cert client-ca.crt -out-key client-ca.key
# client-ca.crt → se indica en client_ca_file (NO se reparte)
3 · Un certificado por persona
# repite por cada usuario ./crisol -make-client usuario1 -ca-cert client-ca.crt -ca-key client-ca.key ./crisol -make-client ana -ca-cert client-ca.crt -ca-key client-ca.key # empaquetar para importar en el navegador (opcional, con openssl) openssl pkcs12 -export -legacy -inkey ana.key -in ana.crt \ -certfile client-ca.crt -name "Crisol-RX - ana" -out ana.p12
4 · Activar en crisol.json
{
"listen": "0.0.0.0:8723",
"tls_enabled": true,
"cert_file": "/opt/crisol/certs/server.crt",
"key_file": "/opt/crisol/certs/server.key",
"tls_hosts": ["crisol.miempresa.local", "10.0.0.10"],
"allowed_hosts": ["crisol.miempresa.local"],
"secure_cookies": true,
"require_client_cert": true,
"client_ca_file": "/opt/crisol/certs/client-ca.crt",
"client_allow_dir": "/opt/crisol/certs/clients-allow"
}
client_allow_dir es
opcional: una carpeta con los .crt de los clientes permitidos. Para revocar a
alguien, borra su .crt y reinicia el servicio. Si activas
require_client_cert sin CA, el binario no arranca (protección
fail-closed): nunca queda abierto por error.
5 · En cada equipo cliente
- server-ca.crt → almacén de Autoridades (Firefox) o llavero Sistema con «confiar siempre» (macOS/Windows). La misma para todos; quita el aviso.
- su .p12 personal → almacén Personal / Sus certificados. Es lo que le deja entrar.
- Resolver el nombre por
hostso DNS interno:10.0.0.10 crisol.miempresa.local.
Importar en cada equipo (paso a paso)
server-ca.key y
client-ca.key nunca se tocan en el cliente.macOS — por terminal (lo más fiable):
# confiar en el servidor (CA) para todo el equipo sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain server-ca.crt # identidad del usuario (pide la contraseña del .p12) security import ana.p12 -k ~/Library/Keychains/login.keychain-db -P 'P12_PASS'
Windows — doble clic en cada fichero:
- server-ca.crt: doble clic → Instalar → Equipo local → «Entidades de certificación raíz de confianza».
- ana.p12: doble clic → Usuario actual → escribe la contraseña → almacén Personal (automático). Chrome/Edge lo usan solos.
Linux (Chrome/Chromium usan la base NSS del usuario):
# confiar en el servidor (CA) a nivel de sistema sudo cp server-ca.crt /usr/local/share/ca-certificates/crisol-server-ca.crt && sudo update-ca-certificates # identidad del usuario pk12util -d sql:$HOME/.pki/nssdb -i ana.p12
Firefox (usa su propio almacén, cualquier SO):
- server-ca.crt: Ajustes → Certificados → Ver certificados → Autoridades → Importar → marca «confiar para identificar sitios web».
- ana.p12: pestaña Sus certificados → Importar → contraseña del .p12.
.p12 se crea con openssl (único paso que aún lo
usa); en macOS añade -legacy para que el Llavero lo lea:
openssl pkcs12 -export -legacy -inkey ana.key -in ana.crt -certfile client-ca.crt -out ana.p12
server-ca.key y client-ca.key son llaves
maestras: con ellas se emiten certificados válidos. Permisos 600, nunca se
reparten y, a poder ser, guárdalas offline tras emitir. Los .crt son públicos.Cifrado de tus datos opcional
Con la app cerrada, tus datos quedan ilegibles para terceros.
{
"encrypt_db": true,
"db_passphrase": "una-frase-larga-y-secreta"
}
crisol.json, déjala vacía y
pásala por variable de entorno al arrancar — así no queda en disco:
CRISOL_KEY='tu-passphrase' ./crisol
Abrir y consultar tus datos a mano
# Descifrar (pide la passphrase o usa la variable CRISOL_KEY) CRISOL_KEY='tu-passphrase' ./crisol -decrypt crisol.db.enc -out crisol.db # Consultar con cualquier cliente SQLite sqlite3 crisol.db ".tables" # Volver a cifrar y borrar la copia en claro CRISOL_KEY='tu-passphrase' ./crisol -encrypt crisol.db -out crisol.db.enc rm -f crisol.db crisol.db-wal crisol.db-shm
Cambiar la passphrase
Cambiar la frase en el
crisol.json no basta si ya hay datos
cifrados:
el archivo
sigue cerrado con la frase anterior.
# Con el servidor PARADO: # 1) Descifra con la frase VIEJA CRISOL_KEY='frase-vieja' ./crisol -decrypt crisol.db.enc -out crisol.db # 2) Re-cifra con la frase NUEVA CRISOL_KEY='frase-nueva' ./crisol -encrypt crisol.db -out crisol.db.enc # 3) Borra la copia en claro rm -f crisol.db crisol.db-wal crisol.db-shm # 4) Pon la frase NUEVA en crisol.json
db_passphrase en el
crisol.json.Copias de seguridad automáticas
La app hace copias automáticas, cifradas con
AES-256-GCM y
con retención. Se configuran en crisol.json.
{
"backup_enabled": true,
"backup_dir": "",
"backup_interval_hours": 24,
"backup_keep": 7,
"backup_passphrase": ""
}
| Campo | Qué hace |
|---|---|
backup_enabled |
true/false. Activa las copias
automáticas. |
backup_dir |
Carpeta de destino. Vacío =
<carpeta de la BD>/backups.
|
backup_interval_hours |
Horas entre copias. Por defecto 24, mínimo
1.
|
backup_keep |
Cuántas copias conservar. Por defecto 7. |
backup_passphrase |
Si está vacío usa db_passphrase /
CRISOL_KEY. Si no
hay ninguna, la copia se guarda sin cifrar y se avisa.
|
Restaurar una copia
Con la herramienta de descifrado incluida, indicando la passphrase de la copia:
CRISOL_KEY='tu-passphrase' ./crisol -decrypt backups/crisol-AAAAMMDD-HHMMSS.db.enc -out restaurada.db
Buenas prácticas
| 🔑 | Cambia la contraseña inicial de admin cuanto antes. |
| 🌐 | Si lo expones a la red, usa HTTPS y solo en redes de confianza. |
| 🔒 | Si activas el cifrado, guarda la passphrase en un gestor de
contraseñas y
protege el
crisol.json.
|
| ⏻ | Cierra siempre con Ctrl-C para que el cifrado y la limpieza se completen. |
| 🙈 | No subas a ningún sitio público tus archivos de datos, el
crisol.json ni los
certificados. |
| 📦 | Los exports de workspace contienen datos reales de clientes: trátalos como información sensible. |
Despliegue seguro (Linux y macOS)
Para un servidor: usuario dedicado, permisos
mínimos,
servicio del sistema y cortafuegos. Guía completa en
docs/DESPLIEGUE-SEGURO.md.
1. Usuario dedicado y permisos mínimos
# Usuario de servicio sin login (Linux) sudo useradd --system --home /opt/crisol --shell /usr/sbin/nologin crisol sudo chown -R crisol:crisol /opt/crisol # Solo el servicio lee la config, la clave TLS y la base sudo chmod 600 /opt/crisol/crisol.json crisol-key.pem crisol.db* sudo chmod 700 /opt/crisol/backups
crisol.json: pásala
por
la
variable CRISOL_KEY desde el propio servicio, así no queda en disco.2. Servicio en Linux (systemd endurecido)
# /etc/systemd/system/crisol.service [Service] User=crisol WorkingDirectory=/opt/crisol ExecStart=/opt/crisol/crisol EnvironmentFile=/etc/crisol/crisol.env # CRISOL_KEY=... NoNewPrivileges=true ProtectSystem=strict ProtectHome=true PrivateTmp=true RestrictAddressFamilies=AF_INET AF_INET6 SystemCallFilter=@system-service ReadWritePaths=/opt/crisol UMask=0077 Restart=on-failure [Install] WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now crisol
sudo journalctl -u crisol -f # contraseña admin del 1er arranque
3. Servicio en macOS (launchd)
# /Library/LaunchDaemons/com.crisol.rx.plist (extracto)
<key>ProgramArguments</key>
<array><string>/usr/local/crisol/crisol</string><string>-no-open</string></array>
<key>UserName</key><string>_crisol</string>
<key>RunAtLoad</key><true/>
<key>EnvironmentVariables</key>
<dict><key>CRISOL_KEY</key><string>tu-passphrase</string></dict>
sudo chown root:wheel /Library/LaunchDaemons/com.crisol.rx.plist
sudo chmod 600 /Library/LaunchDaemons/com.crisol.rx.plist # oculta la clave
sudo launchctl load -w /Library/LaunchDaemons/com.crisol.rx.plist
4. Cortafuegos y acceso
# Linux (ufw): abre el puerto solo a tu subred de confianza sudo ufw allow from 192.168.1.0/24 to any port 8723 proto tcp # macOS: firewall de aplicaciones sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /usr/local/crisol/crisol
allowed_ips en el
crisol.json,
activa TLS (abre por https://), encrypt_db y copias replicadas
fuera
del host. Activa 2FA en todas las cuentas.
Escáneres compatibles
Crisol-RX importa los resultados de estos escáneres —todas herramientas externas— detectando el formato automáticamente y deduplicando por activo. Además, tienes la nuestra:
Fragua
¿Automatizar el escaneo? Fragua es un escáner web ligero (mismo autor) que analiza un activo y genera un fichero listo para importar aquí. Es un proyecto aparte y en desarrollo.
Escáneres de terceros (externos)
Requisitos de hardware (CPU, RAM, disco)
Binario único estático (sin CGO) con SQLite embebido: no requiere servidor de base de datos ni dependencias externas. El consumo de RAM y CPU es estable e independiente del tamaño de la base de datos.
| Perfil | CPU | RAM | Disco | Notas |
|---|---|---|---|---|
| Mínimo · 1 usuario | 1 núcleo (x86-64 / ARM64) | 256 MB | 150 MB | Uso en reposo: 30–80 MB |
| Recomendado · equipo pequeño | 2 núcleos | 1 GB | 5–20 GB SSD | Margen para informes y copias de seguridad |
| Grande · alto volumen de evidencia | 2–4 núcleos | 2 GB | 100 GB – 1 TB SSD | Escala con la evidencia y las copias |
Dimensionamiento del disco
El espacio en disco depende del volumen de capturas de evidencia almacenadas y de la retención de copias de seguridad:
Disco ≈ (Σ tamaño de las capturas) + (retención de backups × tamaño de la BD) + margen
backup_keep y ejecutar VACUUM tras eliminaciones
masivas para recuperar espacio.Sistemas compatibles e instalación
Crisol-RX se distribuye como binario nativo por plataforma. Para uso en servidor se recomienda Linux (x86-64 o ARM64), con la unidad systemd endurecida y el HTTPS + acceso por certificado (mTLS) del propio binario.
Compatible con Windows (x64 / ARM64), macOS (Apple Silicon e Intel) y Linux (x64 / ARM64), con soporte ARM64 de primera clase.
Ejecute la base de datos en disco local SSD (no en recursos de red/SMB) sobre un sistema de 64 bits. Cambie la contraseña de administrador y active el cifrado de datos antes de exponer la instancia.
Despliegue paso a paso en Ubuntu / Debian
Sobre la unidad systemd endurecida del kit (arranque automático, reinicio ante caídas y sandbox estricto). El binario es estático: no instala nada en el sistema.
1. Usuario de servicio y
binario en /opt/crisol:
sudo useradd --system --home /opt/crisol --shell /usr/sbin/nologin crisol sudo mkdir -p /opt/crisol && sudo cp crisol-linux-amd64 /opt/crisol/crisol sudo chown -R crisol:crisol /opt/crisol
2. Crea el
crisol.json (usa la config de «Servidor y red») y guarda la passphrase en
CRISOL_KEY, nunca en el fichero:
sudo install -d -m 700 /etc/crisol echo 'CRISOL_KEY=<clave-larga-aleatoria>' | sudo tee /etc/crisol/crisol.env sudo chmod 600 /etc/crisol/crisol.env /opt/crisol/crisol.json
3. Servicio systemd
endurecido (incluido en deploy/):
sudo cp deploy/crisol.service /etc/systemd/system/ sudo systemctl daemon-reload && sudo systemctl enable --now crisol
4. Cortafuegos
(ufw) restringido a tu subred:
sudo ufw allow from 192.168.1.0/24 to any port 8723 proto tcp
5. HTTPS + acceso por certificado, todo en el binario (ver la sección «Acceso por certificado (mTLS)»):
./crisol -make-server-cert -hosts "crisol.miempresa.local,10.0.0.10" # luego en crisol.json: tls_enabled=true, cert_file/key_file y require_client_cert
Dockerfile y docker-compose.yml incluidos funcionan tal cual
(docker compose up -d).firewalld en vez de ufw, ten en cuenta SELinux (etiqueta el
puerto) y Podman en vez de Docker.