Índice del diarioDockup / nota de campo
Note / self-host-grocy

Cómo alojar Grocy por tu cuenta en 2026: datos de inventario, zona horaria y backups

Aloja Grocy por tu cuenta con los puertos correctos, almacenamiento persistente, HTTPS, secretos, backups y comprobaciones de actualización. Aprende a solucionar el error que aparece cuando la base de datos SQLite no puede escribir.

Trata Grocy como un sistema pequeño, no como una imagen de Docker. El objetivo de cara al usuario es claro: gestionar el inventario del hogar, la compra de alimentos, las tareas y el equipamiento; el despliegue solo es aceptable cuando puedes sustituir el inicio de sesión predeterminado, añadir un producto, registrar una compra y un consumo, escanear un código de barras y activar un recordatorio de tarea o caducidad.

Esta distinción permite detectar el problema con el que se encuentran los operadores después de las pruebas locales: la base de datos SQLite no puede escribir o las tareas programadas usan la zona horaria incorrecta. También hace que el plan de backup y actualización sea lo bastante específico como para probarlo.

Puertos, procesos y servicios privados

Un diagrama útil de Grocy muestra la ruta pública, el puerto privado 80, el límite del estado y todos los requisitos auxiliares. Indica qué flechas transportan credenciales y cuáles corresponden al tráfico normal de los usuarios. El requisito del runtime local es un volumen de configuración persistente y, opcionalmente, acceso a dispositivos para códigos de barras. Dimensiona y monitoriza ese recurso junto con el contenedor en lugar de exponer un servicio de red no relacionado.

Valida el diagrama con una acción real: sustituye el inicio de sesión predeterminado, añade un producto, registra una compra y un consumo, escanea un código de barras y activa un recordatorio de tarea o caducidad. La presión más probable procede de las escrituras de SQLite, las imágenes subidas, las tareas programadas y el tráfico de dispositivos del hogar; monitoriza esa ruta en lugar de tratar todas las solicitudes HTTP como iguales.

Supervisa la carga de trabajo, no solo el contenedor

Observa el trabajo que realiza Grocy: escrituras de SQLite, imágenes subidas, tareas programadas y tráfico de dispositivos del hogar. Establece límites con margen para ese trabajo y evita una liveness probe que compita con él. La comprobación del operador debe seguir intentando sustituir el inicio de sesión predeterminado, añadir un producto, registrar una compra y un consumo, escanear un código de barras y activar un recordatorio de tarea o caducidad según una programación.

Para las actualizaciones, recuerda que las migraciones de la base de datos de Grocy y las extensiones personalizadas deben ensayarse en un directorio de configuración copiado. Despliega la versión candidata sobre una copia recuperada y repite la prueba conocida. Si la base de datos SQLite no puede escribir o las tareas programadas usan la zona horaria incorrecta, utiliza los logs del runtime y la solicitud de red real para averiguar qué supuesto ha cambiado.

Qué debe superar Grocy antes de recibir datos reales

El gate de producción de Grocy debe poder ejecutarlo alguien que no haya creado el despliegue. Proporciona a esa persona la versión fijada, una cuenta de prueba no sensible y esta tarea: sustituir el inicio de sesión predeterminado, añadir un producto, registrar una compra y un consumo, escanear un código de barras y activar un recordatorio de tarea o caducidad. Si las instrucciones requieren acceso no documentado al shell, el servicio todavía no está preparado operativamente.

Repite el gate después de sustituir únicamente el contenedor. Después, restaura la base de datos, los archivos subidos, las recetas y la configuración en una infraestructura vacía y demuestra que el stock, las recetas, las tareas, el equipamiento y el historial vuelven a estar disponibles, y que el siguiente recordatorio programado tiene la fecha correcta. Mide las escrituras de SQLite, las imágenes subidas, las tareas programadas y el tráfico de dispositivos del hogar durante ambas ejecuciones correctas; las diferencias inesperadas suelen revelar una caché, un índice, un worker o un montaje de datos que falta.

Añade una prueba de fallo: envía datos inofensivos cerca del límite de recursos o de formato asociado a este límite: la base de datos SQLite no puede escribir o las tareas programadas usan la zona horaria incorrecta. Grocy debe emitir un error útil, conservar el estado existente y recuperarse cuando vuelva a cumplirse la condición válida. Guarda las marcas de tiempo y las líneas relevantes de los logs, con los secretos ocultos. Esta evidencia se convierte en la referencia para la siguiente modificación de imagen o configuración.

Crea un contenedor de Grocy reemplazable

Usa un comando que exponga cada decisión importante. Esta configuración base vincula Grocy al loopback del host, añade los montajes de datos conocidos y proporciona el primer ajuste necesario. Confirma el requisito local antes de exponerlo: un volumen de configuración persistente y, opcionalmente, acceso a dispositivos para códigos de barras.

docker run -d \
  --name grocy \
  --restart unless-stopped \
  -p 127.0.0.1:80:80 \
  -v grocy-data:/config \
  lscr.io/linuxserver/grocy:latest

Sustituye las tags flotantes por una versión o digest probado. Después del arranque, inspecciona docker logs --tail 200 grocy y confirma que el proceso escucha en el puerto 80. A continuación, ejecuta la acción de aceptación de Grocy; una respuesta de la página principal no demuestra que el escenario completo funcione: sustituye el inicio de sesión predeterminado, añade un producto, registra una compra y un consumo, escanea un código de barras y activa un recordatorio de tarea o caducidad.

Diseña la restauración de Grocy antes del lanzamiento

Protege el estado de Grocy antes de optimizar su contenedor. El conjunto necesario incluye la base de datos, los archivos subidos, las recetas y la configuración. Monta /config antes del bootstrap, escribe datos de ejemplo inofensivos y sustituye el contenedor para demostrar que esa ruta es realmente persistente. Si varias ubicaciones deben mantenerse sincronizadas, documenta el orden en que se pausan las escrituras y se realizan los backups.

Conserva copias fuera del servidor de despliegue y cifra el material que contenga credenciales o contenido privado. La recuperación es correcta cuando vuelven el stock, las recetas, las tareas, el equipamiento y el historial, y el siguiente recordatorio programado tiene la fecha correcta. La diferencia entre un montaje persistente y una copia independiente se explica en almacenamiento persistente y snapshots.

Prueba Grocy desde fuera del servidor

Elige el hostname final de Grocy antes de que los usuarios guarden callbacks o ajustes del cliente; después, publica la interfaz mediante HTTPS y configura la zona horaria correcta. La ruta de la plataforma debe terminar TLS una sola vez y dirigirse al puerto privado 80.

Ejecuta la transacción de aceptación desde el exterior. Si el cliente nunca llega a Grocy, utiliza la lista de comprobación de validación de SSL para revisar el DNS y el certificado. Si la solicitud llega a Grocy, pero la base de datos SQLite no puede escribir o las tareas programadas usan la zona horaria incorrecta, deja de cambiar redirecciones del proxy e inspecciona el límite específico de la aplicación.

Elige el límite de confianza de Grocy

Analiza las amenazas de la acción que realiza Grocy, no solo de su formulario de inicio de sesión. En este caso, el error de alto riesgo es mantener el inicio de sesión predeterminado después de la configuración inicial. Implementa este límite: elimina las credenciales predeterminadas, elige la zona horaria correcta y limita los datos del hogar a los usuarios previstos.

Grocy no tiene un secreto de bootstrap obligatorio en esta configuración base; protege la cuenta de administrador real o la autenticación del upstream. No soluciones un error de permisos ejecutando el contenedor como root o montando el host de forma amplia. Los límites de recursos también forman parte del diseño de seguridad cuando los usuarios pueden activar escrituras de SQLite, imágenes subidas, tareas programadas y tráfico de dispositivos del hogar.

Un despliegue de Dockup también necesita una prueba de aceptación de Grocy

Dockup puede encargarse de las piezas reemplazables de la plataforma: dirigir el tráfico al puerto 80, emitir el dominio y el certificado, inyectar secretos, adjuntar almacenamiento persistente y conectar Grocy a servicios gestionados o conectados de forma privada. Puede hacerlo en la infraestructura de Dockup o en un servidor que conectes.

El trabajo de aceptación de Grocy sigue siendo explícito. Después del despliegue con un clic, publica la interfaz mediante HTTPS y configura la zona horaria correcta, confirma el requisito local —un volumen de configuración persistente y, opcionalmente, acceso a dispositivos para códigos de barras— y ejecuta este escenario: sustituye el inicio de sesión predeterminado, añade un producto, registra una compra y un consumo, escanea un código de barras y activa un recordatorio de tarea o caducidad. Esta división es intencionada: Dockup elimina la configuración repetitiva de la infraestructura sin fingir que los roles de la aplicación, las credenciales del proveedor o la política de restauración se eligen por sí solos.

Preguntas frecuentes

¿Qué necesita Grocy para un despliegue de producción?

Dirige el contenedor de Grocy en el puerto 80 a través de un único origen HTTPS. El requisito del runtime local es un volumen de configuración persistente y, opcionalmente, acceso a dispositivos para códigos de barras. No consideres que Grocy está listo hasta que puedas sustituir el inicio de sesión predeterminado, añadir un producto, registrar una compra y un consumo, escanear un código de barras y activar un recordatorio de tarea o caducidad.

¿Qué datos de Grocy deben incluirse en un backup?

Haz persistir /config e incluye la base de datos, los archivos subidos, las recetas y la configuración en el mismo manifiesto de recuperación. Una restauración limpia de Grocy solo es correcta cuando vuelven el stock, las recetas, las tareas, el equipamiento y el historial, y el siguiente recordatorio programado tiene la fecha correcta.

¿Grocy necesita HTTPS detrás de un reverse proxy?

Usa HTTPS para el origen público de Grocy y mantén el puerto 80 en la ruta interna. Aplica correctamente el ajuste de Grocy: publica la interfaz mediante HTTPS y configura la zona horaria correcta. En Grocy, HTTPS protege las credenciales o el contenido del usuario durante el tránsito y mantiene coherente el comportamiento del cliente sensible al origen.

¿Cómo debe probarse una actualización de Grocy?

Restaura el estado actual de Grocy en un despliegue aislado, aplica la versión candidata y repite su transacción de aceptación. Presta especial atención porque las migraciones de la base de datos de Grocy y las extensiones personalizadas deben ensayarse en un directorio de configuración copiado. Conserva la imagen anterior de Grocy hasta comprender sus límites de migración de datos y rollback.