Hoe Gallery en Immich samenhangen
Noodle Gallery is een vriendelijke fork van Immich, het open-source platform voor zelfgehoste fotobeheer van Alex Tran en een groeiende community. Gallery rebaset op elke upstream Immich-release, zodat bugfixes, prestatieverbeteringen en nieuwe functies van het Immich-team automatisch in Gallery terechtkomen.
De relatie is bewust eenvoudig: Immich is het fundament. Gallery zit daarbovenop en voegt een klein aantal functies toe voor gebruikssituaties die niet in de scope van upstream passen. Dezelfde database, dezelfde containers, dezelfde weg terug. Bedenk je je, dan is teruggaan een wijziging van drie regels.
Deze pagina bestaat omdat mensen die van Immich komen terecht vragen: "Wat is er anders?" Het antwoord verdient duidelijkheid — niet omdat we upstream als slechter beschouwen.
Waar Immich tegen grenzen aanloopt — en hoe Gallery ze opvult
De exclusieve functies van Gallery begonnen telkens met dezelfde observatie: iemand liep in Immich tegen een grens aan en ging op zoek naar een uitweg. De categorieën hieronder groeperen die grenzen per thema — telkens met de Gallery-functies die ze oplossen.
Personen en identiteit
De grens. De gezichtsherkenning van Immich stopt bij het account. Dezelfde echte persoon bestaat als aparte vermelding in jouw bibliotheek, in de bibliotheek van je partner en in elk gedeeld album dat jullie beiden raken. Zoek je naar die persoon, dan vind je een derde van hun foto's. Geef je ze een naam in één account, dan wordt er niets overgedragen naar de andere. De pagina Personen laat zien in welke container iemand opduikt — niet wie er daadwerkelijk in je leven voorkomt.
Zo lost Gallery dat op.
- Mappen voor Space-albums — nestbare mappen in het Albums-tabblad van een Shared Space, zodat een space die door meerdere mensen wordt gevuld een navigeerbare vorm houdt. Editors maken aan, hernoemen en slepen; een map verwijderen laat de inhoud opschuiven in plaats van hem mee te nemen.
- Workflows voor Shared Spaces — workflow-acties die een binnenkomende foto toevoegen aan een of meer Shared Spaces, of hem opbergen in een album met een naam binnen een space — waarbij dat album wordt aangemaakt en gekoppeld als het nog niet bestaat.
- Gedeelde Spaces — gezamenlijke timelines met de rollen Eigenaar, Editor en Viewer, accountoverstijgende gezichtsherkenning, timeline-integratie, last-visit-tracking en een activiteitenlog.
- Globale Personen — identiteitsbewuste personen, filters en zoekresultaten ontdubbelen over je privébibliotheek en elke timeline-ingeschakelde Space heen waartoe je toegang hebt. Eén regel op de pagina Personen, één suggestie in filters, één treffer in het zoeken — zonder dat ooit een rechtengrens wordt overschreden waar je niet al aan de juiste kant van stond. Naamgeving, samenvoeging en verjaardagen blijven waar ze zijn ingevoerd; de identiteitslaag eronder verbindt wat aantoonbaar dezelfde persoon is.
Delen en samenwerken
De grens. De twee deelprimitieven van Immich — partnerdeling en albums — lopen tegen grenzen aan bij meer dan twee personen. Partnerdeling is alles of niets. Albums zijn van de persoon die ze heeft gemaakt. Er is geen gezamenlijke familietimeline, geen activiteitenlog, geen „wat is er nieuw sinds mijn laatste bezoek“ en geen manier om tienduizenden foto's te delen zonder ze met de hand te selecteren.
Zo lost Gallery dat op.
- Space-albums — breng hele albums in een Space: koppel een bestaand album of maak er een nieuw in, op web en mobiel, met bijdragen tussen eigenaren en per-album-controle over de gedeelde tijdlijn.
- Spaces-filtering — de volledige filterset binnen één Space.
- Gebruikersgroepen — benoemde, kleurgecodeerde groepen om met één klik te delen.
- Bulksgewijs toevoegen aan Spaces — honderdduizenden foto's via een achtergrondtaak aan een Space toevoegen.
De gezichten waar herkenning zich niet aan wil branden
De grens. Gezichtsherkenning is met opzet behoudend, en daar is een goede reden voor: de fouten wegen niet even zwaar. Een gezicht dat nooit is toegewezen, is een klein, stil verlies. Een gezicht dat aan de verkeerde persoon wordt toegewezen, verspreidt zich — naar het zoeken, naar de herinneringen, naar het album dat iedereen ziet — en om het er weer uit te halen moet je elke plek terugvinden waar het beland is. Daarom houdt het model een strakke drempel aan en laat het alles wat daar net onder blijft met rust. De prijs is een lange staart van net-niet-treffers in elke bibliotheek: de portretfoto, die ene bij slecht licht, die van vier jaar geleden, allemaal ongekoppeld terwijl de persoon om wie het gaat een naam heeft en overduidelijk is. Immich geeft je geen manier om die staart door te werken, en geen manier om de clusters te ontwarren waarin twee personen tóch zijn samengesmolten. In beide richtingen is die drempel iets waar je maar mee moet leven.
Zo lost Gallery dat op.
- Gezichtssuggesties — de net-niet-treffers komen bij je terug als banner bij de persoon met een naam waar ze het meest waarschijnlijk bij horen. Beoordeel ze één voor één naast een bekende foto: zelfde persoon, andere persoon, of het gezicht negeren. Elk antwoord is duurzaam, dus je krijgt nooit twee keer dezelfde vraag, en een suggestie afwijzen belet de gewone herkenning nooit om dat gezicht later op eigen kracht alsnog op te pakken.
- Gezichten opschonen — voor wanneer clustering het tóch mis had. Een scan vindt de clusters die vervuild zijn met foto's van iemand anders en splitst ze in een baan die je in één ronde kunt goedkeuren en een baan waar een mens naar moet kijken. Elk gemarkeerd gezicht landt in een van zes expliciete bestemmingen, er wordt niets weggeschreven tot je toepast, en handmatig beoordelen controleert elke persoon die je kiest zonder dat er ook maar een scan aan te pas komt.
De twee draaien op één gedeelde oordeelslaag, en dat is wat een beslissing in de één overal laat gelden — door samenvoegingen, hernoemingen en elke volgende scan heen. Samen maken ze van een behoudende drempel iets wat je niet langer permanent hoeft te betalen maar echt kunt corrigeren.
Zoeken en ontdekken
De grens. Elke pagina in Immich heeft zijn eigen zoekfunctie; er is geen globaal, toetsenbordgericht startpunt. Smart-search-resultaten komen in relevantievolgorde terug, zonder sortering op datum of overeenkomstdrempel. Filters werken in isolatie.
Zo lost Gallery dat op.
- Timeline-groepering — moeite om een foto te vinden als je bibliotheek meer dan 20 jaar beslaat? Wissel elke timeline tussen Jaren, Maanden en Alles en zoom in en uit om precies de gezochte foto's te vinden. Tik op een jaar- of maandkaart om in die periode te duiken zonder de zoekopdracht in te perken; je scrollpositie blijft bij het terugschakelen behouden.
- Inline zoekfilters — personen, tags, datums, plaatsen, beoordelingen, mediatype, favorieten, camera's en albumfilters direct in de zoekbalk typen, met live-suggesties vóór Enter.
- Globaal zoeken — Cmd/Ctrl+K als centrale zoekoppervlakte voor foto's, personen, plaatsen, tags, commando's en pagina's.
- Zoekpalet — toetsenbordgericht commandopalet met prefixen en contextgebonden commando's.
- Zoeksortering & relevantie — sorteren op datum of relevantie en overeenkomstdrempels aanpassen.
- Afhankelijke filters — elk filter perkt elk ander filter live in.
- Smart Search & contextfilters — natuurlijk zoeken binnen Spaces met adaptieve filtersuggesties.
- Kaartfiltering — filterpaneel direct op de kaartweergave.
- Contextuele filters — het infopaneel in de viewer wordt een filteroppervlak. Klik op de camera, de lens, de stad, de datum, een tag, het album of de bestandsnaam en het scherm waar je de foto vanuit opende versmalt zich tot wat past — je timeline, een album, een Space of de kaart — met het filter in de URL, zodat de weergave deelbaar is en de terugknop zich netjes gedraagt.
AI en automatisering
De grens. De AI-oppervlakte van Immich richt zich op gezichten en basale CLIP-zoekfunctie. Huisdieren worden niet herkend. Herinneringen tonen alleen "On This Day". Er is geen automatische manier om rommel uit de timeline te verwijderen.
Zo lost Gallery dat op.
- Huisdieridentificatie — individuele honden en katten in plaats van één gedeelde vermelding per soort: benoemd, samengevoegd en doorbladerd op de Personen-pagina net als mensen, met een Alles/Personen/Huisdieren-filter en zonder minimumdrempel aan foto’s. Ze draait op drie her-identificatiemodellen die we zelf trainden en als open gewichten publiceerden.
- Gegenereerde herinneringen — negen extra soorten herinneringen naast „Op deze dag”: maand- en seizoensterugblikken, favorieten-terugblikken, plaatsen op de datum van vandaag, reisjubilea, personen samen, videomomenten, thematische sets en persoonsterugblikken — gespreid over de maand, elk afzonderlijk uit te zetten, per persoon en voor de hele server.
- Automatische classificatie — rommel zoals screenshots, memes en bonnetjes via CLIP taggen en archiveren.
- Herinneringenarchief — opgeslagen gegenereerde herinneringen doorzoeken en bewaarduur instellen.
- Slimmere herinneringen — reis- en verjaardagsherinneringen met serverregels.
- Huisdierherkenning — RF-DETR vindt automatisch de katten en honden, en Huisdieridentificatie maakt er benoemde individuen van.
- Detectie van dubbele video's — dubbele video's vinden ondanks her-encodering, schaling of formaatwissel.
Mediabeheer en migratie
De grens. Video's bijsnijden betekent in Immich: exporteren, extern bewerken, opnieuw importeren. Overstappen van Google Foto's vereist CLI-tools en scripts. Opslag is lokale schijf of externe bibliotheken, maar geen native S3-compatibele backend-opslag.
Zo lost Gallery dat op.
- Video's bijsnijden — video's verliesvrij bijsnijden via stream copy.
- Verbonden bibliotheken — externe bibliotheken direct zichtbaar maken in Gedeelde Spaces.
- Google Foto's importeren — Google Takeout-archieven rechtstreeks in de browser importeren.
- S3-compatibele opslag — AWS S3, MinIO, Cloudflare R2, Backblaze B2, Wasabi of elke S3-compatibele opslag gebruiken.
Mobiel
De grens. Timeline filteren in de Immich-app betekent overschakelen naar een apart zoektabblad en je scrollpositie verliezen. Geavanceerde oppervlakken zoals kaart, scoped search en Gedeelde Spaces zitten dieper in de app verstopt of ontbreken.
Zo lost Gallery dat op.
- Fotofilters op je telefoon — een bottom sheet op het Foto's-tabblad filtert op personen, plaatsen, tags, datum, beoordeling en mediatype, zonder de rasterweergave te verlaten.
- Noodle Gallery voor iPhone — native iOS-app in de App Store met camera-back-up, CLIP-zoeken op het toestel, kaart en een voorvertoning van Gedeelde Spaces.
- Noodle Gallery voor Android — native Android-app in Google Play met camera-back-up, CLIP-zoeken op het toestel, kaart en Gedeelde Spaces.
De grenzen in een directe vergelijking
Een verdichte weergave van dezelfde lacunes en hun oplossingen — handig als je het totaalplaatje in één tabel wilt zien.
| Waar Immich tegen grenzen aanloopt | Hoe Gallery het oplost |
|---|---|
| Een gedeelde albumlijst is plat — niets om vijfentwintig albums op te groeperen | Nestbare albummappen in elke Shared Space, met covers, tellers en kruimelpad, op web en mobiel |
| Geen huisdierdetectie, dus geen manier om je eigen hond te vinden | Huisdierherkenning vindt de katten en honden; Huisdieridentificatie maakt er benoemde individuen van op de Personen-pagina, op modellen die we zelf trainden en publiceerden |
| Automatisering houdt op bij de grens van een gedeelde bibliotheek — niets kan een binnenkomende foto voor je in een space opbergen | Workflows voor Shared Spaces — de acties „toevoegen aan space” en „toevoegen aan space-album”, geketend aan elke trigger of elk filter, waarbij het album wordt aangemaakt als het ontbreekt |
| Herinneringen vragen altijd maar één ding: „wat gebeurde er op deze datum?”, dus de meeste dagen blijven leeg en elke kaart ziet er hetzelfde uit | Gegenereerde herinneringen — negen regels erbij voor maanden, seizoenen, plaatsen, favorieten, personen samen, video’s, reisjubilea, thema’s en persoonsterugblikken, gespreid over de maand |
| Mobiele filters verlaten het Foto's-tabblad en verliezen de scrollpositie | Filtersheet direct op het Foto's-tabblad — personen, plaatsen, tags, datum, beoordeling, mediatype |
| Partnerdeling is alles of niets; albums zijn van de maker; gezichtsherkenning stopt bij het account | Gedeelde Spaces met timelines met meerdere eigenaren, rollen, accountoverstijgende gezichtsherkenning, last-visit-tracking en een activiteitenlog |
| Albums horen bij wie ze maakte en staan buiten elke gedeelde tijdlijn | Space-albums — koppel of maak albums binnen een Gedeelde Space, met bijdragen tussen eigenaren en per-album tijdlijnbeheer, op web en mobiel |
| Dezelfde persoon kan als meerdere vermeldingen verschijnen in privé- en gedeelde bibliotheken | Globale Personen — identiteitsbewuste personenregels, filters en zoekresultaten over toegankelijke timeline-Spaces heen |
| Herkenning is met opzet voorzichtig en slaat de twijfelgevallen over — en niets brengt die net-niet-treffers bij je terug | Gezichtssuggesties — net-niet-treffers verschijnen bij de persoon met een naam waar ze waarschijnlijk bij horen, één voor één te beoordelen, met elk antwoord duurzaam |
| Smelten twee personen samen in één cluster, dan betekent ontwarren dat je gezichten met de hand opnieuw toewijst, zonder enig gereedschap | Gezichten opschonen — een scan vindt vervuilde clusters en splitst ze in een baan die je in één ronde goedkeurt en een baan die jouw aandacht vraagt, met zes expliciete bestemmingen per gezicht |
| Het infopaneel toont de camera, plaats, datum en tags, maar je kunt er niets mee — filteren betekent vertrekken naar een zoekpagina | Contextuele filters — klik op elke metadatawaarde om het scherm te filteren waar je al bent, met het filter in de URL |
| Huisdieren worden niet herkend | Huisdierherkenning met RF-DETR, plus individueel benoemde huisdieren |
| Herinneringen tonen alleen “On This Day” | Slimmere herinneringen met reis- en verjaardagsterugblikken |
| Gegenereerde herinneringen verdwijnen na hun dagelijkse carouselvenster | Herinneringenarchief met zoekfunctie en instelbare bewaarduur |
| Elke pagina heeft een eigen zoekfunctie; geen globaal toetsenbordstartpunt | Zoekpalet via Cmd/Ctrl+K vanaf overal |
| Geavanceerde filters vereisen dat je de toetsenbordflow verlaat voor het filterpaneel | Inline zoekfilters — gestructureerde filters direct in de zoekbalk typen, met live-suggesties en deelbare URL-status |
| Een grote bibliotheek doorlopen betekent door elke dagbucket scrollen — geen sprong naar een jaar of maand in één oogopslag | Timeline-groepering — schakelaar Jaren / Maanden / Alles op elke timeline; door op een jaar- of maandkaart te tikken in en uit zoomen om snel een foto te vinden in een decennia-oude bibliotheek |
| Smart Search heeft geen datumsortering en geen relevantiedrempel | Datumsortering, infinite scroll op datum, instelbare overeenkomstdrempel |
| Filters werken in isolatie | Afhankelijke filters perken elkaar live in |
| De kaart heeft geen eigen filterpaneel | Volledig filterpaneel op de kaart, markers werken live bij |
| Geen native S3-compatibele opslag | AWS S3, MinIO, Cloudflare R2, Backblaze B2, Wasabi of elke S3-compatibele opslag |
| Google Foto's importeren vereist CLI-tools en scripts | Begeleide importwizard voor Google Takeout-archieven in de browser |
| Video's bijsnijden betekent exporteren en opnieuw encoderen | Verliesvrij bijsnijden via stream copy, vrijwel direct |
Belangrijk: elke oplossing hierboven is aanvullend. Gallery vervangt niets van wat Immich doet. Kernfuncties, REST-API, externe integraties, Frame, domotica — alles blijft werken op een Gallery-server.
Probeer Gallery op je bestaande Immich-bibliotheek.
Wijzig drie regels configuratie, behoud dezelfde database en dezelfde uploads, en gebruik het terugwisselscript als Gallery niets voor je is. Je foto's en video's blijven precies waar ze staan.
Moet je bij upstream Immich blijven?
Er zijn echte redenen om upstream Immich te draaien in plaats van de fork. Dat zijn geen alibipunten, maar gevallen waarin upstream de juiste keuze is.
Communitygrootte en historie
Immich is sinds 2022 actief, heeft tienduizenden GitHub-sterren, veel contributors en een grote Discord. Als je het comfort van een grote community wilt, is upstream de juiste plek.
Bredere platformtests
Upstream Immich draait op heel veel hardware- en NAS-combinaties. Als jouw opstelling ongebruikelijk is, helpt dat grotere testoppervlak.
Je hebt de aanvullingen niet nodig
Als je geen Gedeelde Spaces, huisdierherkenning, S3-opslag, Google Takeout-imports of geavanceerde filters nodig hebt, doet upstream Immich al alles wat je wilt.
Migreren van Immich is een wijziging van drie regels
Als Immich bij jou al draait en je Gallery wilt uitproberen, is de overstap triviaal. Vervang twee image-namen in je docker-compose.ymlen zet IMMICH_VERSION in je .env op v5.
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}image: ghcr.io/open-noodle/gallery-server:${IMMICH_VERSION:-release}image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}image: ghcr.io/open-noodle/gallery-ml:${IMMICH_VERSION:-release}IMMICH_VERSION=releaseIMMICH_VERSION=v5Laad daarna de nieuwe images en herstart:
docker compose pull && docker compose up -dGeen datamigratie. Geen databaseconversie. Geen bestanden kopiëren. Je bibliotheek blijft precies waar die staat.
docker exec -t your-db-container pg_dumpall -U postgres > backup.sqlDe volledige stapsgewijze handleiding staat op de installatiepagina. Migratiehandleiding bekijken →
Gallery bevat een opschoon-SQL dat alle Gallery-specifieke database-uitbreidingen verwijdert. Je foto's en video's worden nooit aangeraakt. Wissel gewoon de twee image-namen terug en je draait weer op upstream.
Lees de handleiding om terug te wisselenDe taak van Gallery is om een klein aantal extra functies beschikbaar te maken, zonder dat je hoeft te kiezen tussen die functies en de Immich-roadmap.
Veelgestelde vragen
Zijn mijn gegevens veilig als ik van Immich naar Noodle Gallery overstap?
Ja. Gallery gebruikt hetzelfde databaseschema, dezelfde uploadmapstructuur en dezelfde bestandsformaten als upstream Immich. De migratie bestaat uit twee gewijzigde image-namen in je docker-compose.yml. Je bibliotheek wordt nooit gekopieerd, omgezet of herschreven — Gallery leest en schrijft dezelfde bestanden die Immich al gebruikt.
Kan ik later weer terug naar upstream Immich?
Ja. Gallery bevat een opschoonscript dat elke Gallery-specifieke tabel, kolom en migratiemarkering uit de database verwijdert. Je foto's en video's worden nooit aangeraakt. Voer het script uit, zet de twee image-namen terug op ghcr.io/immich-app/immich-server en ghcr.io/immich-app/immich-machine-learning, voer docker compose pull uit en je draait weer op upstream.
Gaat Gallery na verloop van tijd uit de pas lopen met Immich?
Nee, het doel is juist het tegenovergestelde. Gallery rebaset op elke upstream Immich-release, zodat bugfixes, prestatieverbeteringen en nieuwe functies van het Immich-team automatisch in Gallery terechtkomen. De exclusieve functies van Gallery zijn aanvullend — ze liggen bovenop upstream, niet in plaats daarvan.
Hoe snel rebaset Gallery na een nieuwe Immich-release?
Meestal binnen enkele dagen. Het rebaseproces is geautomatiseerd waar dat zinvol is en handmatig waar dat nodig is. Het doel is om dicht genoeg in de buurt te blijven dat Gallery aanvoelt als een licht uitgebreid Immich, niet als een ander project.
Heeft Gallery een mobiele app?
Ja. Noodle Gallery is beschikbaar in de App Store voor iPhone en in Google Play voor Android, met camera-back-up op de achtergrond, CLIP-zoeken op het toestel, kaartweergave en Gedeelde Spaces.
Blijven externe apps voor Immich werken met Noodle Gallery?
Ja, volledig. Gallery biedt dezelfde REST-API als upstream Immich — dezelfde endpoints, dezelfde paden, dezelfde payloads. Tools die op de Immich-API zijn gebouwd, werken zonder aanpassing ook met Gallery: mobiele clients, Immich Frame, integraties voor domotica, CLI-tools en scripts. Noodle Gallery heeft daarnaast een eigen iOS- en Android-app.
Waarom überhaupt forken in plaats van functies upstream bijdragen?
Verschillende Gallery-exclusieve functies zoals Gedeelde Spaces, huisdierherkenning en contextfilters werden upstream afgewezen, als buiten de scope beschouwd, of zouden architectuurwijzigingen hebben vereist die niet bij de Immich-roadmap pasten. De fork maakt experimenteren mogelijk zonder het upstream-team af te remmen — en door te rebasen verliezen we hun vooruitgang niet.
Een woord over het upstream Immich-team
Noodle Gallery bestaat omdat Immich bestaat. We hebben aan het upstream-team te danken: de architectuur, het databaseontwerp, de mobiele apps, de CLIP-integratie en het enorme releasetempo. Vind je Gallery nuttig, geef dan ook immich-app/immicheen ster, een sponsoring of een bijdrage.