Promised myself I will support them after they go stable. They kept their promise and so did I

https://lemmy.world/post/38160907

What is it and what does it do?
Immich

Self-hosted photo and video management solution. Easily back up, organize, and manage your photos on your own server. Immich helps you browse, search and organize your photos and videos with ease, without sacrificing your privacy.

Immich
Immich Google photo self hosted alternative
Immich! Photo management: immich.app
Immich

Self-hosted photo and video management solution. Easily back up, organize, and manage your photos on your own server. Immich helps you browse, search and organize your photos and videos with ease, without sacrificing your privacy.

Immich
I second this?

From the logo, it looks like immich

https://immich.app/

Immich

Self-hosted photo and video management solution. Easily back up, organize, and manage your photos on your own server. Immich helps you browse, search and organize your photos and videos with ease, without sacrificing your privacy.

Immich

Image Backup* solution — like Google Photos or Ente Photos but self-hosted.

*Backup in the sense of uploading your photos to a server you own. You should backup the database as well as your library with 3-2-1 method.

What 2 different media types are you using for the “2” part?
Spinning and flash.
Why does it need to be two types? Can’t I have 2 spinning?
You can do two spinning but then you should at least use drives from different manufacturers to reduce the risk of them failing at (roughly) the same time.

You put them in a safe. Safe falls down, spinning is gone.

You put them in a safe and forget about them for some time. Flash is gone, spinning still has data.

Good point!

if you have off-site backup, that could potentially count as the two types, but probably not in the spirit of the backup.

I have two spinning disks, a SATA SSD cache, and off-site backup

FLASH! AAAAAAAA
The world needs those two gifs combined so we can more easily (and awesomely!) answer this question in the future.
  • Short: It is a second Hardrive using borg that backs up the primary harddrive.

  • Long: My Backup strategy:-

Databases and other imp files:

For databases the backup happens every night that gets saved on the server itself. Then when my laptop connects either to the home network or to the Internet, the backup zip files on my server syncs to my laptop via syncthing. Then my laptop’s data is backed up to OneDrive (encrypted) — this includes the immich database backups. I usually keep 7 days worth of backup files just incase some get corrupted and I can just go back to the previous day.

Library

Since my Immich Library is big, daily borg backups are not possible for 200 gigs. So I have scheduled them every Sunday morning when I rarely use the server. The photos gets uploaded to the hardrive mounted to Immich’s Library directory. The hard drive is exclusively used only for Immich. That hard drive is then backed up to another hard drive using borg and also to my OneDrive using rclone. (All encrypted). So 3 copies of the data, 2 on 2 different hardives (off which 1 is primary) and one offsite.

I do nightly borg backups of much more than 200gb. The idea of incremental backups is you’re only doing the changes, and photos don’t tend to change.

What challenge did you come across with a 200GB backup?

I wasn’t bothered by it until you said nightly lol. So basically it takes a heck lot of time for the backup to finish - like almost 6 hrs even with 200MB of changes or even there are no changes. It could be because of integrity check or pruning old ones. I don’t know the exact issue honestly. It could also be because of slow hardrives. It could be my repo size as well.

I used my local LLM to make the script and tested it with a test container to see if it was working which it was so I just went ahead with it. If you can help here are the last backup logs and my backup script.

[START] Sunday 26 October 2025 06:00:01 AM IST: Starting Borg backup... Creating archive at "[REDACTED_REPO_PATH]::immich-2025-10-26_06-00-01" ------------------------------------------------------------------------------ Repository: [REDACTED_REPO_PATH] Archive name: immich-2025-10-26_06-00-01 Archive fingerprint: [REDACTED_FINGERPRINT_1] Time (start): Sun, 2025-10-26 06:00:03 Time (end):   Sun, 2025-10-26 11:40:22 Duration: 5 hours 40 minutes 19.06 seconds Number of files: 34775 Utilization of max. archive size: 0% ------------------------------------------------------------------------------                        Original size      Compressed size    Deduplicated size This archive:              207.73 GB            205.39 GB            210.94 MB All archives:                2.60 TB              2.57 TB            206.75 GB                        Unique chunks         Total chunks Chunk index:                  113167              1402143 ------------------------------------------------------------------------------ [PRUNE] Sunday 26 October 2025 11:40:23 AM IST: Pruning old backups... Keeping archive (rule: daily #1):            immich-2025-10-26_06-00-01           Sun, 2025-10-26 06:00:03 [REDACTED_FINGERPRINT_1] Keeping archive (rule: daily #2):            immich-2025-10-19_06-00-02           Sun, 2025-10-19 06:00:03 [REDACTED_FINGERPRINT_2] Keeping archive (rule: daily #3):            immich-2025-10-12_06-00-01           Sun, 2025-10-12 06:00:02 [REDACTED_FINGERPRINT_3] Keeping archive (rule: daily #4):            immich-2025-10-05_06-00-02           Sun, 2025-10-05 06:00:03 [REDACTED_FINGERPRINT_4] Keeping archive (rule: daily #5):            immich-2025-09-28_06-00-02           Sun, 2025-09-28 06:00:03 [REDACTED_FINGERPRINT_5] Keeping archive (rule: daily #6):            immich-2025-09-21_06-00-01           Sun, 2025-09-21 06:00:03 [REDACTED_FINGERPRINT_6] Keeping archive (rule: daily #7):            immich-2025-09-14_06-00-02           Sun, 2025-09-14 06:00:04 [REDACTED_FINGERPRINT_7] Keeping archive (rule: weekly #1):           immich-2025-09-07_06-00-02           Sun, 2025-09-07 06:00:03 [REDACTED_FINGERPRINT_8] Keeping archive (rule: weekly #2):           immich-2025-08-31_06-00-02           Sun, 2025-08-31 06:00:03 [REDACTED_FINGERPRINT_9] Keeping archive (rule: weekly #3):           immich-2025-08-17_06-00-01           Sun, 2025-08-17 06:00:03 [REDACTED_FINGERPRINT_10] Keeping archive (rule: weekly #4):           immich-2025-08-10_06-00-01           Sun, 2025-08-10 06:00:02 [REDACTED_FINGERPRINT_11] Pruning archive (1/1):                       immich-2025-08-03_06-00-01           Sun, 2025-08-03 06:00:03 [REDACTED_FINGERPRINT_12] Keeping archive (rule: monthly #1):          immich-2025-07-28_10-54-59           Mon, 2025-07-28 10:54:59 [REDACTED_FINGERPRINT_13] [CHECK] Sunday 26 October 2025 11:40:25 AM IST: Verifying backup integrity... Failed to securely erase old repository config file (hardlinks not supported). Old repokey data, if any, might persist on physical storage. Failed to securely erase old repository config file (hardlinks not supported). Old repokey data, if any, might persist on physical storage. [DONE] Sunday 26 October 2025 12:09:38 PM IST: Backup completed. #!/bin/bash export BORG_REPO="/home/user/immich_backup/borg" export BORG_PASSPHRASE="[REDACTED_BORG_PASSPHRASE]" SOURCE="/home/user/containers/immich/library" LOG="/home/user/borg-backup.log" ARCHIVE="immich-$(date +%Y-%m-%d_%H-%M-%S)" echo "[START] $(date): Starting Borg backup..." >> "$LOG" # Skip if source is empty or unmounted if [ -z "$(ls -A "$SOURCE")" ]; then echo "[SKIP] $(date): Source directory is empty or unmounted. Skipping." >> "$LOG" exit 1 fi borg create --verbose --stats \ "$BORG_REPO"::"$ARCHIVE" \ "$SOURCE" >> "$LOG" 2>&1 echo "[PRUNE] $(date): Pruning old backups..." >> "$LOG" borg prune -v --list "$BORG_REPO" \ --keep-daily=7 --keep-weekly=4 --keep-monthly=6 >> "$LOG" 2>&1 # Optional: Run a full repo integrity check echo "[CHECK] $(date): Verifying backup integrity..." >> "$LOG" borg check "$BORG_REPO" >> "$LOG" 2>&1 echo "[DONE] $(date): Backup completed." >> "$LOG"
Ente is also open source and can be self-hosted.
If it works then great. I find it pretty lacking compared to Immich.
I guess they fill different niches. I use Ente for the e2ee, that’s pretty important to me. Immich definitely seems more like a drop in Google Photos alternative, I just use software on my computer to do that instead.
E2EE is definitely important for uploads on someone else’s server. On my server? Ehhh, not so much. The entire drive is already encrypted. Another layer of encryption would just slow it down. Just my opinion.
I would think e2ee would be important if youre uploading files when away from your local network. If that isn’t enabled, then it’s far less important. At that point, it would only matter if there was a compromised client harvesting your wifi packets.
Immich automatically uploads when I connect to wifi so that’s not really a problem. Nor am I personally concerned with someone MITMing my personal photos, I just want them out of corporate silos that use them to exploit me or hand them over to the gov in a dragnet.
If this is happening via a VPN you almost definitely already have transit encryption
Fair point, and if ypure worried about privacy while transferring images, a VPN should have already been considered.

e2ee would be important if youre uploading files when away from your local network

Even without e2ee or a VPN, just plain old HTTPS should be enough to secure that part, or am I missing something?

True, but if you control both endpoints, e2ee and https look very similar.
Their auth is better than the tool itself (last time I evaluated options which was maybe a year ago)

Oh they update a lot. The clients have gotten really snappy, which is nice because browsing photos felt a bit cumbersome before. There’s now automatic albums and facial recognition, if you opt in to that. Was going to say that there’s no editing tool but there is. It’s quite basic though, three tabs, crop, transform (rotate, flip, resize), and colours (brightness, contrast, saturation, and blur for some reason lmao).

There’s also a bunch of sharing features. You could share images or albums directly, or even create embeds for if you have a portfolio website. I pretty much only use it as a backup service though.