Как надёжно хранить фотки у себя, а не в облаках

 Публичный пост
27 июня 2023  8971
Беха ОХУЕННО ⨯2 Держи долор Я понял!

Один из пунктов в моём Todo на 2023-й год звучит (звучал) как "Перенести фотки от Гугла куда-то ещё". Такое важное и почётное место эта задача заняла сразу по целой куче причин. Однако, прежде чем озвучить их, давайте поймём, с чем предстоит работать.

UPD: Да, я в курсе, что любое облако будет дешевле колхоза, описанного ниже. Спасибо за ваше мнение :)

С чем работаем

Я люблю фоткать, много и часто, не как фотограф, а как обыватель, на айфон. "Много и часто" — это значит, что когда я делаю селфач с друзьями, это сразу 5-8 кадров, потому что обязательно кто-нибудь моргнёт, получится ленивый глаз, или ещё что-нибудь. Результат понятный: 200+ гигабайт фоток с 2009 года на одном только Google Photos, который пережимает исходные файлы, и ещё около 150 гигабайт на Яндекс Диске с 2018, понятно, что какой-то процент изображений просто дублируется между двумя сервисами.

Почему и зачем

  1. Я уже давно хочу постепенно уйти от жёсткой привязки к крупным провайдерам. Гугл любит убивать давно работающие сервисы, плюс время от времени всплывают истории о (вроде как) беспричинных банах многолетних юзеров, которые в один момент теряют доступ к почте, фоткам и всем прочим сервисам Гугла. Шансы попасть под раздачу невелики, но рисковать не хочется. Яндекс же — изначально российская компания, и если несколько лет назад это была одна из немногих компаний в РФ, которым я мог бы доверять, то сегодня это уже не так. А значит файлики нужно забирать. И держать где-то у себя.
  2. Мне нравится возиться с домашним сервером. Впервые я этим заморочился сполгода назад, и идея заморочиться с домашним хранилищем для фоток идеально вписывается в сценарий использования хоумлаба. Плюс маленькая прокачка всяких докеров и околосерверных скиллов.
  3. Облака — это дорого. Ну то есть как: 100гб хранилища в Google One (это Drive, почта, Photos и что-то там ещё всё вместе) стоят всего 20 евро в год, 200гб — 30 евро, а дальше уже только 2тб за 100 евро. Учитывая, что я вплотную подхожу к верхнему порогу 20-еврового тарифа, цена будет только расти. Не забываем и про (призрачные) риски выхватить случайный бан: на этот случай нам нужно ещё одно облако. В моём случае это Яндекс Диск, который тоже стоит отдельных денег и который по-прежнему остаётся компанией из РФ со всеми сопутствующими бонусами и рисками.
  4. Бесплатная иллюзия контроля. Размещая фотки у себя, я избавляюсь от рисков, связанных с облачными хостерами и принимаю на себя пачку других, о которых (и об их нивелировании) поговорим ниже. Однако, ощущение чуточку большего контроля над окружающим миром бесценно само по себе.

Хранилище фоток в идеальном мире

Что нам требуется? Опять по пунктам:

  1. Селф-хостед софт
  2. Веб морда с хорошим интерфейсом для просмотра фоток на десктопе
  3. Мобильное приложение (в первую очередь, для аплоада фоток)
  4. Многопользовательсковость (я не один, у меня жена)
  5. Возможность бэкапить файлы куда-то наружу (мы же не думаем, что держать все фотки в одном месте хоть сколь-нибудь безопасно?)
  6. Опционально: умение работать с live-фотками с айфона
  7. Опционально: Реверс геокодинг, чтобы видеть где какая фотка была сделана на карте
  8. Опционально: Лайкание фоток
  9. Опционально: Архивирование фоток (скрытие из основной ленты без удаления)
  10. Опционально: Альбомчики (для меня вообще не обязательный пункт)
  11. Опционально: Рюши вроде сторей в духе "Год назад вы фоткали вот ето"

Итак, если не облака, то что? Когда я впервые задался вопросом содержания домашнего сервера, из опенсорсных решений выделялся, разве что, PhotoPrism. Я поставил его, поигрался, позагружал туда фотки, удобно. Но — совершенно нет многопользовательсковости. Подразумевается, что пользователь всего один, семьи у него нет, а потому и разделение фоток по неймспейсам личных пространств не нужно. По крайней мере, в бесплатном community edition. В целом справедливо, но если я хочу перестать платить за облака, то эээ... Я и за селфхостед софт платить не хочу? Считайте меня жадным, это бесплатно. В общем, юзер менеджмент есть только в версии за 6 евро в месяц. Плюс, у них был какой-то скандал с их комьюнити не так давно, где кто-то как-то некрасиво поступил, но в это я уже не вникал. Фотопризм не вариант.

Дальше мне в r/selfhosted попался Immich. И как-то, кажется, это сразу было попадание в десяточку. Он удовлетворяет всем описанным в пунктах выше требованиях, а ещё умеет распознавать лица и машин лернинг (кажется, пока не очень умело), визуально очень похож на Google Photos (жирнейший плюс для меня), требует не миллион ресурсов на сервере и умеет в поиск по фоткам (очень криво-косо пока что, но и ладно). А, и запускается в Портейнере/Докере/Докер Компоузом/через чёрта лысого, что так же понижает порог входа. В общем, то, что нужно.

А, и ещё нужно, чтобы всё это бэкапилось куда-то наружу. Если вдруг пожар унесёт наш домашний сервер на серверные небеса, наши фотки будут в безопасности. Или там, если просто диск крякнет.

План

С основным инструментом определились, как работает и выглядит всё остальное?

Примерно так:

  • На сервере крутится докер
  • В докере запускается Immich
  • Крон-таска на сервере раз в N часов (дней, недель?) бэкапит БД Immich и сами фотки в облако
  • ???
  • Вы прекрасны!
  • А, и ещё неплохо бы дополнительно бэкапить всё на внешний жёсткий диск. Вдруг серверный диск крякнет.

Воплощение

На практике оказалось, что Immich сам по себе позиционируется как бэкап-тулза, да ещё и в стадии активной разработки (разработчики просят не использовать софтину как единственное средство хранения фоток, но кто их слушает, верно?). Это значит, что, на текущий момент, в Иммихе нет штатного инструмента, который позволял бы по расписанию делать бэкапы базы и файлов куда-нибудь в условный S3. Поэтому бэкапчики придётся костылить самостоятельно.

Что, собственно, не проблема. Друг-системщик подсказал мне утилиту для управления файликами rclone, а я сам нашёл хранилище Backblaze B2 с S3-совместимым апи и более низкими ценами на хранение файлов.

Из чего теперь состоит наш человек-швейцарский нож?

Внутрянка:

  • Связка Docker + Portainer, потому что никто не любит постоянно пердолиться с терминалом
  • Immich для непосредственного хранения и просмотра файлов
  • https://github.com/garzj/google-photos-migrate для приведения фоток в божеский вид после Google Photos (метаданные, теги и так далее)
  • Rclone для синхронизации локальной файлопомойки с бакетом в B2 и внешний HDD/SSD
  • Ansible для того, чтобы хранить весь колхоз в виде перезапускаемых ямлов
  • И всё это крутится на домашнем сервере под управлением Ubuntu, который построил Джек

Внешка:

  • Backblaze B2
  • Внешний HDD/SSD для периодического локального бэкапа данных

Вроде всё? Ну да.

В общем, вчера я выкачал все фотки с Яндекс Диска, сгрузил четыре пятидесятигигабайтных архива из Google Photos, поэкспериментировал с Rclone, убедившись, что он делает всё, что мне необходимо, и процесс пошёл. Для ясности, все описанные ниже шаги зафиксированы в Ансибле, потому что если сделать всё руками и что-то сломается, я скорее забью и навсегда разочаруюсь в идее, чем найду время и силы чинить.

На локальный сервер установил свежий пустой Immich, создал пользователя, апи-ключ для импорта фоток толпой.

После скачивания файлов с Яндекс Диска шаманить с их метаданными не пришлось, потому что они там хранились в исходном виде без пережатия. Загрузил их на сервер и сразу же натравил на них тулзу для импорта фоток в Immich. Иммихь, после поглощения скормленных ему фоток, принялся их переваривать, скрипя фоновыми джобами, которые отвечают за генерацию thumbnails, извлечение метаданных, тегирование объектов на фотках, фейс рекогнишен, и ещё там какие-то. Это происходит без моего участия.

Тем временем с Гугл Фотос выкачались 200гб фоток. Загрузил их на сервер, распаковал из архивов в одну директорию и натравил на них https://github.com/garzj/google-photos-migrate, потому что, как я говорил выше, Гугл пережёвывает фотки на свой лад, а метаданные складывает в одноимённые джейсоны. Эта тулза как раз засовывает их обратно. После того, как засунет, можно будет скормить импорт-тулзе, как и яндексовый архив.

Иммихь крутится, метадата мутится, а значит самое время наладить бэкапы наружу. Запустил ансибл-скрипт, который поставил на сервер Rclone и научил его с помощью крон тасков два раза в сутки брать нужные файлы и сихронизировать их в целевой бакет на B2. Rclone sync не аплоадит существующие файлы, а лишь поддерживает файловую структуру и содержимое на бакете в том виде, в каком они существуют на исходном сервере, а значит этот процесс будет долгим только в первый раз, а дальше всё будет синкаться за секунды. А, и ещё ансибл прописывает крон таск для бэкапа базы данных самого Иммиха, которая будет загружаться в тот же бакет на B2. Таким образом, в случае чего, достаточно будет ресторнуть бэкап БД на новом инстансе Иммиха и ему не придётся жевать метатеги для всех файлов в фоновых задачах по новой.

Ну вот вроде и всё! Кажется, отличный план. Надёжный, как швейцарские часы.

Что ещё предстоит

Чего не хватает? Ну, я пока ещё не купил внешний диск для локального бэкапа. Это ещё предстоит сделать. Как только этот вопрос будет закрыт, в целом, я буду (кажется) удовлетворён схемой бэкапов. Но я в этом деле не эксперт, так что тут как раз настаёт время для конструктивных комментариев: как сделать систему более надёжной без лишнего пердолинга? Я в курсе про схему бэкапов 3-2-1, но заморачиваться с записью данных на плёнку, кажется, пока не готов. Не знаю, буду ли готов вообще, это уже паранойя.

В теории вместо внешнего харда можно было бы заморочиться с настройкой RAID1 или RAID10. На практике я пока этим заниматься не хочу, плюс если физически сервер будет уничтожен (скажем, сгорит квартира), внешний диск может и пострадает, но совершенно не обязательно. Его можно вообще на антресоль засунуть, или куда там понадёжнее можно придумать.

После того, как все данные будут импортированы, метаданные расставлены и в долине больше не останется бандитов, настанет время для того, чтобы медленно и постепенно удалять ненужные дубли и просто плохие фотки. Это совершенно не обязательный шаг (выхватил его из соответствующего видоса: How To Remember Your Life), но я дам ему шанс и планирую иногда тратить на это время.

Ещё через некоторое время было бы неплохо полностью вычистить фотки из облаков, где я хранил их раньше. Потому что облака стоят денег.

А если я хочу так же?

Все свои ансибл-скрипты я складываю в репозиторий https://github.com/Freika/homelab. Там не только про Иммихь, но если вы пришли именно за ним, то вас интересует файл immich.yml. Скопируйте inventory.txt.example в файл inventory.txt, замените все переменные на свои собственные, выполните команду make immich (можно посмотреть в Makefile) и дальше всё будет сделано за вас, simple as that.

А что по бабкам-то?

Разово:

  • Сервер (старая рабочая станция с Ибея) — 62 евро
  • HDD + SSD для сервера — ~100 евро
  • Донат автору Иммиха — 5 евро
  • Внешний HDD на 2TB — ~70 евро

Постоянно:

  • Хранилка для бэкапов Backblaze — ~5 баксов в месяц
  • Поддержание жизни в домашнем сервере — около 6 евро в месяц (на электричество)

Автору Immich сделал разовое пожертвование, возможно, сделаю его регулярным. Да, я знаю, что я говорил выше, что не хочу платить за селфхостед софт, разница в том, сам я хочу красить забор, или меня заставляют.

А по времени как?

Я вожусь с этим всем уже третий день. Большую часть времени всё делается без моего участия: скачиваются архивы экспорта из Google Photos, работает google-photos-migrate, импортируются фотки в сам Иммихь, загружаются бэкапы на B2. Я тем временем вот писал и редактировал этот пост. Если за всё это возьмётесь вы сами, наверное, можно будет управиться за полдня активного времени: поставить Иммихь, загрузить фотки, разобраться с приложенькой на телефон, наладить бэкапы, да и то есть ансибл-плейбук по ссылке немного выше.

Делитесь своим опытом, если колхозили что-то подобное, возможно, я вдохновлюсь и что-то изменю в своём подходе.

Связанные посты
117 комментариев 👇

Итак, прошёл месяц с тех пор, как я заселфхостил свои фотки. За это время накопилось некоторое количество выводов и наблюдений.

  1. В изначальной версии ансибл-плейбука у меня неправильно был сконфигурирован крон-таск для бэкапа фоток с помощью Rclone на B2. Починил, теперь всё работает, проверено.
  2. Обнаружил, что вместо 20 тысяч (посчитал по логам) heic изображений у меня сломанные файлы. Не открываются. Ни Иммихом, ничем при скачивании. Однако, когда я переименовывал эти файлы в .mov, они открывались как короткое видео, то есть это изначально лайв-фото. Рабочая версия заключается в том, что google-photos-migrate при работе и попытке вклеить обратно метаданные из джейсона, ломает файлы. Я пробовал заливать исходные файлы из Тейкаута гугла, они считываются нормально (как статичные heic), и как минимум правильно сортируются по дате, насчёт геоданных не знаю. Эксперименты так же показали, что попорченные файлы в моём случае имеют непопорченные копии, потому как я хранил их и в гугл фотос, и в яндекс диске. Версии с Яндекса не поломаны, так что я просто время от времени захожу в Иммих, чтобы почистить сломанные файлы и заодно освежить воспоминания о делах давно минувших дней. Возможно, соберусь и просто набросаю скрипт для удаления их через апи Иммиха толпой, пока лениво.
  3. Получил в подарок толстый внешний SSD, теперь бэкаплю фотки и на него, радостно
  4. Как кто-то справедливо заметил в комментариях, команда rclone sync должна выстроить дифф. Разницу между локальными файлами и файлами на сервере, чтобы дозагрузить недостающие и удалить на сервере файлы, которые были удалены локально. В случае с B2, это достаточно дорогая операция, так что моя изначальная задумка бэкапить всё пару раз в сутки была объективно чрезмерно оптимистичной. Это тупо обойдётся мне неприлично дорого. Переписал конфиг, теперь бэкап происходит пару раз в месяц, меня устраивает. Если будете использовать мой скрипт для своих нужд, не забудьте отредактировать крон-таску.
  5. Бэкапить сто тысяч файлов через канал, который позволяет всего 50мбсек на аплоад, долго и медленно. Ещё дольше и медленнее из-за того, что это мелкие файлы по 1-3 мегабайта в большинстве своём. Бэкапы теперь шуршат только под утро.
  6. HDD шумные. У меня в сервере, который находится в полутора метрах от моего рабочего места, стоит именно HDD, и меня ужасно бесит его хруст, когда он что-нибудь аплоадит, даунлоадит или когда я просто скроллю Иммих. Через время нужно будет обзавестись SSDшниками.
  7. Вопрос с silent data corruption пока не порешал, планирую вернуться к нему, когда куплю пару надёжных SSD по терабайту и смонтирую на них ZFS.
  8. За первый месяц со всеми экспериментами заплатил за Backblaze B2 что-то около 4,58 евро.
  9. У Иммиха активное комьюнити пользователей и разработчиков, так что я успел позадавать глупые вопросы в Дискорде и пополучать на них ответы. За месяц Иммих добрался с версии 1.63.2 до версии 1.70 с маленькими фиксами и даже новыми фичами. Теперь можно, например, мержить лица, если распознавалка посчитала одного и того же человека двумя разными.

@Frey, а как в итоге лучше сделать с heic фаилами после этого скрипта? просто восстановить их обратно? или переименовать в mov?

  Развернуть 1 комментарий

@skywinder, никак :) Возможно в какой-то момент я попробую гугловский тейкаут прогнать через обновлённую тулзу и посмотрю, восстановились ли HEIC, но пока они просто были принесены в жертву, к сожалению

  Развернуть 1 комментарий

Надёжно? получилось что-то похожее из мема ниже :)

Через полгода красноглазые авторы очередной утилиты всё сломают и надо будет начинать по новой

  Развернуть 1 комментарий

@qU84M33oq3jJdKMc, все файлы складываются банально в ФС, так что надёжно

а вот всяческая метадата и МЛ прибамбасы - ну, если надо, то страдай

  Развернуть 1 комментарий

итак чтобы не платить 100 евро в год можно платить 11 евро в месяц (132 евро в год).
понял принял.
ловко вы перехитрили всех!

p.s. не ну я понимаю контроль надежность итд но надеюсь вы тоже понимаете иронию!

  Развернуть 1 комментарий
  Развернуть 1 комментарий

Не забываем настроить логгинг о факте успешного бекапа (например в newrelic) и оповещение если не было успешного бекапа в течении недели ;)

  Развернуть 1 комментарий

@arku31, да, этим планирую несколько позже тоже озаботиться :)

  Развернуть 1 комментарий

Отзыв на Immich. Нюансы, про которые не пишут в списке features.

Решил, наконец-то, сделать self-hosted хранилище фоток, сделать бэкапы с телефона, с флешек, с папок sdcard_backup_2019 и так далее.

Изучил альтернативы https://meichthys.github.io/foss_photo_libraries/. Выбирал между тремя, как мне показалось, наиболее продвинутыми вариантами:

  • Photoprism
  • Immich
  • Nextcloud Memories

Потыкал три демо, но остановился на Immich, потому что

  • у него (по данным сравнения) самые лучшие приложения, в частности, под iOS (влияет на wife approval factor)
  • фотки представлены в виде таймлайна, в отличие от Photoprism

Условия использования:

  • Установил на Raspberry Pi 4b с внешним USB диском в EXT4
  • Использовал через веб и приложение на Android
  • 5.5 тысяч фото с телефонов, 700 видео суммарным объемом 60 Гб

По прошествию нескольких дней могу сделать следующие выводы.

Мобильные приложения

  • Только у Immich хорошая поддержка и Android, и iOS приложений
    • У Photoprism нет приложений, только PWA. Для синхронизации предполагается использовать сторонние средства
  • Immich - это self-hosted замена Google Photo, поэтому приложение и веб максимально похожи на Google Photo внешне и функционально
  • Приложение умеет загружать файлы вручную, а также синхронизировать все файлы из указанной директории (или это альбом, хрен андроид разберешь). Нам, конечно же, нужны фото
  • По сравнению с Google Photo приложеие более медленное. Если отмотать фото куда-нибудь на старую дату, все превью размытые и требуется секунд 10 до полной подгрузки локальных (либо локальных + облачных) фото. При этом только облачные прогружаются быстрее

Синхронизация

  • На моем Realme синхронизация работает в фоновом режиме с закрытым приложением. Зависит от производителя, насколько сильно он накрутил всяких энергосберегающих режимов
  • Можно выставить задержку перед началом синхронизации до 10 минут
  • После добавления папки, в приложении показываются как локальные, так и облачные фотографии. У каждой фотографии есть иконка статуса хранения: только локально, только облако, и там, и там.
  • Есть три способа удалить: только с устройства, только из облака, полностью. Это хорошо.
  • В будущем планируется внедрение фичи "освободить устройство", аналогичной Google Photo. Но т.к. Immich на текущий момент условно нестабильный, этой фичи нет.
  • Косяк: После удаления некоторых фото через веб-морду, я ожидал, что удаленные фото останутся отображаться в приложении на телефоне со значком "только локально". Но нет, они не отображаются вовсе. Новые фотографии отображаются, старые, удаленные на сервере - нет. Это делает задачу освобождения памяти телефона, путем бэкапа на сервер и хранения на телефоне только маленького подмножества избранных фотографий нетривиальной. Удалять шлак удобнее через вебморду. Ну либо это задача - дичь, я пытаюсь пользоваться приложениям не так, и надо все забэкапить в immich и нахрен снести с телефона.

Распознавание и поиск

  • Находит лица
  • Можно задать имя
  • Иногда находит одного человека несколько раз, но есть функция объединения
  • Иногда находит мусор (лицо в отражении, случайного прохожего, манекен, рисунок), который можно скрыть
  • Меня с девушкой (большая часть лиц на фото) распознает хорошо. Иногда распознает лицо в сложных условиях (под углом, наклон), а иногда не распознает и в простом. Я не делал еще подсчёт статистики, но субъективно, подавляющее большинство фото (80%+) распознано правильно
  • Косяк: Но друзей (встречаются намного реже) распознает очень хреново, скорее никак. Не знаю, в чем причина, может, в маленькой выборке, может, не повезло и эти фото были кривые. Я считаю, что это весьма серьезная проблема, потому что мне не так интересно искать 100500 фото себя, как фото других людей (раз у меня на фото кто-то присутствуем, значит мы как-то совместно проводили время, а это интересно)
  • Распознанное лицо можно переназначить, но нельзя удалить
  • Косяк: Нельзя вручную добавить метку человека, если она не распозналась
  • Есть поиск текстом с помощью этих ваших нейронок + фильтрация по людям, датам, камерам, местам
  • Субъективно, поиск на английском работает хорошо. Нет, это прям клёво! Можно найти фотки котов, цветов, морей и так далее. Мне понравилось. Поиск на русском никакой. Статистику не считал

Карта

  • Есть карта с местами фото
  • Веб версия:
    • Если в одной точке одно фото, будет превью. Если в одной точке несколько фото, будет только количествов
    • Косяк При нажатии на кружочек открывается слайдшоу. Это фатально неудобно, если фото много. Лучше открывать список фото. Есть обсуждение на гитхабе
    • Это неудобно, у Photoprism и Nextcloud Memories лучше - кружочки с превьюшками, при нажатии на который открывается окошко со списком фото в этом месте
  • Android:
    • Heat map как в Google Photo. На карте heatmap, под картой таймлайн с фотками, места съемки которых сейчас на экране.
    • Не знаю, возможно, у Photoprism и Nextcloud Memories все равно лучше.

Работа с метаданными

  • Показывает очень мало метаданных: дату, название файла, на что снято + настройки, местоположение.
  • Отредактировать можно дату и место съемки
  • Редактор координат неудобный: открывается карта с мировым масштабом, давай, масштабируй ее до своего дома. Есть поиск по адресам, он не работает (по крайней мере, мои не знает). Хорошо, что можно выбрать несколько фото и назначить им координаты сразу.
  • Косяк: Изменение/добавление координат не записывается в EXIF файла! Изменения сохраняются в .xmp-файл рядом с файлом фото. На реддите написали, "we do not modify source files". Я сначала думал, что сохраняются во внутреннюю БД, но, оказалось, в файл. Я бы предпочёл, чтобы сохранялось в файл. Но так, наверное, пойдет. По крайней мере, в случае чего, эти данные не потеряются и можно как-то поскриптовать и починить.
  • В PhotoPrism отличный редактор метаданных

Редактирование

  • Его нет. Хотелось бы иметь возможность хотя бы повернуть фото. А лучше, еще кадрировать и повернуть в горизонт. Есть Pull Request, возможно, не один

Совместная работа

  • Поддержка многопользовательности
  • По-умолчанию, фотографии, загружаемые одним пользователем, не видны другим пользователям
  • Можно делать шареные альбомы. Фотографии из шареных альбомов не видны в таймлайне (на главной) у другого пользователя.
  • Есть Partner Sharing. В этом случае, все фотографии, добавленные одним пользователем будут доступны и видны на главной у партнера.
  • Косяк: Если Partner Sharding включен, не возможно иметь приватные от партнера фотографии. Даже если сделать не-общий альбом, он будет доступен обоим пользователям. При этмо каждый будет видеть в настройках, что он единственный пользователь и владелец альбома. WAT?! Этот косяк снижает у меня wife approval factor почти до нуля.
  • Косяк: Распознавание лиц у каждого пользователя независимо. Что с одной стороны логично, но для семейного архива неудобно.
    • Если со мной поделились альбомом, то на всех фото не будут отображаться распознанные лица (но будут отображаться у владельца)
    • Даже с включенным partner sharing лица на чужих фото не отображаются
    • У каждого пользователя свой набор лиц, даже если это один и тот же человек
    • Поиск доступен только по "своим" лицам
  • Косяк: Фильтрация по метаданным (места съемки, модели камеры) у каждого пользователя свои
    • С включенным partner sharing ты видишь общую базу фото, можешь искать по тексту, но не видишь "места" партнера и не можешь по ним искать
    • Аналогично, не видишь в списке фильтрации модели камер из фото другого пользователя
  • Косяк: Карта у каждого своя
    • Ты видишь геометку на фотографии другого пользователя, но не видишь его фотографии на карте

Хранение

  • Есть external library, когда он только индексирует, но не трогает.
  • Заявляют, что хранят оригиналы фото и не изменение фотографий - это их ключевая цель. Даже слишком, метадату можно было бы редактировать
  • Есть Storage Template, который позволяет разложить фотографии по папкам согласно шаблону, например, Year/Year-Month-Day/Filename.Extension. По-умолчанию, он выключен по соображениям надежности.
  • По-умолчанию, фотографии складываются по пути вида bcc7c7e8-901e-4d09-8ea6-f7ad8fef9c64/f8/f5/f8f5a7b3-9abf-498e-bce5-51bcdccf5fe8.jpg, в каждой директории одна фотография.
  • Я не знаю, как организовать хорошее бэкапирование данных в условиях такой структуры

Выводы
Рассмотрев все преимущества и недостатки, для себя я могу сделать следующие выводы:
Immich - один из самых навороченных софтов для селф-хоста фотографий. Он обладает самой лучшей мобильных приложений и удобной, но односторонней синхронизацией с мобильников. За исключением отсутствия редактора, он очень напоминает Google Photo, но сам Google Photo для меня не очень удобен. Самые большие недостатки - плохая работа распознавания лиц на редких лицах и хреновая работа с несколькими пользователями.

Лирическое отступление про софт и хранение
Вот, смотрите, очередная классная опенсурс штука. Селфхостинг! Ты же не доверяешь свои данные облакам от крупных компаний, ведь за них нужно платить, так еще и возможны утечки, на них будут обучать свои нейросетки, компания может закрыть продукт, ты можешь потерять доступ к учетной записи или компания решить, что по соображениям репутации лучше не работать с клиентами из твоей страны. А локальный жесткий диск и опен-сурс софт - это так надежно! Он никуда не исче...

Лол, нет.

Мы живём в век эфемерного софта. Который разрабатывают в парадигме Cascade of Attention-Deficit Teenagers. Писать очередной крутой проект - клёво, поддерживать зрелый легаси - нет. Лучше начать новый, лучше переписать всё снова по десятому разу. Разработка затихает, разработчики забивают, мейнтейнер устает тянуть лямку и спивается. Тысячи заброшенных open source проектов, которые никто не подобрал, не форкнул, которые просто умерли.

Мы живем в век эфемерного софта. В котором нужно бежать со всех ног, чтобы оставаться на месте. Софт без поддержки, лежащий в репозитории на гитхабе или в папочку "programs" на вашем диске протухает. Через несколько лет окажется, что его уже нельзя запустить, потому что не та версия ядра/libc/зависимостей/докера/whatever. И его уже нельзя пересобрать, потому что он не собирается новой версией GCC с новыми версиями libc. А если есть 3rd party библиотеки (а они есть), то они тоже уже несовместимы, а старые не собираются. В общем, попробуйте, это увлекательно. И это я говорю про сравнительно стабильный стек - Linux + GCC + C. Думаю, всякие TypeScript + Dart + Svetle + Kotlin + Swift (стек Immich) устаревает и протухает намного быстрее.

Где будет Immich (4 года), Photoprism (6 лет) через 5 лет? Через 10? А если мы говорим о lifetime-span хранении фотоархива, чтобы на старости лет посмотреть свои бухие студенческие фотки, то на таком периоде я не уверен ни в Google, ни даже в Linux, ext4 и прочем.

Какой можно сделать из этого нытья? Думаю, для хранения важных данных нужно выбирать такое средство хранение, которое не исчезнет само по себе (облака) и которое позволяет спокойно мигрировать в любое другое место. Да, локальные файлы уже легче скопировать. Но если они хранятся так же ущербно, как в immich, то это уже не так удобно. Да, скопировать фотки из сотен вложенных папок в одну может однострочник на баше. Но вся мета-информация о людях на фотографиях, об альбомах итп будет утеряна.

Вывод? Скорее всего, я буду тестировать дальше.

З.Ы. Есть режим external library, но не тестировал. Не знаю, можно ли подружить с аплоадом с телефона.

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...

@aemarkov, очень правильное замечание про не практичный дефолтный storage template, а это, блин, важно настроить именно в самом начале. Для себя выбрал из пресета {{y}}/{{y}}-{{MM}}-{{dd}}/{{filename}}, что практически совпадает с имеющейся базой фото.

Коммент про то, что они не изменяют файл, а метаинфу кладут рядом - я тоже думал об этом, и пришел к выводу, что это как раз более разумно в контексте бекапов (дедупликация), и того, что ничего не вечно под луной на горизонте N лет, (и конечно если не лазить в исходник, то это снижает вероятность его попортить).

Про бэкапы: использую Borg backup, очень классная штука, чем-то напоминающая git, стоит потратить некоторое время на чтение доков перед использованием.
Вот пример скрипта для бекапа по сети, лучше выполнять не в процессе обработки или залива фоток, чтобы не поломать консистентность:

#!/usr/bin/env bash
BACKUP_REPO="user@hostname:/data/backups/immich"
DTIME=$(date +"%Y%m%d-%H%M%S")
export BORG_RSH='ssh -oBatchMode=yes' # https://borgbackup.readthedocs.io/en/stable/usage/notes.html
export BORG_PASSPHRASE="your_securest_password_qwerty"

set -x -e
# setup and check hints:
#borg init --encryption=repokey $BACKUP_REPO
#time borg check $BACKUP_REPO
#borg info $BACKUP_REPO
#borg list $BACKUP_REPO

docker exec -t immich_postgres pg_dumpall --clean --if-exists --username=postgres > "/tmp/immich_db_$DTIME.sql" # специально без сжатия, т.к. это лучше работает для дедупликации

borg create --stats --progress $BACKUP_REPO::immich_$DTIME /data/immich/library /tmp/immich_db_$DTIME.sql /data/immich_ext_lib

Про external librariy: работает, 330 гигов подмонтированы снаружи в ro. В документации пишут, что после того, как Immich их просканил, не стоит их перемещать/менять/удалять на уровне самих файлов, это ок для меня.
Однако не очень понятно, что будет происходить, например в случае удаления (просто фоток или дубликатов) через сам Immich - видимо снесет только ссылки на них в БД, но тогда смысла подключать именно в ro чуть меньше. До этих экспериментов еще руки не дошли.

  Развернуть 1 комментарий

@aemarkov, а в Nextcloud memories, было ли что-то такое что тебя оттолкнуло?

  Развернуть 1 комментарий

А по деньгам получается даже проигрываете по сравнению с облаком, да?
Я когда-то баловался файлохранилищем дома. Тоже хотелось бекапа в облаке на случай ограбления/пожара.
В итоге, пошел по пути наименьшего сопротивления:

  • OneDrive на 1ТБ за 80 фунтов в год
  • На ноуте стоит клиент который хранит полную копию OneDrive (2-way sync)

Если OneDrive решит меня заблочить, то есть копия на ноуте. Если ноут навернется, то есть копия в облаке.

  Развернуть 1 комментарий

@aigoncharov, да, чисто финансово это менее выгодная история. Но пока мне интересно с этим возиться, а разница в стоимости не настолько велика, это не проблема :)

  Развернуть 1 комментарий
Никита Орлов Julia, Go and Python Developer 28 июня 2023

Будучи номадом в отсутствует возможность купить сервер и поставить его где-нибудь дома (потому что дома нет фюить ха).

Я уже описывал свой сетап вот тут, но с тех пор он претерпел изменения.

Сейчас сетап такой:

  • Выделенная тачка в Hetzner, с 2тб дискового пространства: там подняты Photoprism, Filerun и прочее для домашней лаборатории
  • Hetzner Storage Box -- CIFS/SMB/nameit шара, подмонтированная в сервер: основное место, где хранятся фотографии. Этот стораж обещает, что данные не потеряются от смерти одного диска на их сервере, но ничего больше. Поэтому в планах взять второй сторажбокс в другой локации как бекап
  • Apple Photos :)

Отказался от Backblaze потому что с какого-то момента заливка данных туда становится дорогой: чтобы загрузить файлы, которых в бакете нет, нужно сначала получить список этих самых файлов, что стоит денег :)

Флоу получился следующий: после очередной фотосессии фотографиям проставляется геотег, затем они заливаются на сервак. На серваке скрипт раз в час синхронизирует файлы до стораж бокса. Параллельно, пока файлики есть локально на компьютере происходит их отбор и минимальная обработка. Отобранные фотографии тоже выгружаются на сервер и заливаются в Apple Photos чтобы показывать друзьям на встречах)

По деньгам выходит 37 EUR сервер + 21 EUR/10TB Storage box в месяц. Номадство дело дорогое) Особенно больно видеть как каждая фотография в лушчем качестве с сжатым raw весит под 70МБ.

Сейчас активно смотрю на замены Photoprism, вдруг есть что-то более удобное.

  Развернуть 1 комментарий

@naorlov,

Сейчас активно смотрю на замены Photoprism, вдруг есть что-то более удобное.

Immich кажется одной из немногих альтерантив, думаю его попробовать

  Развернуть 1 комментарий

@naorlov, кстати, а Apple Photos ты бекапишь по крону через https://github.com/icloud-photos-downloader/icloud_photos_downloader ? или есть какие-то более изящные решения?

  Развернуть 1 комментарий

@skywinder, ровно это и использую. Более изящных решений не нашел:(

  Развернуть 1 комментарий

Когда читаю очередную статью на эту тему - всегда отмечаю что даже продвинутые айтишники забывают (или не знают?) о silent data corruption https://en.wikipedia.org/wiki/Data_corruption
Для себя эту проблему решил использованием SnapRaid https://www.snapraid.it/

  Развернуть 1 комментарий

@rudenko, поизучаю вопрос, спасибо

  Развернуть 1 комментарий
Ivan Vasilyev Senior Frontend Developer 28 июня 2023

Пришёл к тому же решению, но из-за объёмного бэклога "что я хочу сделать в свободное время" остановился на Synology. У них есть весь нужный софт – и серверное приложение и мобильные для синхронизации с телефонов.

Осталось сделать бэкап в облако.

Потихонечку докидываю туда другую функциональность. Например, управление умными девайсами через HomeAssistant.

  Развернуть 1 комментарий

Я пошёл ещё более колхозным путем. Оставил автозагрузку в Google photos, настроил синхронизацию папки с фотками с телефона на комп и на самосборный Nas через https://syncthing.net/

  Развернуть 1 комментарий

@TipTopych, я вот кстати тоже склоняюсь к этому варианту :)

  Развернуть 1 комментарий
Petr Korolev ETHusiast in open-source & privacy 27 февраля в 16:41

Ох, бро! Спасибо за пост. Я только что сам прошел на 90% тот же путь, что и ты, и подписываюсь под каждым твоим выбором. Если бы не было твоего поста, то постарался бы написать почти то же.

  1. Ансибл я еще никогда не настраивал — вот за это спасибо!

  2. Очень круто, ты мне сэкономил время с шаманством над JSON-файлами от Google — я уже хотел сам писать скрипт для их импорта!

  3. Стек у тебя топ (b2 + rclone + immich). А вот что хотел бы добавить в твой пост — так это restic! Он может делать инкрементальные бэкапы, имеет очень простой и удобный интерфейс и позволяет легко восстановить что угодно!

Вот так выглядят наиболее популярные фото-менеджеры.

походу Иммич рулит
походу Иммич рулит

  Развернуть 1 комментарий

@skywinder, спасибо, приятно :) Restic запишу, потрогаю его в свободное время.

Возможно, у тебя порядок действий другой, но я дальше озаботился вопросом доступа к фоткам извне, и если ты ещё его не решил, чекни мой пост об этом: https://frey.today/homelab-with-tailscale-docker-caddy-ssl-cloudflare/ :)

  Развернуть 1 комментарий

@Frey, о, да tailscale - топ! vpn из коробки. Я вот только единсенного что боюсь, что я буду где-то путешествовать. а там авторизация слетит - и все, к серверу не достучусь :)

  Развернуть 1 комментарий

@skywinder, а поясни поподробнее, что значит — слетит авторизация? Чтобы подключить железку к сети тейлскейла, нужно просто аутентифицироваться на ней выбранным способом, и всё, снова всё работает, может я чего-то упускаю?

  Развернуть 1 комментарий

@Frey, ну я пошел по простому пути и там выбрал авторизацию по гитхабу. но не уверен что она не слетит через какое-то время или когда мой сервер перезагрузится.

  Развернуть 1 комментарий

Год с Иммихом: всё работает.

Гугл Ван пока ещё оплачен, но весь прошедший год я юзал Immich как основное средство хранения и просмотра фоток, и как бы всё хорошо. Осталось перестать платить гугл облаку.

Из крутого: появилась функция обнаружения дублей фоток. У меня сейчас насчитывается 12к дублей в библиотеке, можно выпилить все разом, можно просматривать по одной. Удобно!

В общем, если вы всё хотели утащить свои фотки из облаков домой и ждали знака — это он :)

  Развернуть 1 комментарий

Мне понравилось такое решение https://photoview.github.io

  Развернуть 1 комментарий

@MZaa, выглядит интересно, но демка не открылась :\

  Развернуть 1 комментарий

@Frey, плохо что не открылась :(
скачай потести, тебе понравится

  Развернуть 1 комментарий

@MZaa, удивительно что есть мобильное приложение на айфон, но нет на андроид. Обычно наоборот, ведь на андроид можно apk выложить, а на айфоне обязательно платить за дев.аккаунт 🤔

На сайте не увидел инфы, умеет ли мобильное приложение в авто-аплоад фоток с телефона или оно умеет только показывать, что на сервере лежит сейчас и всё?

  Развернуть 1 комментарий

@MZaa, +1 к photoview. Юзаю его для просмотра фоток, syncthing для синхронизации (с телефона и других источников), pi4 + hdd для хранения, restic для бэкапов на s3

  Развернуть 1 комментарий

Залетел в клуб после твоего поста. По PhotoPrism сделаю небольшое уточнение, которое не очевидно при поверхностном изучении сайта. Помимо платных тарифов Essentials и Plus у них есть грейды повыше: Silver, Gold, Platinum. Эти грейды через определенное время дают lifetime доступ к лицензии Plus. Тот же Gold за 26 евро в месяц через год даст Lifetime Plus.

Конечно, не всем по душе будет и такое, но как опция по-моему вполне.

Мне PhotoPrism симпатичней по следующим причинам:

  • Он жрёт меньше Immich (для норм работы, включая AI примочки, достаточно тачки с 3 гигами RAM)
  • У него на мой взгляд куда более внятное будущее, учитывая модель монетизации.

Думаю позже напишу свой опыт.

  Развернуть 1 комментарий
Константин Кошелев Развиваю NFT продукт и сообщество в VK 27 июня 2023

А для гуманитариев есть альтернативы?

  Развернуть 1 комментарий

@Kosheleffff, боюсь, для гуманитариев лучшей альтернативой будет оставаться таки в облаках, это наиболее беспроблемный с точки зрения затрачиваемых усилий вариант (по крайней мере, мне так кажется)

  Развернуть 1 комментарий

@Kosheleffff, если хочется селфхостед и вы гуманитарий, я бы рекомендовал купить готовый NAS, например от Synology.

Disclaimer: я так не делал, потому что мне сам процесс возиться со всем этим в целом нравится, но если бы мне хотелось чтобы это было дома, но не хотелось возиться, купил бы Synology.

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...

@Kosheleffff, если захотите использовать rclone, то существует rclone browser - это gui для rclone. Поможет сделать команду для копирования, которую уже можно вставить в cron

  Развернуть 1 комментарий

@Kosheleffff, вот честно, я не гуманитарий ни разу, но после того как один раз прошел через все эти круги ада, только чтобы через месяц все поломалось, я решил для себя что Google Photos + BackBlaze для бэкапа это достаточно. Если меня заблокируют (крайне маловероятно) то есть копия, в остальном у меня будет время все переиграть.

Поддержка такого сервиса это ещё не full time job, но точно не set up and forget как хотелось бы.

  Развернуть 1 комментарий
Андрей Коваленко Инженер мониторинга 28 июня 2023

Тоже долго думал как это реализовать пару лет назад, но упор был не на фотки, а просто на файлы. Купил HP микросервер на 4 диска, поставил туда TrueNas, рядом поставил неттоп, там NextCloud в контейнере. На хранилке рейд, обе железки воткнуты в ИБП.
у NextCloud много фишечек, многопользовательность, можно документы локально совместно редактировать и всё такое.
В основном я туда автоматически гружу фотки с телефона вместо яндекс облака.
За место куда бекапить спасибо, цены хорошие.

  Развернуть 1 комментарий

@memost, а как у него с энергопотреблением?

  Развернуть 1 комментарий

О, а я недавно собрал самосборный NAS на оупен-сорсной версии synology.
Все работает быстро, интерфейс приятный, если приложения для андроид и айфона.
В локальной сети просмотр фото с NAS работает также быстро, как на самой машине.
Есть некоторые неудобства с расписанием включение-отключения, а так все прямо оооочень приятно.

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...

На практике оказалось, что Immich сам по себе позиционируется как бэкап-тулза, да ещё и в стадии активной разработки (разработчики просят не использовать софтину как единственное средство хранения фоток, но кто их слушает, верно?)

Всё верно, они ломают совместимость только в путь. Где-то полгода назад у меня начали отваливаться сервисы, полез смотреть - а там половину докер композа надо переписывать.

Но я действительно пользуюсь им в основном как бекапом, а не как замене гуглфото.

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...
Egor Tashchilin Мягкий директоро 30 июня 2023

А никто не придумал как бекапить айклауд нормально? То есть пусть фотки в айфоне фоткаются и синкаются в айклауд (косты ок 2тб), а вот бекап как. делать норм? Идеально с сайнолоджи.
Решение с покупкой мак мини и зеркалить туда всю библиотеку и уже папку синкать куда надо я знаю. Не хочется макмини покупать :(

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...

@pihta, У сайнолоджи апка для айфонов есть photos. Можно настроить синхронизацию фоток по подключению к домашней вафле.

  Развернуть 1 комментарий

https://meichthys.github.io/foss_photo_libraries/ сравнение selfhosted решений для хранения фоток в виде таблицы

  Развернуть 1 комментарий
Pavel Ko Помогаю извлекать пользу из данных 12 марта в 11:19

В теории вместо внешнего харда можно было бы заморочиться с настройкой RAID1 или RAID10.

Спасибо за статью. Только одно замечание - RAID не заменяет бэкапов ну никак, RAID нужен для обеспечения непрерывности доступа к инфе (ну и еще по мелочи).

  Развернуть 1 комментарий
Aleksandra Usacheva Ебанько Вастрик.Клуба 27 июня 2023

Как быть с надежностью дома? Скачок напряжения и F всей технике, грабеж?

  Развернуть 1 комментарий

@Roniakia, как раз на этот случай всё выгружается в Backblaze B2 :) А оттуда можно всё выкачать на новую железку и восстановить в прежнем виде

  Развернуть 1 комментарий

@Frey, а, пардон. Мне надо отдохнуть, уже не воспринимаю информацию нормально.

  Развернуть 1 комментарий

@Frey, неплохо!

  Развернуть 1 комментарий

@Frey, почему, кстати, B2, а не условный. Glacier?

  Развернуть 1 комментарий

@fCCbp7RUf09pxYkr, очень правильный вопрос, и ответ на него простой — я пока практически ничего не знаю о Glacier кроме концепции и того, что он вроде как сильно дешевле S3. Возможно в будущем в приливе энтузиазма изучу и этот вариант, но пока оставлю как сколхозил :) Плюс, я настроил бэкап на B2 два раза в сутки, не знаю, как у Glacier с такой частотой записи

  Развернуть 1 комментарий

@Frey, Знаю что синоложи прямо из коробки умеет в него, только токен подставь

  Развернуть 1 комментарий

@Frey, Glacier – это не отдельный от S3 сервис, а класс хранения в S3. Отличается более низкой ценой в ущерб скорости выдачи данных.
Вот, сделал примерный расчёт https://calculator.aws/#/estimate?id=2355c280a376befba2e20d2ad4a672ff028a54c3
Чисто хранение 300 гигов данных в самом "глубоком" архиве (время доставания до 2 суток) из расчёта среднего размера файла 10 МБ и запуления 1000 новых в месяц обойдётся меньше долора.

  Развернуть 1 комментарий

@Spaider, о, очень прикольно. А аплоад в любое время?

  Развернуть 1 комментарий

@Frey, Да, запись как запись 🙂

  Развернуть 1 комментарий

@Spaider, Было время, когда Glacier был опасен стоимостью вытаскивания данных из архива. Надеюсь AWS это поправил

  Развернуть 1 комментарий

@Tim, Вроде не так уж и дорого. Тут же случай, когда вытягивать понадобится только в случае, когда остальные бэкапы навернулись. При таком раскладе за восстановление любимы фотонек немножко долоров не жалко 🙂

  Развернуть 1 комментарий

@Spaider, я вот читал такие истории, нашёл сейчас навскидку:

https://www.reddit.com/r/DataHoarder/comments/iukepk/how_much_does_it_cost_to_get_data_out_of_aws/

  Развернуть 1 комментарий

@Spaider, я вот обновил твой рассчёт с учётом выкачивания тех же 300 гб в месяц:

https://calculator.aws/#/estimate?id=d84a54173e60de64532bd7e7d55e69a2555aa958

  Развернуть 1 комментарий

@Tim, так это 300 гигов вытягивать каждый месяц или как? Так-то если один раз вытянуть 300 гигов за 35$ звучить нормально.

  Развернуть 1 комментарий

@Spaider,
Я думаю ты прав, разово $35 за retrieval должно быть ок..

я вот не знаю, как оно будет работать с aws s3 sync надо ли будет вытаскивать данные в S3 standard чтобы синхронизировать и потом положить обратно в Glacier?

  Развернуть 1 комментарий

@Tim, Diff-ы замутить не получится. Но для фоток это и не надо, наверное. Автор не упоминал, что активно фотоньки редактирует. “Положил-и-забыл”.

You store data in Amazon Glacier as an archive. Each archive is assigned a unique archive ID that can later be used to retrieve the data. An archive can represent a single file or you may choose to combine several files to be uploaded as a single archive. You upload archives into vaults. Vaults are collections of archives that you use to organize your data.

  Развернуть 1 комментарий

@Spaider, упоминается sync, что есть дифф по (хотя бы) именам файлов, а то и размерам и датам изменения. Подразумевается(мною), что удалённые локально файлы будут удалены в облаке.

  Развернуть 1 комментарий

@Roniakia, скачок напряжения это легкорешаемая проблема, а вот потоп/пожар это риск который в голове у людей необоснованно занижен

  Развернуть 1 комментарий

@Roniakia, 3-2-1 бэкап, который все равно через облако

KEKW

  Развернуть 1 комментарий

@fCCbp7RUf09pxYkr, Никто не мешает шифровать файлы перед бэкапом

  Развернуть 1 комментарий
Mike Ivanov CTO; highload(golang); Robotics 28 июня 2023

Знакомая Вена на фотках

  Развернуть 1 комментарий

@mike-golden-head, И знакомые лица) Не ожидал здесь увидеть)

  Развернуть 1 комментарий

😱 Комментарий удален его автором...

  Развернуть 1 комментарий

@pvoDfARkt2Zfb5Wf, на сайте boxcryptor,'а просят расшифровать файлы, так как их Dropbox купил

  Развернуть 1 комментарий

шикарно, спасибо!

  Развернуть 1 комментарий

Комменты не читай - сразу пиши
Я тоже вот уже лет 8 присматриваюсь к мысли вытащить все с Гугла обратно, у меня там как раз "чистовой" архив по альбомам. Хорошая мотивация заняться и заодно поковыряться с софтом и железками.
Спасибо за пост, короче

  Развернуть 1 комментарий

У меня просто стоит старенький Synology (10+ лет), на котором стоит родной плагин для бекапа гугл-фоток.
По итогу:

  1. Продолжаю пользоваться гуглом как бекапы с телефона и как хранение альбомов после поездок, чтобы легко было делиться и искать. Храню пережатые джипеги, поэтому легко влажу в 100гб. Я понял с временем, что мне размер не важен)
  2. Само оттуда бекапится на Синолоджи
  3. Раз в полгода-год, ручками, что не ушло в облако и оседало на компе + все что уходило в облако, бекаплю на карманный ssd.
  Развернуть 1 комментарий
Kosta Korenkov на вольных хлебах 5 июля 2023

Спасибо за статью. Рассматривал Фотопризм+B2 для своего сетапа, но после этой статьи попробую Имич :).

Подлинкую полезное. Табличка сравнения софта для организации фоток: https://github.com/meichthys/foss_photo_libraries

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...

Че-то не очень понял в чем проблема просто купить NAS с несколькими дисками и складывать на него фотки? А диски сделать RAID-массивом, чтобы если одни сломался, то остальные остались на месте.

  Развернуть 1 комментарий

@kkomissarov, Правило 3 2 1 не выполняется

  Развернуть 1 комментарий

@kkomissarov, да нет никакой проблемы :) Пилишь как нравится и кайфуешь, я запилил как мне зашло. Помним только, что рейд != бэкап, а то может печально выйти

  Развернуть 1 комментарий

Тоже сделал аналогично.
Из нюансов:

  • использую OneDrive - выходит не сильно дорого за 6Тб (по Тб на человека в семье, два аккаунта специально под бэкап фоток завёл. Возможно нужно будет потом переехать куда-то ещё)
  • фотки с фотика кладу на HDD, а оттуда rclone их переносит в OneDrive. На телефоне стоит OneDrive который складывает фотки в себя, а rclone переносит их на HDD. Таким образом путь "миграции" файлов для фоток с фотика и телефона разный, но результат один - фотки и на HDD и в облаке.

Из глобальных вопросов, на которые у меня нет ответов, - как делать бэкапы и что есть мастер-система. То есть если я удалю фотку с фотика на HDD то rclone должен её удалить в облаке? А что делать если вдруг СЛУЧАЙНО удалятся фотки на HDD и rclone удалит их в облаке?

  Развернуть 1 комментарий

@artgaponenko, ответ на первый вопрос зависит от того, как ты аплоадишь фотки через rclone. Если через rclone copy, то загруженные фотки в облаке не зависят от того, удалил ты их уже локально или нет. Если через rclone synс, то rclone сверяет локальную структуру файлов с удалённой и устраняет расхождения: дозагружает новые локальные файлы в облако и удаляет из облака те файлы, что ты удалил локально. Нюанс в том, что достаточно один раз неосторожно использовать rclone sync, чтобы получить потенциально нежелательное состояние файлов в облаке.

Я использую rclone sync по дефолту, потому что хочу, чтобы у меня было всё одинаково и локально и удалённо, например, поэтому второй вариант меня не беспокоит. Чтобы они удалились случайно, а потом это состояние засинкалось в облако, это надо постараться :)

  Развернуть 1 комментарий

@Frey, чем copy от sync отличается я понимаю. Вопрос в том что использовать и как) Я тоже остановился на sync с мысль что при удалении OneDrive ещё какое-то время можно восстановить файлы

  Развернуть 1 комментарий

Но как вариант рассматриваю ещё делать copy автоматически ежедневно, а sync руками по случаю

  Развернуть 1 комментарий

Вариант для тех, у кого основным местом хранения всегда был iCloud, но хочется иметь какой-то запасной локальный бэкап.
Покупаем HDD док и пару HDD. Через disck utility делаем софтверный raid. Через второй аккант на маке настраиваем локальное хранение фото в photos, а папку размещаем на внешнем hdd. Раз в n-времени включаю док и мак автоматом актуализирует локальную библиотеку.

  Развернуть 1 комментарий
Dmitrii Medvedev Test Automation Engineer 27 июня 2023

Со старыми фотками из облаков более-менее понятно, а как процессятся новые?

  Развернуть 1 комментарий

@deim, для новых есть мобильная аппка под обе платформы, которая работает по принципу Google Photos: умеет выгружать наружу, а когда всё выгружено, можно удалить фотки с телефона и по необходимости тянуть их с сервера

  Развернуть 1 комментарий

А вот непонятно, как происходит импорт из Google Photo, руками скачаные архивы takeout или как то ещё?

  Развернуть 1 комментарий

@Tim, да, это я не упомянул. Верно, через Takeout запрашиваешь экспорт, через некоторое время на почту падает письмо со ссылками на скачивание архивов с фотками. В архивах же лежат и метаданные от фоток в джейсонах

  Развернуть 1 комментарий

😱 Комментарий удален его автором...

  Развернуть 1 комментарий

Очень актуально, сам занимаюсь ровно тем же, выбором между пачкой свободных альтернатив гугл-фото, а тут этот пост.

Как понимаю, щупался только photoprism и immich?

  Развернуть 1 комментарий

@nett00n, Да, дальше Immich смотреть уже не захотелось :) Да и некуда особо, гуглинг без непосредственного опыта использования выдал ещё несколько не очень популярных решений без большой пользовательской базы и/или в заброшенном виде, туда даже лезть не хочется

  Развернуть 1 комментарий

@nett00n, https://github.com/photoview/photoview вот еще неплохое

  Развернуть 1 комментарий

@devpalm, насколько понял, это только гуй. Аплоад там предполагается кем-то кроме, например owncloud. Его тоже себе добавил в выборку

  Развернуть 1 комментарий

@nett00n, вот нашёл большое сравнение:
https://github.com/meichthys/foss_photo_libraries

  Развернуть 1 комментарий

@sergstepanenko, я бы добавил еще один параметр: extensibility (плагины). Все не проверял, пользовался только Piwigo, где плагинов много, и разных :)

  Развернуть 1 комментарий

а кто как тегирует фотки? что бы вот найти фотку машины которую ты снимал на зеркалку.

  Развернуть 1 комментарий

@MZaa, Самый удобный (ручной) таггинг я видел в Piwigo + плагины(tag groups, colored tags, add tags mass)

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...
Petr Korolev ETHusiast in open-source & privacy 27 февраля в 17:12

когда я экспортирую из Google, там еще проблема, что он в экспортном архиве дает кучу дубликатов — на каждый созданный альбом — отдельную копию. Ты с этим что-то делал и сортировал? Или просто удалял эти дубли?

И как раз еще то, чем я хочу разобраться — какую систему для удаления дубликатов использовать. Те что на слуху: fdupes, rdfind, или dupeGuru. Но пока еще не пробовал их использовать. Интересно, если уже есть какой-то опыт с этим.

  Развернуть 1 комментарий

@skywinder, к сожалению, выпиливал руками. Однако, есть cli-тулза immich-go от комьюнити, которая предлагается как альтернатива родной cli-утилите, и она как раз вроде как умеет работать с дублями. Но я просто чистил руками время от времени

  Развернуть 1 комментарий

@Frey, кстати, смотрю PR - походу пофиксили проблему с битыми файилами: https://github.com/garzj/google-photos-migrate/issues/25

хотя там тоже ссылкаются на immich-go cli. :)

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб