[{"data":1,"prerenderedAt":188},["ShallowReactive",2],{"seo-verification":3,"blog-autoalojar-kutt-vps-acortador-de-url-es":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-autoalojar-kutt-vps-acortador-de-url-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":32,"intro":35,"sections":36,"ctaTitle":128,"ctaBody":129,"ctaButton":130,"ctaUrl":131,"relatedPosts":132},561,"autoalojar-kutt-vps-acortador-de-url",{"fr":12,"en":13,"ar":14,"es":10},"self-host-kutt-vps","self-host-kutt-vps-url-shortener","استضافة-kutt-على-vps-اختصار-الروابط","Kutt en un VPS: un acortador de URL con tu propio dominio","Instala Kutt en un VPS: enlaces cortos en tu propio dominio, API REST, alias personalizados, caducidad, contraseña y estadísticas privadas.",7,0,false,"2026-11-02T00:00:00+00:00","2026-11-02T13:48:09+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},"Autoalojamiento","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[28],{"id":17,"name":23,"slug":24,"color":25,"icon":26},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fself-host-kutt-vps-poster.svg",{"categorySlug":33,"appSlug":34},"automatizacion","kutt","Un enlace bit.ly en una campaña de SMS es un clic que pasa por un servicio que no controlas, una estadística que no es tuya y un dominio que no es el tuyo. Kutt, un acortador de URL de código abierto con licencia MIT, te lo devuelve todo: cada enlace corto lleva tu dominio, cada clic se queda en tu base de datos y una API REST permite que tus herramientas acorten sus propios enlaces. Esta guía instala Kutt con Docker Compose en un VPS, lo publica con HTTPS detrás de nginx, cierra el registro público y muestra cómo crear enlaces por la API.",[37,41,51,87,90,106,110,113,116,119,122,125],{"type":38,"title":39,"body":40},"h2","Por qué alojar tu propio acortador de URL","Un acortador público decide por ti: puede cambiar sus condiciones, limitar el número de enlaces, insertar una página intermedia o cerrar, y tus enlaces ya impresos dejan de funcionar. Sus estadísticas le pertenecen, y su dominio compartido es bloqueado a menudo por los filtros antiphishing porque otros lo usan mal.\n\nCon Kutt en tu VPS, el enlace go.tu-dominio.com\u002Foferta es tuyo para siempre: puedes cambiar su destino sin reimprimir el cartel, ver quién hizo clic y desde dónde, y ningún tercero ve tus campañas. Para una agencia, también es un servicio que ofrecer a cada cliente, en su propio dominio.",{"type":42,"title":43,"items":44},"ul","Lo que aporta Kutt",[45,46,47,48,49,50],"**Enlaces en tu dominio** — cada enlace corto lleva tu marca y sigue siendo válido aunque cambies de herramienta más adelante.","**Alias personalizados** — `\u002Flanzamiento`, `\u002Fwebinar`, o un código generado de seis caracteres sin caracteres ambiguos.","**Contraseña y caducidad** — un enlace protegido para un documento de cliente, un enlace que deja de redirigir al acabar una oferta.","**Estadísticas privadas** — visitas en el tiempo, navegadores, sistemas, países y sitios de referencia, visibles solo para el propietario.","**API REST** — una clave por usuario para crear, modificar y eliminar enlaces desde tus scripts y herramientas.","**Administración** — creación de las cuentas del equipo, revisión de todos los enlaces, bloqueo de un enlace o dominio abusivo.",{"type":52,"title":53,"headers":54,"rows":58},"comparison","Kutt, Shlink y un servicio público",[5,55,56,57],"Kutt","Shlink","Servicio público (bit.ly…)",[59,64,69,73,77,82],[60,61,62,63],"Interfaz web","Integrada","Cliente web aparte","Sí",[65,66,67,68],"API REST","Sí, clave por usuario","Sí, claves gestionadas por línea de comandos","Sí, a menudo de pago",[70,71,71,72],"Tu propio dominio","Sí, incluido","Opción de pago",[74,75,75,76],"Estadísticas","En tu base de datos","En el proveedor",[78,79,80,81],"Cuentas de equipo","Sí, creadas por el administrador","No, acceso por clave de API","Según el plan",[83,84,85,86],"Almacenamiento","SQLite, PostgreSQL o MySQL","SQLite, PostgreSQL, MySQL o SQL Server","Gestionado por el proveedor",{"type":38,"title":88,"body":89},"Requisitos previos","Basta un VPS Ubuntu 24.04 con 512 MB de RAM y 5 GB de disco: Kutt funciona en un solo contenedor Node.js y usa unos 200 MB de memoria. Necesitas Docker con el plugin Compose, nginx y certbot para HTTPS, y un nombre DNS que apunte al VPS.\n\nElige ese nombre con cuidado, porque forma cada enlace: cuanto más corto, más cortos tus enlaces. Un subdominio como `go.tu-dominio.com` o un dominio pequeño dedicado funciona muy bien. Kutt lo escribe en cada enlace que crea, así que cambiarlo después no reescribe los enlaces ya compartidos.",{"type":91,"title":92,"steps":93},"steps","Instalar Kutt con Docker Compose",[94,97,100,103],{"title":95,"body":96},"Preparar el directorio y los secretos","Crea el directorio de la aplicación y un archivo `.env` con la clave secreta (firma las sesiones) y el dominio de los enlaces cortos. Sustituye `go.example.com` por tu propio nombre.\n```bash\nmkdir -p \u002Fopt\u002Fkutt && cd \u002Fopt\u002Fkutt\nprintf 'SECRET_KEY=%s\\nDOMAIN=go.example.com\\n' \"$(openssl rand -hex 32)\" > .env\nchmod 600 .env\n```",{"title":98,"body":99},"Escribir el archivo compose","Crea `compose.yaml`. El puerto solo se publica en la interfaz local: solo nginx accede a él. El registro público y los enlaces anónimos siguen cerrados, y la base SQLite vive en un volumen con nombre.\n```yaml\nservices:\n  kutt:\n    image: kutt\u002Fkutt:v3.2.6\n    restart: unless-stopped\n    ports:\n      - \"127.0.0.1:8107:3000\"\n    environment:\n      JWT_SECRET: ${SECRET_KEY:?SECRET_KEY requis}\n      DEFAULT_DOMAIN: ${DOMAIN:?DOMAIN requis}\n      DB_CLIENT: better-sqlite3\n      DB_FILENAME: \u002Fvar\u002Flib\u002Fkutt\u002Fdata.sqlite\n      TRUST_PROXY: \"true\"\n      DISALLOW_REGISTRATION: \"true\"\n      DISALLOW_ANONYMOUS_LINKS: \"true\"\n    volumes:\n      - kutt-data:\u002Fvar\u002Flib\u002Fkutt\n      - kutt-custom:\u002Fkutt\u002Fcustom\nvolumes:\n  kutt-data: {}\n  kutt-custom: {}\n```",{"title":101,"body":102},"Arrancar y comprobar","Arranca la pila. Kutt aplica sus migraciones al iniciar y la sonda de salud debe responder 200.\n```bash\ndocker compose up -d\ndocker compose ps\ncurl -s -o \u002Fdev\u002Fnull -w '%{http_code}\\n' http:\u002F\u002F127.0.0.1:8107\u002Fapi\u002Fv2\u002Fhealth\n```",{"title":104,"body":105},"Publicar Kutt con HTTPS","Declara un host virtual de nginx que reenvíe las peticiones al puerto local y pide el certificado con certbot. La cabecera `X-Forwarded-For` permite a Kutt registrar la dirección real del visitante (`TRUST_PROXY`).\n```nginx\nserver {\n    server_name go.example.com;\n    location \u002F {\n        proxy_pass http:\u002F\u002F127.0.0.1:8107;\n        proxy_set_header Host $host;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}\n```\n```bash\ncertbot --nginx -d go.example.com\n```",{"type":107,"title":108,"body":109},"tip","Crea la cuenta de administrador sin esperar","Kutt no crea ninguna cuenta por adelantado: mientras no exista ningún usuario, la página de inicio redirige al formulario **create admin**, y el primer visitante se convierte en administrador. Abre tu dominio en cuanto funcione HTTPS y crea tu cuenta con una contraseña robusta. Después el formulario rechaza cualquier nueva creación.",{"type":38,"title":111,"body":112},"Crear enlaces por la API","En los ajustes de tu cuenta, genera una clave de API y envíala en la cabecera `X-API-KEY`. El cuerpo JSON acepta `target` (la dirección larga) y, opcionalmente, `customurl`, `password`, `description` y `expire_in` (una duración como `7 days`).\n```bash\ncurl -s -X POST https:\u002F\u002Fgo.example.com\u002Fapi\u002Fv2\u002Flinks \\\n  -H \"X-API-KEY: $KUTT_API_KEY\" \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"target\": \"https:\u002F\u002Fexample.com\u002Fune\u002Fadresse\u002Ftres\u002Flongue\", \"customurl\": \"promo\", \"expire_in\": \"7 days\"}'\n```\n\nLa respuesta contiene el campo `link`, el enlace corto completo. El mismo punto de acceso con `GET` lista tus enlaces con su número de visitas, y `\u002Fapi\u002Fv2\u002Flinks\u002F\u003Cid>\u002Fstats` devuelve las estadísticas detalladas de un enlace. Así conectas Kutt a un CRM, a un script de facturación o a una campaña de correo: cada enlace saliente se acorta y se mide sin intervención.",{"type":38,"title":114,"body":115},"Trabajar en equipo","El registro está cerrado: el administrador crea las cuentas desde la página de administración. Cada miembro tiene sus propios enlaces, sus estadísticas privadas y su clave de API, que se revoca generando una nueva. El administrador ve todos los enlaces de la instancia y puede bloquear uno abusivo; es importante, porque un acortador con tu dominio compromete su reputación.\n\nKutt también acepta dominios adicionales, que se añaden en los ajustes. Cada uno debe apuntar al VPS y tener su propio certificado: empieza con un solo dominio y añade los demás de uno en uno.",{"type":38,"title":117,"body":118},"Activar el correo","Kutt se instala con el correo desactivado: sin restablecimiento de contraseña por correo ni verificación de direcciones. Para activarlos, añade al entorno del contenedor `MAIL_ENABLED: \"true\"` y las variables `MAIL_HOST`, `MAIL_PORT`, `MAIL_USER`, `MAIL_PASSWORD` y `MAIL_FROM` de tu servidor SMTP, y reinicia con `docker compose up -d`. Guarda bien la contraseña de administrador mientras tanto: sin correo, perderla se resuelve en la base de datos.",{"type":38,"title":120,"body":121},"Dimensionar el VPS","Para un equipo y unos miles de enlaces, 512 MB de RAM y una vCPU sobran: una redirección es una simple lectura en la base. La base SQLite crece con las visitas registradas, del orden de unos cientos de bytes por clic. Por encima de cientos de miles de clics al día, pasa a PostgreSQL (`DB_CLIENT: pg`) y activa Redis (`REDIS_ENABLED`) para la caché.",{"type":38,"title":123,"body":124},"Copia de seguridad y actualización","Todos los datos están en el volumen `kutt-data`: la base SQLite contiene las cuentas, los enlaces y las estadísticas. Detén el contenedor un momento para obtener una copia coherente y archiva el volumen.\n```bash\ndocker compose stop kutt\ndocker run --rm -v kutt_kutt-data:\u002Fdata -v \"$PWD\":\u002Fbackup alpine \\\n  tar czf \u002Fbackup\u002Fkutt-$(date +%F).tar.gz -C \u002Fdata .\ndocker compose start kutt\n```\n\nPara actualizar, lee las notas de versión del proyecto, cambia la etiqueta de la imagen y descarga la nueva: las migraciones se aplican al arrancar. Haz siempre una copia justo antes.\n```bash\n# changer l'étiquette de l'image dans compose.yaml, puis :\ndocker compose pull && docker compose up -d\n```",{"type":38,"title":126,"body":127},"Instalación en un clic desde el Marketplace de ServOrbit","En un VPS de ServOrbit, Kutt se instala desde el Marketplace de tu área de cliente: elige la dirección — un subdominio corto de uno de tus dominios o el subdominio gratuito del VPS, con HTTPS incluido — y haz clic en Instalar. El script despliega el contenedor, genera la clave secreta, ajusta el dominio de los enlaces y configura nginx. Solo queda abrir tu dominio para crear la cuenta de administrador y tu primera clave de API.","Tus enlaces cortos, en tu dominio","Un VPS ServOrbit Ubuntu 24.04 con 512 MB de RAM basta para Kutt. Instalación en un clic desde el Marketplace, clave secreta generada para ti, HTTPS en tu dominio o en el subdominio gratuito del VPS.","Descubrir Kutt","\u002Fmarketplace\u002Fautomatizacion\u002Fkutt",[133,150,169],{"id":134,"slug":135,"slugs":136,"title":140,"excerpt":141,"readTime":17,"views":18,"isPinned":19,"publishedAt":142,"updatedAt":143,"category":144,"categories":145,"featuredImage":29,"bgImage":30,"posterImage":147,"relatedSolution":148},87,"alojar-listmonk-en-un-vps",{"fr":137,"en":138,"ar":139,"es":135},"heberger-listmonk","host-listmonk-on-your-own-vps","استضافة-listmonk-على-خادمك-الافتراضي-الخاص-vps","Alojar Listmonk en su propio VPS","Despliegue Listmonk en su VPS: instalación Docker, SMTP avanzado, gestión de rebotes, actualizaciones y copias de seguridad PostgreSQL.","2026-03-25T00:00:00+00:00","2026-09-20T21:13:53+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[146],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fheberger-listmonk-poster.svg",{"categorySlug":24,"appSlug":149},"listmonk",{"id":151,"slug":152,"slugs":153,"title":157,"excerpt":158,"readTime":159,"views":160,"isPinned":19,"publishedAt":161,"updatedAt":162,"category":163,"categories":164,"featuredImage":29,"bgImage":30,"posterImage":166,"relatedSolution":167},249,"alojar-mautic-en-un-vps-automatizacion-marketing",{"fr":154,"en":155,"ar":156,"es":152},"self-host-mautic-vps","self-host-mautic-on-a-vps-open-source-marketing-automation","استضافة-mautic-على-vps-أتمتة-التسويق-مفتوحة-المصدر","Alojar Mautic en un VPS: automatización de marketing open source","Aloje Mautic en su VPS y sustituya Mailchimp o HubSpot por una plataforma GPL: campañas de email, lead scoring, segmentación, sin cargos por contacto.",11,1,"2026-01-17T00:00:00+00:00","2026-10-13T14:10:29+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[165],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fself-host-mautic-vps-poster.svg",{"categorySlug":33,"appSlug":168},"mautic",{"id":170,"slug":171,"slugs":172,"title":176,"excerpt":177,"readTime":178,"views":18,"isPinned":19,"publishedAt":179,"updatedAt":180,"category":181,"categories":182,"featuredImage":29,"bgImage":30,"posterImage":184,"relatedSolution":185},251,"alojar-linkwarden-en-un-vps",{"fr":173,"en":174,"ar":175,"es":171},"heberger-linkwarden-vps","self-host-linkwarden-on-a-vps-team-bookmark-management","استضافة-linkwarden-على-vps-إدارة-الإشارات-المرجعية-للفريق","Alojar Linkwarden en VPS: gestión de marcadores de equipo","Despliegue Linkwarden en su VPS: centralice la vigilancia tecnológica de la agencia con colecciones compartidas, permisos por equipo y extensión multiusuario.",8,"2026-08-13T00:00:00+00:00","2026-09-21T15:22:04+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[183],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fheberger-linkwarden-vps-poster.svg",{"categorySlug":186,"appSlug":187},"colaboracion-productividad","linkwarden",1793627938164]