The Nightmare of Migrating from Lightroom CC to Immich [Adobe doesn't make it easy]

sad pepe on lightroom logo
preview

I just spent the past 2 weekends migrating from Lightroom CC with just under 1TB of photos, mostly RAWs, making up about 50,000 files. I kind of made it up as I went and I spent a lot of time testing and validating. I’m going to do a writeup here to hepefully help ayone else coming acrross this and/or in case someone has ideas.

My Requirements:

  1. Move all photos off Lightroom and preserve both RAW files and snapshot renders at high quality. I intend on staying on Lightroom because it’s my editor of choice. I’ve litigated Darktable in comments on Lemmy, and while I love the software and the concept, I use Lightroom for my semi-professional work
  2. (The hard part) Metadata. I absolutely need my album organization, my picks, and my star ratings from Lightroom. More on this below
  3. All data must move to my self-hosted Immich with a TrueNAS pool behind it. The stack is Proxmox running a Truenas VM and a Debain VM. The Debian VM runs docker where Immich runs. Connectivity is driven by Netbird mesh VPN. That is a limitation for sharing and I’m ok with it.

Getting your pictures out

  • Adobe doesn’t make this easy just below the surface. There are open source tools intended to help one migrate from Lighroom Classic catalogs to Immich, but CC is very different. The export options are very particular.
    • Adobe lets you export a massive dump of pictures and renders as a real export option. It’s through their website and it will email you when a dump is ready. Said dump will contain multiple zip files each with RAWs and renders. NO Metada or structure is included and NO edit data.
  • You can “Archive” from Lightroom CC (tested on Mac) and that will output originals + the edit file AND it will preserve the root album from which your photo came. But no metadata beyond that (no ratings, folder structure, picks). The bad part is that this deletes your files once it’s done. You can still restore fromTrash but this is definitely a hostile action against users.
  • You can just output EVERYTHING. This is for the truly insane as you sit there and wait for Lightroom to render each one of your pictures individually. If you do original + edits, that returns the same thing as Archive but without structure.
  • The secret 4th option: you can (as of this writing) parse Lightroom’s internal catalog and get Albums, picks, star ratings, and folder structure. This was a massive unlock for me. This file was at ~/Library/Application Support/Adobe/Lightroom/

My solution going forward

Because I was discovering this as I went, I tried some version of all of the options above, but going forward, I have a process which should be much easier.

First, I will parse the catalog which is a SQLite db and extract the newest “version” of each picture and the content I care about. I will store it in a CSV for long-term holding.

Once metadata is stored, I’ll go and request the archive through the website. That will take a few hours to possibly days (it took me about 2 hours on a Friday night). Once that’s done, you get an email and a link to a personalized site. You have to parse the (for me) 50+ links and download them sequentially. It took me a few hours to download 1 TB limited by my local bandwidth (for which I’m eternally grateful). With my TrueNAS storage, I have the luxury of landing the data and uploading it to Immich separately.

For XMPs, the edit data, you have to get that from a local source so either export originals or the desktop app “Archive All” option.

You’ll have to decide what you need and maybe you have fewer requirements than me.

Landing the Pictures

The next challenge is grabbing all of that data, pictures and ratings and applyhing them in Immich. Luckily, it has a fantastic API so I can script the whole thing. Most of the mapping happened by picture name and there were a few times where I had to dig into exif to identify a picture. Overall, i think I had 40 or so files out of 50k+ which couldn’t be mapped.

Encountered Problems:

  • As mentioned before, this was a try-it-until-it-works situation for me. I had to download all of my pictures 2 times by 2 different methods (I didn’t document this but there was an SMB share involved).
  • Stars are a new object and I had to manually enable it in Immich
  • I couldn’t replicated nested album functionality in Immich and chose to keep the root album name + a tag of the folder structure. That worked well for me
  • Lightroom tags could not be exported. I don’t use them a lot but that could be a blocker for some.

Disclaimer

  • Every word in this write up was written by me on my keyboard
  • I used a self-hosted local AI to do this work.
  • I know enough to be in control even at a technical level, but the time savings on this project with AI really made it possible
  • The AI found the catalog and parsed the data out of it. It would not have occurred to me.

Future

  • I have all of this work on my personal Forgejo and if there’s enough interest, I may post publicly, though this write-up should serve as a starting point for anyone who wants to replicate my process

what is Fermi/Harmony Chat ?

Fermi
preview

cross-posted from: lemmy.blahaj.zone/post/48313374

Promotional

Im not affiliated to Fermi/Harmony chat in any way, im just a user who liked it and want to share my experience of the app i find worthy of sharing

so i wanted to share a promising project that I have been using for a few months.

made this post to promote and share this platform since it needs more people, theres arent many atm and it deserves way more.

Fermi/Harmony Chat is free and open source discord like guild/community centered chat platform with most of the features that are expected from those platforms like message channels, vocal chats, threads, screensharing and more. Importantly the chat platform has a strict stance against LLMs AIs and AI generated slop like vibe coding and other abusive usage of AI that replaces human work and slop it in the process. sadly fermi/harmony is unique of having a strong stance against AI. (other similar projects sadly uses AI and excuses AI usage and vibe coding)

the platform also allows users to create their own client for the platform. harmony chat is the API and fermi is just the currently only working client on the platform (was a spacebar client previously until harmony was created as a spacebar fork with the goal of fixing the many issues and bugs present on spacebar) and in the future, instances are going to be federated and the process will be managed directly by the client (fermi and other clients) without being tidious and for advanced users like on matrix, so more easy and beginner friendly.

the platform also is more lenient on its acceptable policy and have a no bullshit moderation. (sadly not the case for other alternatives which sucks very much)

IMPORTANT

currently the project in its early stage and still has lots of bugs, glitches and various issues.

it is currently only accessible through a web browser (there is no app neither on desktop or on mobile)

lots of features are not finished and the platform still need major improvements. but i hope it is going to grow and become a viable alternative.

currently there are around 800 people are registered on fermi/harmony chat.

fermi.chat the main website currently (use this one to register) melodychat.org the organisation’s website (its called melody on codeberg and on the website since harmony was taken)

codeberg link of both harmony and fermi :

codeberg.org/MelodyChat/Harmony codeberg.org/MelodyChat/Fermi

credit to Mathium5, eliza, devs and contributors for developping and maintaining fermi and harmony chat.

Issue #64 that was blocking DNS-PERSIST-01 has been resolved

preview

Good news, a security issue that was blocking the draft for the new DNS-PERSIST-01 challenge mode for TLS certificates has been resolved, meaning the challenge can resume moving forward.

Some background for those who aren’t up to date:

  • TLS challenges are how self-hosters and many other TLS certificate users prove who they are in order to automate cert renewals.
  • The most popular challenge methods are HTTP-01 (which involves having a live web server answering on port 80 somewhere) and DNS-01 (which involves putting a key given by the TLS authority in your DNS zone in a TXT record temporarily).
  • All the current challenges are conducted “live” and require active online participation on the part of the domain owner each time a cert is approaching expiration.
  • The new DNS-PERSIST-01 challenge would let owners keep a proof in their DNS zone indefinitely (or with self-imposed expirations), eliminating the need for those online sessions.
  • DNS-PERSIST-01 was slated to come out in Q2 this year at the latest and all the popular tools (ACME bots, reverse proxies etc.) have been chomping at the bit to implement it.
  • Unfortunately there’s been a security snag. Trying to do things the way DNS-01 did (record only the server-provided proof in DNS) would open DNS-PERSIST-01 to middleman attacks, because unlike DNS-01 where the proof is only there temporarily for a few seconds or a few minutes at the most, in this case the proof would be long-term.
  • Hence issue #64, which has been trying to come up with a way to keep only a partial proof in DNS, and combine it with something issued by the server and something issued by the domain owner to make the whole proof, thus rendering the stuff stored in DNS impossible to use for malicious purposes, yet still sufficient for verifying ownership periodically.

Hopefully now that this hurdle has been passed things will proceed faster and we’ll get to use this in the near future.

Where to start with setting up my own server?

preview

Good news selfhosted crowd! I pitched the idea of setting up a server, and she is down with the idea!

I want to run Linux and host things like Jellyfin, Audiobookshelf, Navidrome, maybe Plex (I currently host it off my Mac desktop but would move it to a dedicated server).

I know you can host Plex et al on something like a Raspberry Pi, but I want a bit more power. I want something that can push at least 2-3 4K streams.

I’m considering targeting 12th gen i5 with 16GB DDR4. Maybe 32GB if I can swing it. Is that overkill? I know you want 8th gen Intel for hardware transcoding of either x265/HEVC or AV1 (probably the former as the latter is newer).

There are other projects I’d like to run. I’d like to be able to host my own LLM/AI but I’m not trying to go performance overkill here. This would be my first server.

I am somewhat comfortable using the command line, and I would be remoting into the server via my Macs (I have a desktop and a MacBook). However, Linux can run Windows games via Proton and that’s something I’m interested in for some older titles that aren’t on Xbox (like Deus Ex, which came out in 2000 and should run on integrated graphics). I’m not inexperienced with Linux and have been using it off and on (mostly off unfortunately) for over 30 years. My go-to would be Ubuntu, but I’ve heard great things about KDE lately and I know the Internet is in love with Mint these days. Would the distro really matter all that much as long as I have the required services?

Looking to move from Caddy

preview

Recently it’s come to my attention that Caddy has an AI sponsor so I have been looking at moving away from Caddy.

I’m currently looking for another reverse proxy to use in place of Caddy. For TLS I am looking into using CertBot and it appears there’s a module (github.com/desec-io/certbot-dns-desec) I can use that works for desec.io to handle my certs.

I have two questions, the first is about CertBot. Since Caddy is handling my certs automatically, how often would I want to renew my certs? Desec.io has this command to obtain a cert:

certbot certonly \
     --authenticator dns-desec \
     --dns-desec-credentials /etc/letsencrypt/secrets/$DOMAIN.ini \
     -d "$DOMAIN" \
     -d "*.$DOMAIN"

Would I be required to run the same command periodically to renew my cert?

My second question is a bit more open ended. I am looking to hear any suggestions or experiences about different reverse proxies that are preferably free of AI. There is a list here with some suggested alternatives: codeberg.org/ethical-foss/open-slopware#web-serve…

It’s not just LG. Every TV company is spying on you

The Verge There are ways to protect yourself from your spying TV
preview

Crossposted from infosec.pub/post/52518361

The TV world has been a pot of controversy thanks to a two-hour-and-15-minute video from Gamers Nexus claiming LG TVs are nefariously spying on everything you do. They can record and store audio even when they seem to be off, track everything you watch, and could even be hacked remotely and turned into covert surveillance […]

Meta puts its AI assistant on a keychain

Ars Technica Meta puts its AI assistant on a keychain
preview

The device, which features a screen showing the Muse avatar, will also have real-time voice interactivity and is set to be released in December.

“If you’re not wearing glasses, this is going to be by far the fastest way to talk to your Muse and to show what’s going on around you,” the chief executive said.

Muse, development of which was first revealed by the FT in May, has helped change the momentum of Zuckerberg’s huge bet on AI, quickly becoming the most downloaded app on both the Apple and Android app stores in the US since its launch two weeks ago.

First-ever case of euthanasia on very young child, 2, was handled well

NL Times First-ever case of euthanasia on very young child, 2, was handled well: Dutch committee
preview

Excerpt:

The doctor who performed the Netherlands’ first case of euthanasia on a child under 12 did so with due care, the supervising committee concluded after investigating. The patient, a child of nearly 2 years who suffered from several severe medical conditions, died at the end of 2025.