There is something to be said about NixOS, it really is a matter of setting `services.immich.enable = true;` in a configuration file. I find this really powerful and simpler than docker and docker-compose. But don't get me wrong, I am all for containerization when it comes to other OS/distros. Yes, there is a learning curve for the Nix language and creating your own packages. But anyone who can install a distro can install NixOS. Instead of running your apt/dnf/pacman commands, you edit a file with your package names and services you want to enable, and run `nixos-rebuild switch`. Though, you might find standalone binaries such as uv and its portable Python bundles don't work out the box, there is a a few lines configuration to get it working. Having a single language for configuring all services/applications (neovim,nginx,syncthing,systemd, etc) is refreshing. And of course combined with generative AI, you can set up a lot quickly.
Immich is one of the only apps on iOS that properly does background sync. There is also PhotoSync which is notable for working properly with background sync. I'll take a wild guess that Ente may have got this working right too (at least I'd hope). This works around the limitation that iOS apps can't really run as background apps (appears to me that the app can wake up on some interval, run/sync for a little and try again on the next interval). This is much more usable then for example, the Synology apps for photo sync, which is, the last time I tried, for some reason insanely slow and the phone needs to have the app open and screen on for it fully sync.
Some issues I ran into is the Immich iOS app updating and then being incompatible with the older version of the server installed on my machine. You'd have to disable app updates for all apps, as iOS doesn't support disabling updates for individual apps.
In my specific scenario, the latest version of Immich for NixOS didn't perform a certain migration for my older version of Immich. I had to track down the specific commit that contained the version of Immich which had the migration, apply that, then I was able to get back to the latest version. Luckily, even though I probably applied a few versions before getting the right one, it didn't corrupt the Immich install.
Not really. No. You can easily checkout repo containing the Dockerfile, add a Dockerfile override, change most of the stuff while maintaining the original Dockerfile instact and the ability to use git to update it. Then you change one line in docker-compose.yaml (or override it if it's also hosted by the repo) and build the container locally. Can't imagine easier way to modify existing docker images, I do this a lot with my self-hosted services.
I'm running NixOS on some of my hosts, but I still don't fully commit to configuring everything with nix, just the base system, and I prefer docker-compose for the actual services. I do it similarly with Debian hosts using cloud-init (nix is a lot better, though).
The reason is that I want to keep the services in a portable/distro-agnostic format and decoupled from the base system, so I'm not tied too much to a single distro and can manage them separately.
Ditto on having services expressed in more portable/cross distro containers. With NixOS in particular, I've found the best of both worlds by using podman quadlets via this flake in particular https://github.com/SEIAROTg/quadlet-nix
If you're the one building the image, rebuild with newer versions of constituent software and re-create. If you're pulling the image from a public repository (or use a dynamic tag), bump the version number you're pulling and re-create. Several automations exist for both, if you're into automatic updates.
To me, that workflow is no more arduous than what one would do with apt/rpm - rebuild package & install, or just install.
How does one do it on nix? Bump version in a config and install? Seems similar
But what's the performance of NixOS compared to other distros? Also, I imagine CUDA installation is not as simple as changing a few lines of config file?
Immich was my gateway into NixOS. It did a really good job of showing how well it can work. I'm only a couple of months in, so we'll see if it sticks, but I'm also running it on my laptop now.
> There is something to be said about NixOS, it really is a matter of setting `services.immich.enable = true;` in a configuration file.
Assuming someone has added it to NixOS, yeah. There are plenty of platforms even easier than that where you can click "install" on "apps" that have already been configured.
Self hosting used to mean conceding on something. I can honestly say Immich is better in every way than Google Photos or whatever Apple calls it. The only thing is having to set it up yourself.
There are still some features that a miss from Google photos. There isn't any way (that I know of) to auto add pictures to an album based on the face. I used to have dedicated albums for family members, and it was nice to have the auto updated.
Face recognition in general just isn't as good as Google Photos.
It's still an amazing piece of software and I'd never go back, but it isn't perfect yet.
Yes, it does silently and reliably upload all my photos to my server. That's like, the entire selling point of the app? You even have control over how and when (on wifi or not) and the ability to change hostnames depending on what network you are on. And yes I can browse my entire collection back to 2001 no problem. I have no idea what the offline support is.
The sync really is quite good. On wifi it's basically seamless. If I had 30k new images though it would be much faster to use the immich-go tool mentioned in the blog post.
Offline support is alright, though I haven't worried about this much. I think it doesn't do any local deletion, so whatever stays in your DCIM folder is still on device.
> We got to this stage of having to sync ̶b̶e̶c̶a̶u̶s̶e̶ ̶A̶p̶p̶l̶e̶ ̶c̶a̶n̶’̶t̶ ̶s̶t̶a̶n̶d̶ ̶p̶u̶t̶t̶i̶n̶g̶ ̶m̶o̶r̶e̶ ̶s̶t̶o̶r̶a̶g̶e̶ ̶o̶n̶ ̶c̶l̶i̶e̶n̶t̶ ̶d̶e̶v̶i̶c̶e̶s̶.
"because a company that sells you Cloud storage has very few incentives to give away more local storage, or compress/optimize the files generated by its camera app." might be more accurate
I have not shared it with many people. But one of my most wanted feature is to completely share by photos with my partner. None of the services I tried (Plex, Synology Photos) had it. In Immich, it’s just a flip of a button.
Ugreen has it. It has conditional albums in which one can setup rules like person, file type, location, anniversary and more and share a live album. Or leave all params empty and simply mirror the entire library.
You get a link and you can set read or write permissions on it.
Whoever gets that link can browse it in a web browser.
I've used this to share albums of photos with gatherings of folks; it works very well. It does assume you have your Immich installation publicly available, however. (Not open to the public, but on a publicly accessible web server)
How safe is that to set up for novice it people? I have a pi with pi-hole on it and am thinking about putting immich on it but the fact that it exposes itself outside my LAN frightens me.
OK. Then you concede your security, as I can't imagine any single person self-hosting can be better at keeping their public service more secure than engineers at Google can. Especially with limited time.
Other than redundant hosting, what will I get as an Apple user by setting this up? It would be very easy to set up, just not sure what I’m gaining from it
I don't think it would add any value for you. For me, it adds value because I only have to turn my head to the left to see the computer that contains all my photos since I started taking pictures with a smartphone.
For once iCloud have a terrible sync speed. Even 500GB of photos / videos take forever to sync like a week and I can't imagine what it will take for someone with multi-TB archives.
I'd imagine if you're person who make a lot of photos / videos slow sync can be pretty annoying. Unfortunately I'm not one of them to tell, but just had to wait like a week for the first sync of my wife's iPhone to finish.
My biggest worry with Immich is how to future-proof the albums. With photos sorted into folders, it should be no problem to access them in a couple of decades. With Immich, I have to rely on the software still working or finding some kind of tool to dump the database.
Thank you, well put.
thats why I am using next cloud and manual curation. Folders is the ultimate future proof structure. But I do see the value of a nice UI. But immich hides the files from me too much for my taste.
Although I am sure I can back them up to my PC somehow. But having them just on the server is not my favourite solution.
You can configure the storage template for the photos and include an "album" part, so if a photo is in some album it'll get sorted into that folder. Then the file tree on disk is as you wish.
I haven't tested what it does when a photo is in multiple albums, but it does handle the no album case fine as well.
I adore Immich. I set it up a while ago, and I'm finally looking at my photos again. I was previously using Nextcloud for photos, but it was such a slog to find anything that I never took or looked at photos.
Immich put the joy back in photography for me, it's so easy to find anything, even with just searching with natural language.
I do that with DayOne and curation, but obviously this means I keep only 2/3 pictures per event, but most of the time that's enough (and even better, since I choose the ones I prefer and keep those)
I also run NixOS (btw) but opted for the container. My Docker compose setup has moved from Arch to Ubuntu to NixOS now, so I like the flexibility of that setup.
I also use Tailscale, and use cloudflare as nameserver and Caddy in front of Immich to get an nice url and https. For DNS redirects I use Adguard on the tailnet, but (mostly for family) I also set some redirects in my Mikrotik hEX (E50UG). This way Immich is reachable from anywhere and not on the internet. Unfortunately it looks like the Immich app caches the IP address somewhere? Because it always reports as disconnected whenever Tailscale turns off when I'm at home or the other way around and takes some time/attempts/restarts to get going again. It's been pretty flaky that way...
Other than that: Best selfhosted app ever. It has reminded me that video > photos, for family moments. Regularly I go back through the years for that day, love that feature.
I never even used Google Photos (because, you know), so if somebody could explain more concretely: how do you use it? Is it actually a backup app (and if so, is it really much different from using a generic backup app or even just syncthing), or does it somehow magically allow you to keep the preview gallery and search on your device, while your actual 200 GB of photos are somewhere in the cloud and the local storage is basically just auto-managed cache, where everything you didn't access in the last 6 months gets deleted? Does it preserve all this additional data Android cameras add, like HDR, video fragments before photos, does it handle photospheres well, etc? I'm asking because I don't even fully understand how the camera app handles it itself, and if all the data is fully portable.
FWIW, I also don't use any fancy collection management and barely understand what all these Lightrooms and XMP files are for. Maybe I should, but up to this day photos for me are just a bunch of files in the folder, that I sometimes manually group into subfolders like 2025-09, mostly to make it easier on thumbnail-maker.
It auto uploads all your photos to the cloud and you can delete them locally and still have them. The biggest feature is the AI search, you can type anything and it will find your pictures without you doing any work categorizing them. It can do objects or backgrounds or colors and it can even do faces so you can search by people's name. That and there's share links to albums and multiplayer albums.
It keeps the originals locally when it uploads forever unless you delete them. There's a one click "free up space on this device" button to delete the local files. It's actually somewhat annoying to export in bulk, you pretty much have to use takeout.
Key features that matter to me:
1) backup from android or iOS. This helps when I have switched phones over the years.
2) shared albums with family or friends where invited people can both see and contribute photos. Think kids albums, weddings, holidays.
3) ability to re-download at full resolution
For nearly a decade I've been using Google Photos with a love-hate relationship. I've tried a few alternative photo apps, even tried building one myself as a side side side side project, but nothing really felt like it could replace how I use Google Photos (haven't tried in the past couple of years mind).
I have a daughter, and my family lives in another country, so I want to be able to share photos with them. These are the feaures I need:
- Sharing albums with people (read only). It sounds pretty simply, but even Google fucked it up somehow. I added family members by their Google account to the album, and somehow later I saw someone I didn't know was part of the album. Apparently adding people gives (or did?) them permission to share the album with other people which is weird. I want to be able to control exactly who sees the photos, and not allow them to share or download them with others. On the topic of features, I should note that zero of the other social features (comments / reactions) have ever been used.
- Shared album with my spouse (write). I take photos of the kid, she takes photos of the kid. We want to be able to both add our photos to the shared album.
- Automatic albums or grouping by faces. Being able to quickly see all the photos of our kid is really great, especially if it works with the other sharing features. On Google you could setup Live Albums that did this... (automatic add and share between multiple people) but I can't see the option anymore on Android. I feel it could be a bit simpler though, just tagging a specific face, so that all photos should be shared within my Google One Family.
- The way we use it is we have a shared album between us or all the photos, and then a curared album shared with family members of the best photos.
Other than that I just use it as a place to dump photos (automatically backed up from my phone) and search if needed. Ironically the search is not very good, but usually I can remember when the photo I need was taken roughly so can scroll through the timeline. In total my spouse and I have ~200GB of media on Google Photos, some of it is backed up elsewhere.
Wouldn't recommend. When I wanted to move from Google Photos to iCloud, there was no way to simply get all my photos. I had to use a JS script that would keep scrolling the page and download photos one by one.
You can back up to Immich using various methods, including dumb file copy into a dropbox folder. For a while, I was using PhotoSync that uploaded photos to my NAS with Immich using WebDAV.
Immich also has an app that can upload photos to your server automatically. You can store them there indefinitely. There are galleries, timelines, maps for geotagged photos, etc.
The app also allows you to browse your galleries from your phone, without downloading full-resolution pictures. It's wickedly fast, especially in your home network.
> Does it preserve all this additional data Android cameras add, like HDR, video fragments before photos, does it handle photospheres well, etc?
It preserves the information from sidecar files and the original RAW files. The RAW processing is a bit limited right now, and it doesn't support HDR properly. However, the information is not lost and once they polish the HDR support, you'll just need to regenerate the miniatures.
Immich struggles to act as a true unifying solution for users with large, existing archival collections (DSLRs, scanned film, etc.).
Since those „Archival Assets“ are often decades old, already organized into complex, user-defined file structures (e.g., 1998/DATE_PLACE_PROJECT/PLACE_PROJECT_DATE.jpg), and frequently contain incomplete or inconsistent metadata (missing dates, no GPS, different file formats).
Immich's current integration solutions (like "External Libraries") treat the archive as a read-only view, which leads to a fragmented user experience:
- Changes, facial recognition, or tagging remain only within Immich’s database, failing to write metadata back to the archival files in their original directory structure (last time I checked, might be better now.
- My established, meaningful directory structure is ignored or flattened in the Immich view, forcing the user to rely entirely on Immich’s internal date/AI-based organization.
My goal (am I the only one?) of having one app view all photos while maintaining the integrity and organizational schema of the archival files on disk is not yet fully met.
Immich needs a robust, bi-directional import/sync layer that respects and enhances existing directory structures, rather than just importing files into its own schema.
Surprised that neither the article, nor the comments mention Photoprism from what I can see. It’s not I’ve been hosting Photoprism and syncing my photos with PhotoSync from my iPhone for a while now.
I would consider switching to another solution if it had in-browser basic editing (cropping, contrast / white balance adjustment, etc).
Immich, ente and photoprism all compete in a similar space?
Seems immich is the most polished webpage, but which solution will become the next cloud for photos is to be seen. Surely it's not next cloud anymore, considering the comments here.
Immich is wonderful in docker setup passing the gpu for ML which works pretty good and the amazing new OCR feature does miracles, I’m able to find notes that I photographed for this purpose but then forgot, I’m able to find memories just by remembering the name of the place and searching for it and everything is running local!
Immich is great, but I like Ente more because of the E2E encryption. I don't trust that someday my hardware wouldn't get stolen and all photos get in possession of someone else.
Ente looks interesting and worth looking into, thanks for mentioning it.
In the context of having a phone stolen, it's possible to at least limit the damage and revoke accesses via the Tailscale control server. Then the files on device are still vulnerable, but not everything in Immich (or whatever other service is running).
OpenVPN is far from "no fuss", especially when compared to Tailscale.
I like to self host things so I also self host Headscale (private tailnet) and private derp proxy nodes (it is like TURN). Since derp uses https and can run on 443 using SNI I get access to my network also at hotels and other shady places where most of the UDP and TCP traffic is blocked.
Tailscale ACL is also great and requires more work to achieve the same result using OpenVPN.
And Tailscale creates a wireguard mesh which is great since not everything goes through the central server.
Tailscale (and similar services) is an abstraction on top of Wireguard. This gives you a few benefits:
1. You get a mesh network out of the box without having to keep track of Wireguard peers. It saves a bunch of work once you’re beyond the ~5 node range.
2. You can quickly share access to your network with others - think family & friends.
3. You have the ability to easily define fine grained connectivity policies. For example, machines in the “untrusted” group cannot reach machines in the “trusted” group.
4. It “just works”. No need to worry about NAT or port forwarding, especially when dealing with devices in your home network.
Also it has a very rich ACL system. The Immich node can be locked out from accessing any other node in the network, but other nodes can be allowed to access it.
Tailscale uses wireguard, which is better in a lot of ways compared to OpenVPN. It's far more flexible, secure, configurable and efficient. That said, you probably won't notice a significant difference
Not GP. My guess is that they’re self hosting this at home (not on a server that’s on the internet), and Tailscale easily and securely allows them to access this when they’re elsewhere.
Even if you are self hosting in the cloud or on a rented box, Tailscale is still really nice from a security perspective. No need to expose anything to the internet, and you can easily mix and match remotely hosted and home servers since they all are on the same Tailnet.
Tailscale routes my mobile device dns through my pile back at the home. I have nginx setup with easy to remember domains (photos.my domain.com) that work when i’m away as well without exposing anything to the open internet.
In my words, I use Tailscale at home but not for this (yet). Tailscale is a simple mesh network that joins my home computers and phones while on separate networks. Like a VPN, but only the phone to PC traffic flows on that virtual private network.
Tailscale gives me access to my home network when I'm not at home. I can be on a train, in another country even, and watch shows streamed off the Raspberry Pi in my home office.
Unfortunately Immich doesn't (yet) support object storage natively, which IMHO would make things way easier in a lot of ways.
You can still mount an object storage bucket to the filesystem, but it's not supported officially by Immich and you anyways have additional delay caused by the fact that your device reaches out to your server, and your server reaches out to the bucket.
It would be amazing (and I've been working on that) to have an Immich that supports natively S3 and does everything with S3.
This, together with the performance issues of Immich, is what pushed me to create immich-go-backend (https://github.com/denysvitali/immich-go-backend) - a complete rewrite of Immich's backend in Go.
The project is not mature enough yet, but the goal is to reach feature parity + native S3 integration.
I have the main volume for images in a zpool with two SSDs in a raid-1 configuration. I also have a daily cronjob that makes an encrypted off-site backup with Borg. I've also got healthchecks.io jobs setup so that if the zpool becomes unhealthy, the backups fail, or anything stops, then both me and my partner get alerted.
My partner isn't very technical, but having an Immich server we are both invested in has gotten her much more interested in self hosting and the skills to do it.
I'm using restic to backup the Immich photo directories as well as automatically generated Immich database dumps to an external drive and a Hetzner Storage Box.
Very nice the author uses tailscale serve! It's an underrated, and unfortunately under documented, way to host a web service directly to Tailscale. With that you can run a docker compose stack with one extra tailscale container, and then it's immediately a self contained and reasonably portable web server in your tailnet.
Immich really is fantastic software, and their roadmap is promising. I hope they have enough funding to keep going.
I gave it a try a few months ago. Unfortunately, my experience was not that great. I was hosting it on Synology through Docker and found that the iOS client was a bit buggy and quite slow. Synology Photos completed the initial sync in a few hours, while Immich took several days. After a few months, I switched back to Synology Photos. I might try Immich again in the future.
I started looking for alternatives after Synology became more restrictive with their hardware. I'm curious if anyone else has had a similar experience.
My guess would be that Synology is an expensive but weak computer, bare minimum for NAS.
Immich does require some CPU and also GPU for video transcoding and vector search embedding generation.
I had Immich (and many other containers) running successfully on AMD Ryzen 2400G for years. And recently I upgraded to 5700G since it was a cheap upgrade.
Long time synology user. Switched 3 weeks ago to ugreen. They rolled back their fiasco decision about drives (synology), but I wanted some good hardware in 2025. Everything that synology offers is outdated and slow.
Got myself a 6800 pro. It chewed through 98k photos, many of which are raw, within 24h AFAIK. Then came face recognition, text recognition etc. Within 2-3 days all was done.
The performance is night and day. Photos and movies load instantly. Finally can watch home movies on my TV without stuttering (4k footage straight from a nikon).
The photos app is similar to the synology one. Face recognition was better for me. Have compared the amount of photos tagged to a few people and ugreen found 15% more. Have seen photos of my grandma which I didn't see for years!
There's much more positive i could say. For the negatives: no native drive app (nextcloud which supposedly was an alternative doesn't sync folders on android), no native security cam app.
I am running now 10 docker containers without a sweat. My ds920+ was so slow, that I gave up on docker entirely after a few attempts.
The photos app has some nice features which synology didn't have. Conditional albums. Baby albums.
This is great timing, I'm just setting up a homelab and planning to run Immich on a mini PC server connected to a NAS. I did find icloudpd, which seems like a pretty reliable syncing tool for people in Apple ecosystem. https://github.com/icloud-photos-downloader/icloud_photos_do...
I'll throw in another "+1, quite satisfied with immich" comment, because I'm honestly that impressed.
The project as a whole feels competent.
Stuff that should be fast is fast. E.g. upload a few tens of thousands of photos (saturates my wifi just fine), wait for indexing and thumbnailing to finish, and then jump a few years in the scroll bar - odds are very good that it'll have the thumbnails fully rendered in like a quarter of a second, and fuzzy ones practically instantly. It's transparently fast.
And the image folder structure is very nearly your full data, with metadata files along side the images, so 99% backups and "immich is gone, now what" failure modes are quite easy. And if you change the organization, it'll restructure the whole folder for you to match the new setup, quietly and correctly.
Image content searching is not perfect (is it ever?), but I can turn it on in a couple clicks, search for the breed of my dog, and get hundreds of correct matches before the first mistake. That's more than good enough to be useful, and dramatically better than anything self-hosted that I've tried before, and didn't take an hour of reading to enable.
It's "this is like actually decent" levels that I haven't seen much in self-hosted stuff. Usually it's kinda janky but still technically functional in some core areas, or abysmally slow and weird like nextcloud, but nope. Just solid all around. Highly recommended.
I'm running Immich on NanoPi R6C (arm64, even lower idle power usage, still plenty fast for running Immich).
I use Cloudflare tunnel to make it available outside the home network. I've set up two DNS names – one for accessing it directly in the local network, and and a second one that goes through the tunnel. The Immich mobile app supports internal/external connection settings – it uses the direct connection when connected to home wifi, and the tunnel when out and about.
For uploading photos taken with a camera I either use immich-go (https://github.com/simulot/immich-go) or upload them through the web UI. There's a "publish to Immich" plugin for Adobe Lightroom which was handy, but I've moved away from using Lightroom.
Are you also facing the the 100mb upload limit when using cloudflare tunnel?
Sometimes I want to upload a video from my phone will away from home but I can't and need to vpn
You have to disable Cloudflare proxy which is not an option with tunnels. It's technically against TOS to proxy non-HTML media anyway. I just ended up exposing my public IP.
I considered doing that too. My main problem with it is privacy. Let's say I set up some sort of dynamic DNS to point foo.bar.example.org to my home IP. Then, after some family event, I share an album link (https://foo.bar.example.org/share/long-base64-string) with friends and family. The album link gets shared on, and ends up on the public internet. Once somebody figures out foo.bar.example.org points to my home IP, they can look up my home IP at all times.
immich is neat, but I tire of fiddling around with computers more than necessary so I pay for iCloud for the family because I don't want to be Oncall 24/7/365. I do self host home assistant sadly, just because certain things I want to do are just not possible with SmartThings. planning on moving to their hosted solution for that eventually too tho.
I actually did the math earlier and the iCloud 12TB plan for a family is way cheaper than the equivalent s3 storage assuming frequent access, even assuming a 50% discount. so that's nice.
Yes I don't recommend doing that. My experience is that people understand you are human because they know you. They don't expect 9 9s availability but if they somehow do that can be clarified from the start : "I'm hosting this free of charge for family members because (insert your reasons here, it's important to clarify WHY it's different because Apple and BigTech in general somehow still have a ton of goodwill) but as you know as also have a job and our family life. Consequently sometimes, e.g. electricity outage or me having to update the server, there will be down time. Do no panic when this happens as the files are always safe (backup details if you want) but please do be patient. Typically it might take (insert your realistic expectation, do NOT be too optimistic) a day per month for updates. If you do have better solutions please do contribute."
... or something of the kind. I've been doing that for years and people are surprisingly understanding. IMHO it stems from the why.
The "way cheaper than the equivalent" argument reminds me of, and apologies I know it's a bit rough, Russian foreign minister days ago who criticize the EU for its plan to decouple with their oil & gas saying something like "Well if they do that they will pay a lot more elsewhere" and he's right. The point isn't the money though, the point is agency and sovereignty.
One option is use immich just to browse photos. I back my photos up to various places, one of which is my NAS. You can set up immich to browse but not modify photos so you can still use it as a "front end".
The only thing that's really missing is a feature on the mobile app to delete local copies of uploaded assets ... Something like Google Photos "Free up space" feature.
It has that. Select the media you want to delete, tap & hold, then scroll to the right in the menu and select Delete from device. At least on Android this is the way.
One thing I really like is the performance... its smooth and fluid. The api is really useful as well: I wrote a small job to auto add descriptions and tags to the images.
Immich started the same time and with the same backstory/reasoning to my (failed) project.
I love the immich success story but it seems like it's missing a crucial use case in my view: I don't actually want a majority of the photos on my phone. I want something like a shared album that me and my wife both have access to, and so we can share photos specifically to that album (quickly and without hassle), so we can do it in the moment and both have access.
I would probably estimate 90% Of my photos are junk, But I want to isolate and share the 10% that are really special.
My app failed, but I'm thinking about reviving it as an alternative front-end to immich, to build upon that.. But I feel like I'm the only one who wants this. Everyone else seems fine with bulk photo backup for everything.
I want something with a simpler backend than immich. I don't really want to host it because it needs lots of stuff to run. I would love one that can do sqlite and is a single binary go (or rust) program.
I have a homegrown app too. It's too tinkery for anyone else. I throw whole iOS device backups at it so it can pluck out media from texts. Then the frontend has an efficient bulk sorting workflow with vi keys to navigate a grid of photos and tag with a few different tags or delete. I feel like this is not the same use case as immich, it's maybe a curation step before exporting a refined set of media.
just disable auto-upload and then manually upload the ones you want to. There is a setting to share your immich library with someone else. Between those two features, you should get something close to what you want.
For me one of the killer things would be to click "share" on a photo I took, and then have the immich albums show up so I can put them in that specific place as like a 3 click process. That's basically what I was building my whole app around
You can pick which albums on your phone to upload to Immich. You and your wife could have separate users on the server too if you want that. I think you can probably share a user account, or share albums between users, but the syncing might get confusing if you both have an album with the same name. The only reason I can think of to not upload everything on your phone and try to share one or two albums is that it might get hard to search through many pictures, even with the AI.
As for not wanting most of your photos, Immich also includes AI search and facial recognition which both work really well. I can't remember if it detects near-duplicates, but I thought it did. I think you should play around with it before you leap into the giant project of making your own app.
I've been running Immich on my Kubernetes cluster for a few months now. It was one of the harder things to install. I didn't use the "official" Helm chart because I didn't like it, instead just set it up myself. I use Cloud Native Postgres for DBs so I have backups already configured. I had to use a special image with vectorchord in it. It auto updates with flux and has been fine. The only time it wasn't fine was when I needed to manually upgrade vectorchord in the db.
The Android app is good but does quite often fail to open, just getting stuck on the splash screen indefinitely. Means I have to have another app for viewing photos on my phone.
One of the main reasons I wanted to install it is because my partner runs out of space on her iPhone and I don't want to pay Apple exorbitant amounts for piffling storage. Unfortunately it doesn't quite work for that; I can't find an option to delete local copies after upload.
Immich is one of the only apps on iOS that properly does background sync. There is also PhotoSync which is notable for working properly with background sync. I'll take a wild guess that Ente may have got this working right too (at least I'd hope). This works around the limitation that iOS apps can't really run as background apps (appears to me that the app can wake up on some interval, run/sync for a little and try again on the next interval). This is much more usable then for example, the Synology apps for photo sync, which is, the last time I tried, for some reason insanely slow and the phone needs to have the app open and screen on for it fully sync.
Some issues I ran into is the Immich iOS app updating and then being incompatible with the older version of the server installed on my machine. You'd have to disable app updates for all apps, as iOS doesn't support disabling updates for individual apps.
In my specific scenario, the latest version of Immich for NixOS didn't perform a certain migration for my older version of Immich. I had to track down the specific commit that contained the version of Immich which had the migration, apply that, then I was able to get back to the latest version. Luckily, even though I probably applied a few versions before getting the right one, it didn't corrupt the Immich install.
reply