frameleaf-manager

frameleaf-manager

Docker app from Frameleaf's Repository

Overview

Install and manage a self-hosted Frameleaf photo and video library. Manager coordinates sibling services through the Docker socket. Encrypted recovery covers the database and configuration, not media originals. Before applying, create the storage folders and follow the linked setup guide to match the HTTPS origin, WebUI address and storage mappings. Claim the first administrator using the private claim-key file in the Manager state folder.

Frameleaf — Your photos. Your server. Everywhere.

Frameleaf

Your photos. Your server. Everywhere.
A self-hosted photo and video library: bring a lifetime of photos home, find any moment, edit it, and enjoy it on your phone, in any browser and on the TV.

Download on the App Store   Get it on Google Play

Website · Docs · Install · Features · Ask Frameleaf · FAQ


[!WARNING] Frameleaf is in BETA testing and under heavy development. Expect bugs, breaking changes and incomplete features. Keep independent backups of your photos and videos, and don't rely on Frameleaf as the only copy of your library.

Frameleaf library timeline in the web app

What is Frameleaf?

Frameleaf runs on your NAS, home server or any Linux machine with Docker. Your originals stay as ordinary files on your own disks, faces and search are worked out on your own hardware, and there's no telemetry. No subscription or cloud account required.

One library, every screen:

  • Server and web app — the Frameleaf Library and its API (open source, AGPLv3).
  • iPhone and iPad — native app with backup, a built-in editor, widgets, Siri and Live Activities.
  • iPhone Duo — fold-aware layouts, Compare, Frame mode and multiple windows.
  • Android — native app with backup, offline library, editor and Google Cast.
  • Apple TV — browse, play memories as shows, and turn your TV into a photo frame.
  • Frameleaf Cloud (optional) — encrypted remote access, off-site backup and cloud GPU processing.

➡️ Read more in What is Frameleaf? or the full features overview.

Features

🗂️ Library & timeline Fast, scrubbable timeline for huge libraries; day/month/year layouts, folders, stacks, Live and Motion Photos, RAW. Originals are never changed. Docs
⭐ Best photos Your sharpest, best-exposed shots, ranked privately on your server. Docs
🔎 Search Ask in plain words — "photos in Banff last summer", "receipts from 2024" — plus text in photos and moments inside videos. Docs
🧑‍🤝‍🧑 People & pets Face recognition and grouping that never leave your network. Docs
📝 AI descriptions & smart albums Optional on-server captions and tags, custom instructions, names of the people you've tagged, and albums that fill themselves. Docs
🗺️ Memories & places "On this day" stories, a memory player, a world map and places by country and city. Docs
📁 Albums & shared spaces Nested albums with custom icons, shared spaces with roles, tags and partner sharing. Docs
🔗 Sharing Partners, shared albums and public links. Docs
🎨 Photo editor Non-destructive adjustments, looks, crop, masks and saved versions — on web, iPhone and Android. Docs
🎬 Studio Built-in video editor — timeline, colour, audio, captions from speech, restoration and export. Docs
🧹 Library Care Duplicate review (photos and videos), identical-file cleanup, integrity checks and missing-original repair. Docs
🔒 Locked content Hide sensitive photos behind your PIN, with rules by tag or person. Docs
📺 Casting Google Cast from web and Android, and Play on Apple TV from iPhone. Docs
🖥️ Command Center Run the server from settings written for people: backups, workers, hardware, jobs and analytics. Docs
Search in plain words
Search — describe what you remember
People and pets
People & pets — recognised on your own hardware
Memory player
Memories — moments resurfaced
Map
Places — your photos on a world map
Photo editor with masks
Photo editor — masks, looks and saved versions
Best photos
Best photos — your strongest shots, ranked privately
Command Center
Command Center — your server at a glance
Cloud backup settings
Backups — local, Cloud and Buddy backup

Studio

A real video editor inside your photo library: titles, video, camera audio and music on their own tracks, colour wheels and scopes, timed captions from speech, and restoration for old footage — rendered on your own hardware.

Studio timeline editing
Timeline editing
Studio colour wheels
Colour grading
Studio captions
Captions from speech
Studio restoration
Restoration

Apps

iPhone, iPad and Android

Back up your camera roll to your own server, check every photo arrived safely, free up space, and carry your whole library with you — at home, away or offline. Sign in with Frameleaf, find servers on your Wi-Fi automatically, or set up a brand-new server straight from your phone.

Years and months on iPhone Search on iPhone Editor on iPhone Backup on iPhone

Library on Android Memories on Android Editor on Android Memories on iPhone

iPhone and iPad (iOS 26+) · Android (Android 11+)

iPhone Duo

Frameleaf reads the fold and lays your library out around it: open it like a book to see a photo beside the grid or compare two photos, prop it up to edit, turn any album into a desk photo frame with Frame, and drag photos between two windows.

Library beside a photo on the open iPhone Duo
Library — grid and photo side by side
Editor on iPhone Duo
Editor — photo above the fold, controls below

iPhone Duo and wide windows

Apple TV

Your memories on the biggest screen in the house. Browse Home, Memories, Places, Albums, People and Search from the couch, play memories as shows with title cards and music, or leave a slideshow running as a photo frame. Pick something on your iPhone and choose Play on Apple TV.

Frameleaf Home on Apple TV
Home — favourites, best photos, memories and places
A memory playing as a show on Apple TV
Memories — played as shows
A person's page on Apple TV
People — everyone, on the big screen
Slideshow on Apple TV
Slideshow — your TV as a photo frame

Apple TV (tvOS 26+, uses Frameleaf Cloud remote access)

Get started

  1. Check the requirements — Linux with Docker and Docker Compose v2. Not sure what your GPU can run? Ask Frameleaf or see Choose processing for your hardware.
  2. Install with one of:
  3. Open http://<server-ip>:2283, or set the server up from the iPhone or Android app on the same Wi-Fi, then follow First steps after installing.

Quick start with Docker Compose

mkdir frameleaf-app && cd frameleaf-app
curl -fL -o docker-compose.yml https://github.com/Frameleaf/frameleaf-app/releases/latest/download/docker-compose.yml
curl -fL -o .env https://github.com/Frameleaf/frameleaf-app/releases/latest/download/example.env
docker compose up -d

Edit .env first if you want your photos (UPLOAD_LOCATION) or database (DB_DATA_LOCATION) somewhere other than the current folder. To upgrade later, run docker compose pull && docker compose up -d — see Upgrading.

[!TIP] Your library on one server is a single copy. Protect it with Cloud backup, Buddy backup or your own copies — see Backup and restore.

Switching from another service?

Frameleaf Cloud (optional)

Self-hosting is free. Frameleaf Cloud adds:

  • 🌐 Remote access — encrypted access from anywhere, for the apps and Apple TV
  • ☁️ Cloud backup — off-site backup
  • ⚡ Cloud GPU — run heavy AI jobs without local hardware

A Server licence on its own gives your server a Frameleaf direct address for remote access, and lets it trade backups with a friend's licensed server through Buddy backup over a direct connection; Frameleaf Cloud adds the relay when a direct connection isn't possible. See frameleaf.app for current pricing.

Docs and help

The Frameleaf docs and help center cover everything from first install to the API.

Topic Where
Using Frameleaf Library, search, sharing, editing…
Apps iPhone and iPad · iPhone Duo · Android · Apple TV
Studio Video editing guide
Running your server Command Center, settings, upgrades…
Frameleaf Cloud Remote access, backup and GPU
Server API API overview
Help Ask Frameleaf · FAQ · Troubleshooting · Supported formats

License

The Frameleaf Library server is open source under the GNU AGPLv3.

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/frameleaf/frameleaf-manager@sha256:b4ed6e2180e24c8d63259c1456b605bab1fbebbae2a3b800dd7aa14cbfd84436
Last Updated2026-10-18
First Seen2026-10-18

Runtime arguments

Web UI
https://[IP]:[PORT:9443]
Network
bridge
Privileged
false
Extra Params
--label app.frameleaf.manager.role=controller --security-opt no-new-privileges --cap-drop ALL

Template configuration

Manager HTTPS portPorttcp

Use this same port in Manager HTTPS origin

Target
9443
Default
9443
Value
9443
Manager HTTPS originVariable

Copy the resolved WebUI HTTPS address, including the host port. For DNS, also set Advanced View WebUI to this exact origin. A different hostname or port is rejected.

Target
MANAGER_ORIGIN
Manager statePathrw

Persistent claim key, sessions and recovery configuration. When changing the host path, change the container path and MANAGER_DATA too.

Target
/mnt/user/appdata/frameleaf-manager
Default
/mnt/user/appdata/frameleaf-manager
Value
/mnt/user/appdata/frameleaf-manager
MediaPathrw

Original media. Keep host and container paths identical and update MANAGER_STORAGE_ROOTS.

Target
/mnt/user/appdata/frameleaf-media
Default
/mnt/user/appdata/frameleaf-media
Value
/mnt/user/appdata/frameleaf-media
Database parentPathrw

Physical host storage outside Docker data/docker.img. Keep host and container paths identical and update database root variables.

Target
/mnt/user/appdata/frameleaf-databases
Default
/mnt/user/appdata/frameleaf-databases
Value
/mnt/user/appdata/frameleaf-databases
Database backupsPathrw

Encrypted database-only checkpoints. Keep host and container paths identical and update MANAGER_BACKUP_ROOT.

Target
/mnt/user/appdata/frameleaf-backups
Default
/mnt/user/appdata/frameleaf-backups
Value
/mnt/user/appdata/frameleaf-backups
State pathVariable

Must equal both paths in the Manager state mapping above.

Target
MANAGER_DATA
Default
/mnt/user/appdata/frameleaf-manager
Value
/mnt/user/appdata/frameleaf-manager
Media rootsVariable

Approved media folders, separated by colons. Each needs an identical host/container mapping.

Target
MANAGER_STORAGE_ROOTS
Default
/mnt/user/appdata/frameleaf-media
Value
/mnt/user/appdata/frameleaf-media
Database rootsVariable

Approved database parent folders, separated by colons. Each needs an identical host/container mapping.

Target
MANAGER_DATABASE_ROOTS
Default
/mnt/user/appdata/frameleaf-databases
Value
/mnt/user/appdata/frameleaf-databases
Database defaultVariable

Default database parent. Must be one of the mapped database roots above.

Target
MANAGER_APPDATA_ROOT
Default
/mnt/user/appdata/frameleaf-databases
Value
/mnt/user/appdata/frameleaf-databases
Backup pathVariable

Must equal both paths in the Database backups mapping above. Does not back up media.

Target
MANAGER_BACKUP_ROOT
Default
/mnt/user/appdata/frameleaf-backups
Value
/mnt/user/appdata/frameleaf-backups
PlatformVariable

Unraid host integration; keep this value.

Target
MANAGER_PLATFORM
Default
unraid
Value
unraid
Docker socketPathrw

Allows Manager to create and control sibling containers on this host.

Target
/var/run/docker.sock
Default
/var/run/docker.sock
Value
/var/run/docker.sock
Host mount informationPathro

Read-only host filesystem evidence for database storage checks.

Target
/run/frameleaf-host/mountinfo
Default
/proc/1/mountinfo
Value
/proc/1/mountinfo
Unraid Docker configurationPathro

Read-only Unraid appdata and Docker storage configuration.

Target
/run/frameleaf-host/docker.cfg
Default
/boot/config/docker.cfg
Value
/boot/config/docker.cfg
Unraid autostart filePathrw

Required for imports: select the existing unraid-autostart file beneath the exact DockerRootDir reported by docker info. Do not create a replacement or guess a pool path.

Target
/run/frameleaf-host/unraid-autostart
Autostart controller pathVariable

Leave blank unless the autostart file above is mounted. For an import, set this to /run/frameleaf-host/unraid-autostart after selecting that existing host file.

Target
MANAGER_UNRAID_AUTOSTART