¿Qué es PocketBase? Una alternativa de OpenSource a Firebase

Hace tiempo quería escribir este artículo que iré ampliando poco a poco sobre cómo utilizar esta herramienta.

Primero que nada ¿Qué es PocketBase?

PocketBase (https://pocketbase.io/) es una aplicación de Bakend as a Service (BaaS), que se postula como una alternativa OpenSource a Firebase. Está construido sobre Go (GO LANG) y ofrece una interfaz bastante amigable e intuitiva para ejecutar.

Su enfoque es brindar un backend fácil de configurar y portable (de ahí su nombre), en cuyo caso solo haría falta copiar y pegar la carpeta que lo contiene de un servidor a otro. Esto es posible porque además de llevarse consigo los archivos de configuración, migration y el ejecutable, utiliza una base de datos SQLite.

¿Qué ofrece PocketBase?

En primer lugar, ser OpenSource, con lo cual cualquier persona puede trabajar con su API e incluso usarlo como un framework de Go y desarrollar sobre él un sistema con la lógica empresarial que necesite.

Su comunidad es muy activa, y a través de su proyecto en Github (https://github.com/pocketbase/pocketbase) comparten dudas y resuelven problemas. El equipo de desarrollo mantiene actualizando permanentemente la herramienta, con lo cual hemos tenido una muy buena experiencia. En muchos casos, se retoman las sugerencias y necesidades de quienes utilizamos la aplicación y son incluidas en la siguiente versión actualizada.

Pero además de esto, Pocketbase ofrece:

  1. Suscripción a eventos de base de datos en tiempo real
  2. Dashboard UI completamente intuitivo y listo para usar
  3. Soporte para ejecutarse en MacOS, Windows y Linux
  4. REST API
  5. Autenticación con Email y Password o con OAuth2 (Google, GitHub, Microsoft, etc.)
  6. Gestión de roles de usuarios y permisos
  7. Manejo de archivos, incluyendo almacenamiento dentro del mismo servidor o a través de S3
  8. Posibilidad de usarlo como Framework de Go o de Javascript
  9. Client-side SDKs para Dart y para Javascript. Lo que le permite integrarse por ejemplo con Flutter, Svelt, Vue.js, React o Angular.

Base de datos SQLite

El hecho de trabajar con SQLite le hace ganar no solo la ventaja de su portabilidad, sino además que le libre de tener que instalar algún gestor adicional. Por otra parte, su uso es bastante ligero en uso de recursos. Según se informa en su sitio, PocketBase es capaz de manejar 10,000 conexiones en tiempo real persistentes en un VPS económico de solo 2vCPU, 4GB de RAM.

PocketBase se organiza a través de Colecciones (Collections) que representarían las tablas de la base de datos SQLite, y estas contendrían los campos (Fields). Los cuales pueden ser:

TipoEjemploModificadores
text"", "example"
editor"", "<p>example</p>"
number0, -1, 1, 1.5+ (add), - (subtract)
boolfalse, true
email"", "test@example.com"
url"", "https://example.com"
date"", "2022-01-01 00:00:00.000Z"
select (single)"", "optionA"
select (multiple)[], ["optionA", "optionB"]+ (append), - (remove)
relation (single)"", "JJ2YRU30FBG8MqX"
relation (multiple)[], ["JJ2YRU30FBG8MqX", "eP2jCr1h3NGtsbz"]+ (append), - (remove)
file (single)"", "example123_Ab24ZjL.png"
file (multiple)[], ["file1_Ab24ZjL.png", "file2_Frq24ZjL.txt"]- (remove)
jsonany json value

ILAMDOCS: un proyecto PocketBase

En Nible Tecnología hemos experimentado con el uso de PocketBase para diferentes proyectos. Uno de ellos, es el actual sistema del Centro de Documentación Patrimonial ILAMDOCS (https://ilamdocs.org/), el cual es un proyecto en constante desarrollo y que publica su código usando PocketBase en Github (https://github.com/vanevalverdes/ilamdocs) para uso de otras organizaciones.

Sin lugar a dudas, PocketBase es una muy buena alternativa para proyectos pequeños y medianos que buscan un backend sencillo y eficiente.

Preguntas frecuentes

Finalmente, reproducimos aquí las preguntas frecuentes traducidas por nosotros al español, por considerarlas útiles para quienes quieren entender un poco más de esta herramienta.

  1. ¿Ofrecen servicios de alojamiento?

No. PocketBase solo está disponible para alojamiento propio (self-hosted). Si estás buscando opciones gratuitas para pequeñas aplicaciones de prueba (POC) y proyectos de hobby, puedes revisar:

  • Fly.io – consulta también la guía de Alojamiento gratuito en Fly.io (la capa gratuita incluye 1 vCPU, 256 MB de RAM y 1 GB de almacenamiento en disco /hasta 3 GB, pero requiere detalles de tarjeta/).
  • PocketHost.io (instancia VM única compartida, mantenida y proporcionada por benallfree).

Para una configuración más tradicional, puedes utilizar cualquier proveedor de VPS que ofrezca almacenamiento persistente, como Hetzner, Vultr, UpCloud, Linode, DigitalOcean, etc. La guía “Going to production” contiene información general sobre cómo implementar tu aplicación PocketBase y algunas recomendaciones de configuración.

  1. ¿Escala?

Solo en un único servidor, es decir, verticalmente. La mayoría de las veces, es posible que no necesites la complejidad de gestionar un conjunto de máquinas y servicios solo para ejecutar tu backend. PocketBase es una excelente opción para aplicaciones pequeñas y medianas, como SaaS, backend de API móvil, intranet, etc. Incluso sin optimizaciones, PocketBase puede manejar fácilmente más de 10,000 conexiones en tiempo real persistentes en un VPS Hetzner CAX11 económico ($4) (2vCPU, 4GB de RAM). Puedes explorar el repositorio oficial de benchmarks para obtener más detalles.

  1. ¿Cómo ejecutar código personalizado?

PocketBase difiere de otras soluciones de backend similares como Firebase, Supabase, Nhost, etc., y no admite la ejecución de funciones en la nube. En cambio, PocketBase se puede utilizar como un marco (framework) en Go o JS que te permite construir tu propia lógica comercial específica de la aplicación y aún así tener un backend portátil al final (consulta la guía “Use as framework”).

  1. ¿Admite el inicio de sesión con Google o Facebook?

Sí, actualmente admitimos más de 15 proveedores OAuth2, incluidos Apple, Google, Facebook, Microsoft, VK, GitHub, GitLab y muchos más.

  1. ¿Viene con una interfaz de usuario frontal para la pantalla de inicio de sesión, registro, etc.?

No. PocketBase solo proporciona SDK para la integración del lado del cliente y eres libre de implementar tu propia interfaz de usuario frontal. Para mayor comodidad, hay páginas predeterminadas para los enlaces de confirmación de correo electrónico del usuario (restablecimiento de contraseña, verificación, etc.), pero también puedes configurar las tuyas propias actualizando las URL en la configuración de la interfaz de administración (Admin UI settings).

  1. ¿Puedo usar la base de datos X?

PocketBase utiliza SQLite integrado (en modo WAL) y no hay planes para admitir otras bases de datos. Para la mayoría de las consultas, SQLite (en modo WAL) supera a las bases de datos tradicionales como MySQL, MariaDB o PostgreSQL (especialmente para operaciones de lectura). Si necesitas replicación y recuperación ante desastres, una excelente aplicación complementaria podría ser Litestream.

  1. ¿Puedo hacer donaciones?

No. En el pasado, aceptábamos donaciones (estoy muy agradecido con todos los que contribuyeron), pero las contribuciones financieras de individuos generalmente vienen con algunas “expectativas no expresadas” y, para evitar la carga mental y el sentimiento de culpa cuando no se trabaja en la solicitud de función del contribuyente, decidí dejar de aceptar donaciones para PocketBase. Si eres parte de una organización que ofrece patrocinios o subvenciones y desea respaldar financieramente el desarrollo del proyecto, no dudes en ponerte en contacto con support en pocketbase.io, pero solo si no hay “cuerdas adjuntas”.

  1. ¿Dónde puedo encontrar ayuda para mi aplicación PocketBase?

Siempre puedes buscar ayuda en nuestro foro de discusiones público, abrir un problema o solicitud de función o ponerte en contacto con el soporte en pocketbase.io.