[{"data":1,"prerenderedAt":195},["ShallowReactive",2],{"seo-verification":3,"blog-alojar-pocketbase-en-un-vps-es":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-alojar-pocketbase-en-un-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":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":36,"sections":37,"ctaTitle":137,"ctaBody":138,"ctaButton":139,"ctaUrl":140,"relatedPosts":141},62,"alojar-pocketbase-en-un-vps",{"fr":12,"en":13,"ar":14,"es":10},"heberger-pocketbase-vps","hosting-pocketbase-on-a-vps","استضافة-pocketbase-على-خادم-vps","Alojar PocketBase en un VPS: guía completa","Despliega PocketBase en tu VPS con Docker, HTTPS, OAuth, copias de seguridad automáticas y resolución de problemas. Guía paso a paso, 2026.",10,1,false,"2026-04-19T00:00:00+00:00","2026-09-08T22:00:02+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},6,"Bases de datos","bases-de-donnees","bg-teal-500\u002F10 text-teal-400","database",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-pocketbase-vps-poster.svg",{"categorySlug":34,"appSlug":35},"bases-de-datos","pocketbase","PocketBase cabe en un único binario Go: base de datos SQLite integrada, autenticación, almacenamiento de archivos, API REST y suscripciones en tiempo real, todo con una interfaz de administración incorporada. Es el backend ideal para autoalojar en un VPS ligero para tus aplicaciones web y móviles. Esta guía completa te lleva desde la instalación con Docker hasta la configuración HTTPS, la autenticación OAuth, las copias de seguridad automáticas y los ajustes avanzados.",[38,42,53,56,75,78,81,85,88,91,132,135],{"type":39,"title":40,"body":41},"h2","Por qué autoalojar PocketBase en un VPS","PocketBase es un backend-as-a-service de código abierto distribuido como un único binario: sin Postgres separado, sin Redis, sin una pila compleja que orquestar. Todo funciona sobre SQLite, lo que lo hace perfectamente adecuado para un VPS de gama de entrada.\n\nAl autoalojarlo, mantienes el control total de los datos de tus usuarios y sus archivos, sin depender de un Firebase o Supabase administrado con cuotas y latencia que pueden ser problemáticas según tu región. Un VPS te da una IP fija, un dominio personalizado y copias de seguridad que controlas completamente.\n\nComo PocketBase escribe en una única carpeta `pb_data`, tu estrategia de backup se reduce a copiar ese directorio, lo que simplifica enormemente la operación comparado con un clúster de base de datos clásico.",{"type":43,"title":44,"items":45},"ul","Beneficios concretos de autoalojar PocketBase",[46,47,48,49,50,51,52],"Un único binario para desplegar: arranca en segundos, huella de memoria mínima (a menudo menos de 100 MB de RAM).","Base de datos SQLite integrada: cero servicios de base de datos que administrar, copia de seguridad copiando la carpeta `pb_data`.","Autenticación completa (email\u002Fcontraseña, OAuth2, OTP, LDAP) y reglas de acceso granulares por colección.","API en tiempo real mediante Server-Sent Events para sincronizar automáticamente tus clientes.","Interfaz de administración web completa para gestionar colecciones, usuarios, permisos y archivos.","Soberanía de los datos: tus usuarios y sus archivos permanecen en tu infraestructura, detrás de tu dominio.","Coste predecible: el precio del VPS no varía con el tráfico, a diferencia de la facturación por solicitud.",{"type":39,"title":54,"body":55},"Requisitos precisos: VPS, sistema y software","PocketBase es extremadamente ligero. Aquí lo que necesitas según tu carga:\n\n**Mínimo absoluto**: 1 vCPU, 512 MB de RAM. Suficiente para un proyecto en desarrollo o una aplicación pequeña con menos de 1.000 usuarios activos.\n\n**Recomendado en producción**: 1 vCPU, 1 GB de RAM. PocketBase gestiona sin dificultad un proyecto de tamaño pequeño a mediano con esta configuración.\n\n**Para volúmenes altos**: 2 vCPU, 2 GB de RAM. El límite suele ser la escritura concurrente en SQLite, no la CPU.\n\nEn cuanto al almacenamiento, planifica 20 a 40 GB SSD NVMe según el volumen de archivos. Evita sistemas de archivos de red (NFS) que pueden corromper la base de datos.\n\nSoftware requerido: Docker 24+ y Docker Compose v2, un dominio apuntando a la IP del VPS mediante un registro A, un proxy inverso (Caddy, Nginx o Traefik) para gestionar TLS.",{"type":57,"title":58,"steps":59},"steps","Desplegar PocketBase en VPS paso a paso",[60,63,66,69,72],{"title":61,"body":62},"Preparar el VPS y el DNS","Conéctate por SSH, actualiza el sistema con `apt update && apt upgrade -y`, luego instala Docker con el script oficial: `curl -fsSL https:\u002F\u002Fget.docker.com | sh`. Añade tu usuario al grupo Docker con `usermod -aG docker $USER`.\n\nCrea un registro DNS de tipo A que apunte `app.your-domain.com` a la IP pública de tu VPS. Verifica con `dig app.your-domain.com`.",{"title":64,"body":65},"Crear la estructura de archivos","Crea un directorio dedicado y el archivo de composición:\n\n```bash\nmkdir -p \u002Fopt\u002Fpocketbase && cd \u002Fopt\u002Fpocketbase\n```\n\nCrea el archivo `docker-compose.yml` con el siguiente contenido:\n\n```yaml\nservices:\n  pocketbase:\n    image: ghcr.io\u002Fmuchobien\u002Fpocketbase:latest\n    restart: unless-stopped\n    volumes:\n      - .\u002Fpb_data:\u002Fpb_data\n    expose:\n      - \"8090\"\n```\n\nNo publiques el puerto `8090` directamente a Internet — deja que el proxy inverso lo gestione.",{"title":67,"body":68},"Configurar HTTPS con Caddy (proxy inverso recomendado)","Caddy obtiene y renueva automáticamente los certificados Let's Encrypt. Crea `\u002Fopt\u002Fpocketbase\u002FCaddyfile`:\n\n```\napp.your-domain.com {\n    reverse_proxy pocketbase:8090\n}\n```\n\nAñade el servicio Caddy en `docker-compose.yml`:\n\n```yaml\n  caddy:\n    image: caddy:2-alpine\n    restart: unless-stopped\n    ports:\n      - \"80:80\"\n      - \"443:443\"\n    volumes:\n      - .\u002FCaddyfile:\u002Fetc\u002Fcaddy\u002FCaddyfile\n      - caddy_data:\u002Fdata\n    depends_on:\n      - pocketbase\n\nvolumes:\n  caddy_data:\n```\n\nCaddy activa WebSockets por defecto. **Si prefieres Nginx**, añade las cabeceras `Upgrade` y `Connection` en tu `location \u002F`.",{"title":70,"body":71},"Arrancar y verificar","Inicia la pila con `docker compose up -d` y sigue los logs:\n\n```bash\ndocker compose logs -f pocketbase\n```\n\nDeberías ver una línea indicando que PocketBase escucha en `0.0.0.0:8090`. Verifica HTTPS con `curl -I https:\u002F\u002Fapp.your-domain.com\u002F_\u002F` — debe devolver `HTTP\u002F2 200`.",{"title":73,"body":74},"Crear la cuenta super-administrador","Abre `https:\u002F\u002Fapp.your-domain.com\u002F_\u002F` en tu navegador. En el primer acceso, PocketBase te invita a crear una cuenta super-administrador (email + contraseña). **Hazlo inmediatamente** tras el arranque — antes de hacer pública la URL — porque cualquier persona que acceda a `\u002F_\u002F` puede crear esta primera cuenta en una instancia nueva.",{"type":39,"title":76,"body":77},"Configurar autenticación OAuth (Google, GitHub, GitLab)","PocketBase soporta nativamente OAuth2 con varios proveedores: Google, GitHub, GitLab, Discord, Twitter\u002FX, Microsoft, Apple y otros. La configuración se hace íntegramente desde la interfaz de administración.\n\n**Para Google OAuth**:\n1. Abre la \u003Ca href=\"https:\u002F\u002Fconsole.cloud.google.com\u002F\">Google Cloud Console\u003C\u002Fa>, crea un proyecto y activa la API \"OAuth consent screen\".\n2. En \"Credentials\", crea un \"OAuth 2.0 Client ID\" de tipo \"Web application\".\n3. Añade `https:\u002F\u002Fapp.your-domain.com\u002Fapi\u002Foauth2-redirect` como URI de redirección autorizada.\n4. Copia el `Client ID` y el `Client secret`.\n5. En PocketBase `\u002F_\u002F`, ve a **Settings → Auth providers → Google**, actívalo y pega tus credenciales.\n\n**Para GitHub OAuth**:\n1. En GitHub, ve a **Settings → Developer settings → OAuth Apps → New OAuth App**.\n2. Indica `https:\u002F\u002Fapp.your-domain.com` como Homepage URL y `https:\u002F\u002Fapp.your-domain.com\u002Fapi\u002Foauth2-redirect` como Authorization callback URL.\n3. Copia el `Client ID` y genera un `Client Secret`.\n4. Activa GitHub en **Settings → Auth providers** de PocketBase.\n\nCada proveedor activo aparecerá automáticamente en la página de login generada por PocketBase. Tu frontend solo necesita llamar a `pb.collection('users').authWithOAuth2({ provider: 'google' })` mediante el SDK JavaScript.",{"type":39,"title":79,"body":80},"Copias de seguridad automáticas: SQLite y archivos","PocketBase almacena todo en la carpeta `pb_data`: la base de datos SQLite (`pb_data\u002Fdata.db`), los archivos subidos (`pb_data\u002Fstorage\u002F`) y los logs. Una copia de seguridad completa es simplemente archivar esa carpeta.\n\n**Método 1 — cron simple**: añade esta línea a tu crontab (`crontab -e`) para un archivo diario a las 3am:\n\n```bash\n0 3 * * * tar czf \u002Fvar\u002Fbackups\u002Fpocketbase-$(date +\\%F).tar.gz \u002Fopt\u002Fpocketbase\u002Fpb_data && find \u002Fvar\u002Fbackups -name 'pocketbase-*.tar.gz' -mtime +7 -delete\n```\n\n**Método 2 — copias de seguridad integradas de PocketBase**: desde `\u002F_\u002F`, ve a **Settings → Backups**. PocketBase puede crear archivos de `pb_data` desde el admin o mediante la API (`POST \u002Fapi\u002Fbackups`).\n\n**Método 3 — rclone a S3**: para copia automática fuera del servidor:\n\n```bash\n0 4 * * * rclone sync \u002Fopt\u002Fpocketbase\u002Fpb_data your-remote:pocketbase-backup\u002F\n```\n\nConserva siempre una copia fuera del servidor — si el disco falla, una copia solo local no sirve de nada.",{"type":82,"title":83,"body":84},"tip","Modo WAL de SQLite y rendimiento","PocketBase activa el modo WAL (Write-Ahead Logging) de SQLite por defecto en versiones recientes. Este modo permite lecturas concurrentes durante las escrituras, evitando que una inserción bloquee todas las lecturas. Si experimentas timeouts bajo carga alta, verifica con `PRAGMA journal_mode;` en el admin SQL — la respuesta debe ser `wal`.\n\nPara tráfico elevado, coloca `pb_data` en un volumen NVMe y evita cualquier sistema de archivos de red.",{"type":39,"title":86,"body":87},"Resolución de problemas: errores comunes","**Puerto ya en uso**: si `docker compose up` falla con `bind: address already in use`, verifica con `ss -tlnp | grep ':80'` qué servicio ocupa el puerto. Detén nginx o Apache (`systemctl stop nginx`) o cambia sus puertos.\n\n**Permisos en `pb_data`**: PocketBase corre como usuario `nobody` (UID 65534) en el contenedor oficial. Si montaste una carpeta creada por root, el proceso no puede escribir. Corrige con `chown -R 65534:65534 \u002Fopt\u002Fpocketbase\u002Fpb_data`.\n\n**`\u002F_\u002F` inaccesible tras el arranque**: verifica que el proxy inverso apunte al nombre del servicio Docker (`pocketbase:8090`) y no a `localhost:8090`.\n\n**Actualizar PocketBase**: cambia el tag de la imagen en `docker-compose.yml` luego `docker compose pull && docker compose up -d`. PocketBase aplica migraciones de esquema automáticamente. Haz una copia de seguridad de `pb_data` antes de cualquier actualización mayor.\n\n**Certificado Let's Encrypt no obtenido**: Caddy necesita los puertos 80 y 443 accesibles desde Internet. Verifica tu firewall (`ufw status`).",{"type":39,"title":89,"body":90},"Para ir más lejos: CLI admin, colecciones y hooks","**CLI de administración**: PocketBase expone una CLI para operaciones comunes. Desde el contenedor: `docker exec -it pocketbase_pocketbase_1 \u002Fpb\u002Fpocketbase --help`.\n\n**Colecciones personalizadas**: en `\u002F_\u002F`, crea tus colecciones (equivalentes a tablas) definiendo campos tipados. Las reglas de API se expresan en sintaxis PocketBase (`@request.auth.id != \"\"` para restringir a usuarios autenticados).\n\n**Hooks (JavaScript del lado del servidor)**: desde PocketBase v0.17, puedes extender el backend con scripts JavaScript del lado del servidor (`pb_hooks\u002F*.pb.js`). Ejemplos: enviar un email al crear un usuario, validar datos complejos, disparar un webhook. Estos hooks son archivos montados en el contenedor:\n\n```yaml\nvolumes:\n  - .\u002Fpb_data:\u002Fpb_data\n  - .\u002Fpb_hooks:\u002Fpb_hooks\n```\n\n**SDK JavaScript**: el SDK oficial (`npm install pocketbase`) simplifica las llamadas desde tu frontend React, Vue o móvil. Gestiona la autenticación, el refresco del token y las suscripciones en tiempo real (`pb.collection('tasks').subscribe('*', callback)`).",{"type":92,"title":93,"headers":94,"rows":99},"comparison","PocketBase vs alternativas self-hosted",[95,96,97,98],"Criterio","PocketBase","Supabase self-hosted","Appwrite",[100,105,110,115,119,123,127],[101,102,103,104],"Complejidad de instalación","Muy baja (1 binario o 1 contenedor)","Alta (10+ servicios)","Media (6 servicios)",[106,107,108,109],"RAM mínima","512 MB","4 GB+","2 GB+",[111,112,113,114],"Base de datos","SQLite integrado","PostgreSQL","MariaDB",[116,117,118,117],"Autenticación OAuth","Sí (nativa)","Sí (GoTrue)",[120,121,122,122],"Tiempo real","Server-Sent Events","WebSocket",[124,125,126,125],"Almacenamiento de archivos","Sí (local + S3)","Sí (compatible S3)",[128,129,130,131],"Escalado horizontal","No (SQLite archivo único)","Sí (PostgreSQL)","Limitado",{"type":82,"title":133,"body":134},"Documentación oficial","Para configuración avanzada y opciones específicas de la herramienta, consulta la \u003Ca href=\"https:\u002F\u002Fpocketbase.io\u002Fdocs\u002F\">documentación oficial de PocketBase\u003C\u002Fa>. Esta guía cubre el despliegue en VPS; la documentación del editor es la referencia para ajustes finos, actualizaciones mayores y casos de uso específicos.",{"type":82,"body":136},"Si quieres probar PocketBase sin Docker, descarga el binario Linux desde \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpocketbase\u002Fpocketbase\u002Freleases\">github.com\u002Fpocketbase\u002Fpocketbase\u002Freleases\u003C\u002Fa>, ejecuta `.\u002Fpocketbase serve --http=0.0.0.0:8090` y crea un servicio systemd para que se reinicie automáticamente. Este enfoque es incluso más ligero que Docker en VPS pequeños.","Lance su backend PocketBase en unos minutos","El VPS Cloud ServOrbit le da un entorno Docker listo para usar, una IP fija y discos SSD rápidos para alojar PocketBase con SSL automático y copias de seguridad simplificadas.","Desplegar en VPS Cloud","\u002Fvps-cloud",[142,160,178],{"id":143,"slug":144,"slugs":145,"title":149,"excerpt":150,"readTime":151,"views":152,"isPinned":19,"publishedAt":153,"updatedAt":21,"category":154,"categories":155,"featuredImage":30,"bgImage":31,"posterImage":157,"relatedSolution":158},56,"alojar-postgresql-en-un-vps",{"fr":146,"en":147,"ar":148,"es":144},"heberger-postgresql-vps","postgresql-on-a-vps-a-reliable-and-controlled-database","postgresql-على-خادم-vps-قاعدة-بيانات-موثوقة-ومتحكم-بها","PostgreSQL en VPS: base de datos fiable y controlada","Aloje PostgreSQL en un VPS: volúmenes, copias de seguridad, acceso de red restringido y configuración sólida para sus aplicaciones.",4,0,"2026-04-25T00:00:00+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[156],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-postgresql-vps-poster.svg",{"categorySlug":34,"appSlug":159},"postgresql-stack",{"id":161,"slug":162,"slugs":163,"title":167,"excerpt":168,"readTime":169,"views":152,"isPinned":19,"publishedAt":170,"updatedAt":171,"category":172,"categories":173,"featuredImage":30,"bgImage":31,"posterImage":175,"relatedSolution":176},57,"alojar-mysql-en-un-vps",{"fr":164,"en":165,"ar":166,"es":162},"heberger-mysql-vps","hosting-mysql-on-a-vps","استضافة-mysql-على-خادم-vps","Alojar MySQL en un VPS: guía completa","Instale MySQL 8.4 LTS en un VPS: requisitos, seguridad, rendimiento InnoDB, acceso remoto seguro, copias de seguridad automatizadas y resolución de errores.",9,"2026-04-24T00:00:00+00:00","2026-09-17T14:09:38+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[174],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-mysql-vps-poster.svg",{"categorySlug":34,"appSlug":177},"mysql-stack",{"id":179,"slug":180,"slugs":181,"title":185,"excerpt":186,"readTime":17,"views":152,"isPinned":19,"publishedAt":187,"updatedAt":188,"category":189,"categories":190,"featuredImage":30,"bgImage":31,"posterImage":192,"relatedSolution":193},58,"alojar-redis-en-un-vps",{"fr":182,"en":183,"ar":184,"es":180},"heberger-redis-vps","hosting-redis-on-a-vps","استضافة-redis-على-خادم-vps","Alojar Redis en un VPS: la guía completa","Despliegue Redis en su VPS Cloud: requisitos de RAM\u002FCPU, seguridad (ACL, TLS), persistencia RDB\u002FAOF, resolución de errores y alta disponibilidad.","2026-04-23T00:00:00+00:00","2026-09-08T21:59:59+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[191],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-redis-vps-poster.svg",{"categorySlug":34,"appSlug":194},"redis-stack",1789665003642]