[{"data":1,"prerenderedAt":185},["ShallowReactive",2],{"seo-verification":3,"blog-sincronizar-historial-terminal-con-atuin-en-vps-es":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-sincronizar-historial-terminal-con-atuin-en-vps-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":29,"intro":32,"sections":33,"ctaTitle":116,"ctaBody":117,"ctaButton":118,"ctaUrl":119,"relatedPosts":120},444,"sincronizar-historial-terminal-con-atuin-en-vps",{"fr":12,"en":13,"ar":14,"es":10},"self-host-atuin-vps","self-host-atuin-on-a-vps-to-sync-your-shell-history","atuin-على-vps-مزامنة-سجل-الأوامر-مشفر","Sincronizar el historial de la terminal con Atuin en un VPS","Aloja tu propio servidor Atuin en un VPS y recupera cualquier comando escrito en cualquier máquina en menos de un segundo, con cifrado del lado del cliente.",7,0,false,"2026-10-15T00:00:00+00:00","2026-10-16T01:57:35+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},2,"Automatización","automatisation","bg-brand-action\u002F10 text-brand-action",[28],{"id":23,"name":24,"slug":25,"color":26,"icon":25},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fself-host-atuin-vps-poster.svg","Atuin reemplaza el archivo `.zsh_history` por una base de datos SQLite local y sincroniza ese historial entre tus máquinas a través de un servidor que gestionas tú mismo. Cada comando se cifra antes de enviarse: el servidor nunca ve su contenido. El resultado: un historial consultable en milisegundos, compartido entre portátiles, servidores y máquinas virtuales, sin ceder tus datos a terceros.",[34,38,49,52,74,77,81,84,113],{"type":35,"title":36,"body":37},"h2","Por qué sincronizar el historial de la terminal","Trabajar en varias máquinas debería ser transparente. En la práctica, el comando `kubectl rollout undo deployment\u002Fapi` escrito en el portátil nunca está en el terminal del servidor de CI, y el `docker compose exec` de hace tres semanas ha desaparecido porque la rotación del historial sobrescribió las entradas antiguas.\n\nAtuin resuelve ambos problemas desde la raíz: almacena cada comando en SQLite con su contexto (hora, duración, código de salida, directorio actual) y sincroniza esa base de datos entre tus máquinas a través de un servidor que tú controlas. La búsqueda se ejecuta localmente — sin latencia de red al recuperar un comando — y la sincronización ocurre en segundo plano. La interfaz de búsqueda (`Ctrl+R`) se convierte en un índice exhaustivo de todo lo que has escrito, en cualquier máquina, desde el primer día.",{"type":39,"title":40,"items":41},"ul","Beneficios concretos de Atuin autoalojado",[42,43,44,45,46,47,48],"Encuentra cualquier comando escrito en cualquier máquina en menos de un segundo mediante `Ctrl+R`.","Cifrado del lado del cliente (AES-256): el servidor nunca ve el contenido de tu historial.","Contexto detallado por entrada: código de salida, duración de ejecución, directorio actual, nombre del host.","Ningún dato enviado a terceros — tú alojas, tú controlas.","Binario Rust sin dependencias pesadas: funciona en el VPS Start desde 99 DH\u002Fmes.","Soporte para zsh, bash, fish, nushell y PowerShell — un solo servidor para toda tu flota.","Estadísticas de uso integradas (`atuin stats`): tus comandos más frecuentes, tus picos de actividad.",{"type":35,"title":50,"body":51},"Requisitos previos","**VPS**: el servidor Atuin es un binario Rust compilado con una base de datos SQLite integrada. Consume menos de 50 MB de RAM en reposo, lo que lo hace compatible con el VPS Start. Reserva 512 MB de RAM disponible para el conjunto completo (sistema operativo + proceso Atuin) y 5 GB de almacenamiento SSD para el historial a largo plazo. Un kernel Linux reciente (Debian 12 o Ubuntu 22.04+) funciona perfectamente.\n\n**Docker y Docker Compose** deben estar instalados en el VPS — es el método de despliegue recomendado por el proyecto. Si tu VPS es nuevo, instala Docker mediante el \u003Ca href=\"https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Finstall\u002F\">script oficial\u003C\u002Fa> o la plantilla Docker del Marketplace de ServOrbit.\n\n**Un nombre de dominio** apuntando al VPS es recomendable (`atuin.your-domain.com`, registro A) para generar un certificado TLS automático. El certificado es imprescindible: el cliente Atuin rechaza sincronizar en texto claro por defecto.",{"type":53,"title":54,"steps":55},"steps","Instalar el servidor Atuin en el VPS",[56,59,62,65,68,71],{"title":57,"body":58},"Conectarse al VPS y crear un directorio de trabajo","Conéctate por SSH a tu VPS:\n\n```bash\nssh root@\u003Cip-del-vps>\n```\n\nCrea un directorio dedicado:\n\n```bash\nmkdir -p \u002Fopt\u002Fatuin && cd \u002Fopt\u002Fatuin\n```",{"title":60,"body":61},"Escribir el archivo docker-compose.yml","Crea el archivo de composición:\n\n```bash\ncat > docker-compose.yml \u003C\u003C 'EOF'\nservices:\n  atuin:\n    image: ghcr.io\u002Fatuinsh\u002Fatuin:v18.23.0\n    command: server start\n    volumes:\n      - .\u002Fconfig:\u002Fconfig\n    ports:\n      - \"8888:8888\"\n    environment:\n      ATUIN_HOST: \"0.0.0.0\"\n      ATUIN_PORT: \"8888\"\n      ATUIN_OPEN_REGISTRATION: \"true\"\n      ATUIN_DB_URI: \"sqlite:\u002F\u002F\u002Fconfig\u002Fhistory.db\"\n    restart: unless-stopped\nEOF\n```\n\nEsta configuración usa SQLite (integrado, sin dependencias externas) y abre el registro para que puedas crear tu cuenta en la primera conexión.",{"title":63,"body":64},"Crear el directorio de configuración e iniciar el contenedor","Atuin necesita un directorio de configuración con permisos de escritura:\n\n```bash\nmkdir -p config && chown 1000:1000 config\n```\n\nInicia el servidor:\n\n```bash\ndocker compose up -d\n```\n\nVerifica que el contenedor está en funcionamiento:\n\n```bash\ndocker compose ps\n# NAME      STATUS          PORTS\n# atuin     Up 2 minutes    0.0.0.0:8888->8888\u002Ftcp\n```",{"title":66,"body":67},"Abrir el puerto 8888 en el firewall UFW","El puerto 8888 debe ser accesible desde tus máquinas cliente. En Ubuntu\u002FDebian con UFW:\n\n```bash\nsudo ufw allow 8888\u002Ftcp\nsudo ufw status\n```\n\n⚠️ Si omites este paso, el cliente atuin mostrará `Connection refused` o `Failed to sync history` al sincronizar — el error más frecuente en los despliegues autoalojados.",{"title":69,"body":70},"Colocar un proxy inverso HTTPS delante del servidor","El cliente Atuin requiere HTTPS por defecto. Coloca Caddy delante:\n\n```bash\napt-get install -y caddy\n```\n\nCrea `\u002Fetc\u002Fcaddy\u002FCaddyfile`:\n\n```bash\natuin.your-domain.com {\n    reverse_proxy localhost:8888\n}\n```\n\nReinicia Caddy (obtiene el certificado Let's Encrypt automáticamente):\n\n```bash\nsystemctl restart caddy\n```\n\nVerifica que el servidor responde:\n\n```bash\ncurl https:\u002F\u002Fatuin.your-domain.com\n# {\"msg\":\"Atuin server v18.23.0\"}\n```",{"title":72,"body":73},"Cerrar el registro una vez creada tu cuenta","Una vez creadas tus cuentas (ver el paso siguiente), desactiva el registro público para evitar cuentas no deseadas. Edita `docker-compose.yml`:\n\n```bash\nATUIN_OPEN_REGISTRATION: \"false\"\n```\n\nReinicia el contenedor:\n\n```bash\ndocker compose up -d\n```\n\nOpcionalmente, crea `\u002Fopt\u002Fatuin\u002Fconfig\u002Fserver.toml` para un control más fino:\n\n```bash\n[server]\nhost = \"0.0.0.0\"\nport = 8888\nopen_registration = false\n\n[server.db]\ndb_uri = \"sqlite:\u002F\u002F\u002Fconfig\u002Fhistory.db\"\n```",{"type":35,"title":75,"body":76},"Instalar y configurar el cliente Atuin","En cada una de tus máquinas (portátil, servidor de desarrollo, etc.), instala Atuin usando el script oficial:\n\n```bash\ncurl --proto '=https' --tlsv1.2 -LsSf https:\u002F\u002Fsetup.atuin.sh | sh\n```\n\nEl script instala el binario en `~\u002F.atuin\u002Fbin` y detecta tu shell.\n\n**Integración en el shell** — añade la línea correspondiente a tu archivo de configuración:\n\n```bash\n# Para zsh (~\u002F.zshrc)\neval \"$(atuin init zsh)\"\n\n# Para bash (~\u002F.bashrc)\neval \"$(atuin init bash)\"\n\n# Para fish (~\u002F.config\u002Ffish\u002Fconfig.fish)\natuin init fish | source\n```\n\nRecarga tu shell: `source ~\u002F.zshrc` (o equivalente).\n\n**Registrar una cuenta en tu servidor**:\n\n```bash\natuin register \\\n  --server https:\u002F\u002Fatuin.your-domain.com \\\n  -u tu-usuario \\\n  -e tu@email.com \\\n  -p tu-contraseña\n```\n\nAtuin genera una **clave de cifrado local** — aparece en pantalla. Anótala inmediatamente: la necesitarás para conectar otras máquinas y no puede regenerarse.\n\n**Primera sincronización**:\n\n```bash\natuin sync\n# Syncing history...\n# History synced!\n```\n\n**Iniciar sesión desde una segunda máquina**:\n\n```bash\natuin login \\\n  --server https:\u002F\u002Fatuin.your-domain.com \\\n  -u tu-usuario \\\n  -p tu-contraseña \\\n  -k \"\u003Ctu-clave-de-cifrado>\"\n\natuin sync\n```",{"type":78,"title":79,"body":80},"tip","Seguridad: firewall, registro y proxy inverso","Tres configuraciones a verificar tras el despliegue inicial:\n\n**1. `open_registration: false`** en cuanto crees tus cuentas. Si lo dejas en `true`, cualquiera que conozca la URL puede crear una cuenta y usar tu almacenamiento.\n\n**2. Nunca expongas el puerto 8888 directamente** — el tráfico siempre debe pasar por el proxy inverso HTTPS. Restringe UFW:\n\n```bash\n# Bloquear el acceso externo directo al puerto 8888\nsudo ufw delete allow 8888\u002Ftcp\n# El proxy inverso local (Caddy) se conecta internamente\n```\n\n**3. Haz copias de seguridad de la base de datos SQLite** regularmente:\n\n```bash\ndocker compose exec atuin sh -c \"sqlite3 \u002Fconfig\u002Fhistory.db \\\".backup \u002Fconfig\u002Fhistory.backup.db\\\"\"\n```\n\nLa base de datos crece lentamente — pocas decenas de MB incluso después de años de uso intensivo.",{"type":35,"title":82,"body":83},"Resolución de problemas — errores comunes","Algunos errores frecuentes en un despliegue autoalojado y cómo resolverlos.\n\n**`Connection refused` en el primer `atuin sync`**\nEl puerto 8888 no está abierto en UFW, o el contenedor no está en marcha. Comprueba con:\n```bash\nsudo ufw status | grep 8888\ndocker compose ps\n```\n\n**`SSL certificate problem: unable to get local issuer certificate`**\nCaddy aún no ha emitido el certificado TLS. Espera 30–60 segundos tras reiniciar Caddy y vuelve a ejecutar `atuin sync`. Asegúrate de que el DNS de `atuin.your-domain.com` apunta a la IP del VPS.\n\n**`Invalid credentials` en `atuin login`**\nLa clave de cifrado es incorrecta o está truncada. Recupérala desde la máquina original:\n```bash\natuin key\n```\nPega el valor completo (larga cadena en base64) después de `-k`.\n\n**`open_registration is disabled`**\nCerraste el registro antes de crear todas tus cuentas. Establece temporalmente `ATUIN_OPEN_REGISTRATION: \"true\"` en `docker-compose.yml`, reinicia, crea la cuenta y vuelve a `false`.\n\n**El historial no se sincroniza tras `atuin sync`**\nVerifica que el servidor sea el destino configurado en el cliente:\n```bash\ncat ~\u002F.config\u002Fatuin\u002Fconfig.toml | grep sync_address\n# sync_address = \"https:\u002F\u002Fatuin.your-domain.com\"\n```\nSi falta la clave, añádela manualmente en `~\u002F.config\u002Fatuin\u002Fconfig.toml`.",{"type":85,"title":86,"headers":87,"rows":93},"comparison","Atuin frente a las alternativas: qué herramienta elegir",[88,89,90,91,92],"Herramienta","Cifrado E2E","Sincronización multimáquina","Autoalojamiento","Búsqueda avanzada",[94,100,105,108],[95,96,97,98,99],"**Atuin**","Sí (AES-256, clave local)","Sí (servidor opcional)","Sí (Docker, SQLite)","Sí (contexto, código de salida, duración)",[101,102,102,103,104],"McFly","No","N\u002FA (solo local)","Sí (red neuronal, directorio actual)",[106,102,102,103,107],"Histdb","Parcial (SQLite local, plugin zsh)",[109,102,110,111,112],"zsh_history nativo","No (rsync manual posible)","N\u002FA","Mínima (grep, fzf opcional)",{"type":35,"title":114,"body":115},"Atuin, una herramienta que crece contigo","Atuin v18.23.0 es la solución más completa para un desarrollador que trabaja en varias máquinas y se preocupa por la privacidad de sus datos. La configuración inicial lleva menos de 30 minutos en un VPS Start, y el resultado es un historial exhaustivo, cifrado y consultable al instante desde cualquier terminal.\n\nUna vez el servidor en marcha, puedes ir más lejos: configurar la sincronización automática (`atuin daemon`), usar las estadísticas semanales (`atuin stats`), o explorar la interfaz de búsqueda avanzada con filtrado por código de salida o nombre de host. El comando que buscas siempre está ahí — independientemente de en qué máquina lo hayas escrito.","Despliega Atuin en un VPS de ServOrbit","Un VPS Start es suficiente para mantener el servidor Atuin en funcionamiento continuo. Acceso root, IPv4 dedicada, SSD NVMe — todo lo que necesitas para un historial de comandos privado y siempre disponible.","Desplegar Atuin en VPS","\u002Fsolutions\u002Fdeveloppeurs",[121,145,168],{"id":122,"slug":123,"slugs":124,"title":128,"excerpt":129,"readTime":130,"views":131,"isPinned":19,"publishedAt":132,"updatedAt":133,"category":134,"categories":139,"featuredImage":29,"bgImage":30,"posterImage":141,"relatedSolution":142},41,"desplegar-aplicaciones-con-coolify-en-un-vps",{"fr":125,"en":126,"ar":127,"es":123},"deployer-avec-coolify","deploy-your-applications-with-coolify-on-a-vps","نشر-تطبيقاتك-باستخدام-coolify-على-vps","Desplegar sus aplicaciones con Coolify en un VPS","Despliegue Coolify en un VPS: instalación, configuración HTTPS, conexión Git, primera aplicación, bases de datos, copias de seguridad y diagnóstico.",9,1,"2026-05-10T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":135,"name":136,"slug":137,"color":138,"icon":137},3,"Despliegue","deploiement","bg-success\u002F10 text-success",[140],{"id":135,"name":136,"slug":137,"color":138,"icon":137},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-coolify-poster.svg",{"categorySlug":143,"appSlug":144},"despliegue-de-aplicaciones-devops","coolify",{"id":146,"slug":147,"slugs":148,"title":152,"excerpt":153,"readTime":154,"views":131,"isPinned":19,"publishedAt":155,"updatedAt":133,"category":156,"categories":162,"featuredImage":29,"bgImage":30,"posterImage":164,"relatedSolution":165},108,"proteger-vps-con-crowdsec",{"fr":149,"en":150,"ar":151,"es":147},"securiser-vps-crowdsec","securing-your-vps-with-crowdsec","تأمين-خادمك-الافتراضي-vps-باستخدام-crowdsec","Proteger su VPS con CrowdSec","Despliegue CrowdSec en su VPS para bloquear los ataques gracias a una detección de comportamiento y a una blocklist comunitaria compartida.",4,"2026-03-04T00:00:00+00:00",{"id":157,"name":158,"slug":159,"color":160,"icon":161},8,"Seguridad y monitorización","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[163],{"id":157,"name":158,"slug":159,"color":160,"icon":161},"\u002Fblog\u002Fcovers\u002Fsecuriser-vps-crowdsec-poster.svg",{"categorySlug":166,"appSlug":167},"ciberseguridad-bastion","crowdsec",{"id":169,"slug":170,"slugs":171,"title":175,"excerpt":176,"readTime":135,"views":18,"isPinned":19,"publishedAt":177,"updatedAt":133,"category":178,"categories":179,"featuredImage":29,"bgImage":30,"posterImage":181,"relatedSolution":182},110,"montar-una-vpn-wireguard-en-vps",{"fr":172,"en":173,"ar":174,"es":170},"vpn-wireguard-vps","setting-up-a-wireguard-vpn-on-your-vps","إعداد-شبكة-vpn-باستخدام-wireguard-على-خادمك-vps","Cómo montar una VPN WireGuard en su VPS","Despliegue una VPN WireGuard en su VPS Cloud: túnel cifrado, configuración Docker y clientes en unos minutos. Guía paso a paso.","2026-03-02T00:00:00+00:00",{"id":157,"name":158,"slug":159,"color":160,"icon":161},[180],{"id":157,"name":158,"slug":159,"color":160,"icon":161},"\u002Fblog\u002Fcovers\u002Fvpn-wireguard-vps-poster.svg",{"categorySlug":183,"appSlug":184},"redes-vpn","wireguard-server",1792123649285]