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 amemories_metatable. 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 installto 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
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
ZOT OCI Registry
Self‑hosted, vendor‑neutral OCI image registry
Apache Druid
Real‑time analytics database for sub‑second queries
PsiTransfer
Self-hosted file sharing without accounts

Exim
Flexible SMTP mail transfer agent for Unix
Minus Games
Sync and distribute games across devices
Passbolt
Secure, collaborative password manager for teams
