MCPSERV.CLUB
Memories

Memories

Self-Hosted

Self‑hosted photo manager with AI tagging, timeline and map views

Active(100)
3.6kstars
0views
Updated 1 day ago
Memories screenshot 1
1 / 5

Overview

Discover what makes Memories powerful

Nextcloud Memories is a fully‑featured, self‑hosted photo management extension that plugs directly into the Nextcloud ecosystem. From a technical standpoint it acts as a middleware layer between the Nextcloud file storage API and an advanced media processing pipeline. It parses EXIF metadata, generates searchable indices, and serves a responsive web UI that leverages Nextcloud’s authentication and sharing mechanisms. The application is built with a “batteries‑included” philosophy: all core features—timeline navigation, AI tagging, album management, video transcoding, and map visualization—are bundled into a single PHP/JavaScript codebase that integrates seamlessly with Nextcloud’s existing MVC architecture.

Metadata Indexing

AI Tagging

Album & Sharing API

Webhooks

Overview

Nextcloud Memories is a fully‑featured, self‑hosted photo management extension that plugs directly into the Nextcloud ecosystem. From a technical standpoint it acts as a middleware layer between the Nextcloud file storage API and an advanced media processing pipeline. It parses EXIF metadata, generates searchable indices, and serves a responsive web UI that leverages Nextcloud’s authentication and sharing mechanisms. The application is built with a “batteries‑included” philosophy: all core features—timeline navigation, AI tagging, album management, video transcoding, and map visualization—are bundled into a single PHP/JavaScript codebase that integrates seamlessly with Nextcloud’s existing MVC architecture.

Architecture & Technical Stack

Memories is primarily written in PHP (following Nextcloud’s OOP conventions) and JavaScript/React for the client side. It uses Nextcloud’s built‑in database abstraction layer (PDO) to persist metadata in the same relational DB that powers Nextcloud, typically PostgreSQL or MySQL. The application ships a dedicated background worker queue that handles heavy lifting such as EXIF extraction, AI inference (via the Recognize and FaceRecognition plugins), video transcoding to HLS, and reverse geocoding. Workers run as PHP CLI processes managed by Nextcloud’s own scheduler or via external job queues (e.g., RabbitMQ). For map rendering, Memories integrates with Leaflet/OpenStreetMap and optionally uses a caching layer (Redis) to store geocoding results.

Core Capabilities & Developer APIs

  • Metadata Indexing: Exposes a CLI command (php occ memories:index) that scans user directories, parses EXIF tags, and populates a memories_meta table. Developers can hook into this process with custom PHP hooks or the Nextcloud “preprocessFile” event to add additional metadata.
  • AI Tagging: Provides a REST endpoint (/apps/memories/api/tag) that accepts image IDs and returns detected labels or face embeddings. The backend delegates to the Recognize/FaceRecognition services via gRPC, allowing developers to swap or extend models without touching Memories’ core.
  • Album & Sharing API: Implements a GraphQL‑like schema for albums, supporting CRUD operations and external sharing links. The API can be consumed by third‑party frontends or mobile apps, enabling custom UIs that still benefit from Nextcloud’s authentication tokens.
  • Webhooks: Supports event notifications (fileCreated, metadataUpdated) that external services can subscribe to via Nextcloud’s WebDAV/Push API, facilitating automated workflows (e.g., syncing with a backup service).

Deployment & Infrastructure

Memories is distributed as a standard Nextcloud app, so any Nextcloud installation—whether on bare metal, Docker, or Kubernetes—can host it with minimal overhead. For production deployments:

  • Scalability: The worker queue can be horizontally scaled; each worker instance reads from the same database queue, making it straightforward to add more nodes in a load‑balanced environment.
  • Containerization: Official Docker images for Nextcloud already include the app; developers can build a custom image with RUN composer install to pull Memories. The application also supports Docker Compose setups that expose the worker process separately.
  • Resource Allocation: Video transcoding is CPU‑intensive; allocating dedicated GPU nodes or enabling hardware acceleration (e.g., FFmpeg with NVENC) can dramatically improve throughput for large media libraries.

Integration & Extensibility

Memories embraces Nextcloud’s plugin architecture. Developers can create custom “actions” (e.g., a new AI model) by implementing the MemoriesActionInterface and registering it via the app’s service container. The app also ships a set of public API endpoints that can be authenticated with OAuth2 or the existing Nextcloud session cookie, allowing integration with external services such as a custom analytics dashboard or a mobile app built on React Native. The map feature can be extended by swapping the tile provider or adding custom overlays, thanks to its modular Leaflet implementation.

Developer Experience

The codebase follows Nextcloud’s coding standards, with extensive unit and integration tests (≈80 % coverage). Documentation is split into an in‑app help section, a public API guide, and a developer wiki on GitHub. The community is active—issues are triaged quickly, and the Discord channel provides real‑time support. Configuration is declarative: a JSON file (config.memories.php) holds all tunable parameters (e.g., worker pool size, cache TTL), and the app automatically validates changes on startup.

Use Cases

  • Enterprise Media Portals: Companies can host a secure photo gallery for employees, leveraging Nextcloud’s existing authentication and external sharing controls.
  • Personal Photo Management: Hobbyists who want full ownership of their media can deploy Memories on a NAS, enjoying features like timeline navigation and AI tagging without relying on cloud services.
  • Educational Institutions: Schools can archive event photos, tag participants automatically, and provide students with a self‑service portal that respects privacy constraints.
  • Event Management: Organizers can set up a temporary Memories instance on a cloud VM to collect photos from attendees, automatically tag guests, and generate a shareable album post‑event.

Advantages Over Alternatives

  • Data Sovereignty: All media stays on the user’s own Nextcloud instance; no third‑party storage is required.
  • Unified Ecosystem: Seamless integration with Nextcloud’s file sharing, encryption, and user management reduces the need for separate authentication services.
  • Performance:

Open SourceReady to get started?

Join the community and start self-hosting Memories today

Weekly Views

Loading...
Support Us

Featured Project

$30/month

Get maximum visibility with featured placement and special badges

Repository Health

Loading health data...

Information

Category
other
License
AGPL-3.0
Stars
3.6k
Technical Specs
Pricing
Open Source
Database
Multiple
Docker
None
Supported OS
LinuxDocker
Author
pulsejet
pulsejet
Last Updated
1 day ago