Ctrl K
ComunidadGuías…
GITHUB · ANALIZADO

openplate-core

Self-hostable account + E2EE blob-sync service for openplate — Bitwarden-model auth over CAS blob push/pull with opaque ciphertext only.

Ficha actualizada 23 sept 2026, 9:35 · upstream 23 sept 2026, 9:15 · release sin release detectada

Ver códigoProblemas y ayudaRepositorio ↗Sitio oficial
00

Qué es openplate-core

Descripción editorial construida a partir del repositorio, su documentación y sus señales de mantenimiento.

openplate-core is a self-hosted account and end-to-end encrypted (E2EE) blob synchronization service designed to replace the centralized cloud backend of the openplate application. It implements Bitwarden-style authentication where accounts are identified by email address paired with an opaque ciphertext blob, never decrypted on the server side. Each account's recovery code is sealed under a key stored in the environment variable SERVER_SECRET, ensuring that no plaintext password or passphrase ever leaves the client device.

The service provides full control over data flow: photos and measurements are encrypted before upload, and only the operator can decrypt them using their own private key. This eliminates cloud provider liability for storing user content and removes single points of failure inherent in centralized SaaS architectures.

Key design decisions include a protocol-based approach (PROTOCOL.md) that allows third-party clients to implement either side of the wire interface without reading or modifying server code, ensuring cryptographic security is enforced at the transport layer rather than application logic. The service also supports optional features such as AI-assisted photo analysis via an upstream proxy, community feedback reporting, push notifications for fasting reminders and catch-ups, and plan-based billing through a separate plans service.

Self-hosting is fully supported with Docker Compose or Podman, requiring only the SERVER_SECRET key to be generated. The architecture separates concerns between authentication (email + passphrase), data storage (encrypted blobs in PostgreSQL), and business logic (plans, feedback, pulse metrics), enabling modular scaling and easy integration into existing openplate deployments.

CASOS DE USO
  • Self-hosted food tracking for individuals who require complete privacy and control over their personal data
  • Organizations or schools that need to track nutrition without exposing student/employee data to third-party cloud providers
  • Healthcare professionals managing patient dietary logs with strict confidentiality requirements
  • Remote workers with sensitive health information who cannot trust corporate cloud infrastructure
  • Educational institutions implementing privacy-compliant meal planning systems
  • Small businesses operating in regulated industries where data sovereignty is a legal requirement
PUNTOS DESTACADOS
  • End-to-end encryption at the blob level means no server can ever decrypt or read user content, even with full access to the database
  • Protocol-based design (PROTOCOL.md) allows third-party clients to implement either side of the communication interface without modifying server code
  • Bitwarden-style authentication model where recovery codes are sealed under a secret key rather than stored in plaintext
  • Optional AI photo analysis proxy that only forwards metadata and status, never the image content or any decoded buffer
  • Push notification system with configurable wake-up times for fasting periods without storing what is actually sent to devices
  • Plans service allows billing and subscription management while keeping user data encrypted from the operator's perspective
PRECAUCIONES
  • Self-hosting requires manual key generation (SERVER_SECRET) which must be stored securely; misconfiguration can expose all accounts if a secret is accidentally committed to version control
  • The protocol specification does not define error handling for malformed ciphertexts, leading to potential deserialization vulnerabilities in client implementations
  • No built-in audit logging of who accessed or modified encrypted data at the database level — only high-level status codes are logged
  • Push scheduling requires manual configuration of wake-up times and zones; automated scheduling is not supported out-of-the-box
  • The AI proxy feature is optional and must be configured separately, meaning photo analysis capabilities can be disabled without affecting core functionality
01

Perfil de infraestructura

Estimación inicial derivada del repositorio y de los servicios detectados.

CPU2 vCPUrecomendación inicial
MEMORIA2 GBRAM estimada
DISCO20 GBalmacenamiento base
COMPLEJIDADmediumnivel de operación
02

Despliegue detectado

Qué señales reales de instalación hemos encontrado.

Docker detectado

Install via Docker Compose with `--project-directory .` to keep the repository root as the project root. Generate a secure secret using `openssl rand -hex 32` and place it in `.env`. The service uses PostgreSQL for encrypted blob storage, so ensure the database is running before starting the container. For Podman users, use `podman compose` instead of `docker compose`. To connect your openplate app to this instance, set `SYNC_SERVER_URL` to the public URL returned by curling the `/health` endpoint. The service exposes port 3000 for the API and 5432/5433 for PostgreSQL. For multi-instance setups, use a shared volume or separate containers with a dedicated sync server container.

✓Dockerfile
—Compose
—One-click
03

Stack y dependencias

Componentes inferidos a partir de manifests, configuración y documentación.

FRAMEWORKS
Next.jsNode.js
SERVICIOS
PostgreSQLS3/MinIO
BASES DE DATOS
PostgreSQL
PUERTOS
300054335432
06

Experiencia real de la comunidad

Ayuda a contrastar la estimación automática con instalaciones reales.

Todavía no hay datos comunitarios para este proyecto.