Contents

家庭照片存储

问题

作为一个曾经热爱摄影的人,我至今仍然保留了各种旅行和街拍的素材。关于如何保存这些珍贵的照片,需要一些讲究。我将它们存放在Synology的NAS上已经超过十年,采用直接热备份的方式,这让我无需担心硬盘损坏。此外,我每年还会进行一次冷备份,以确保数据的长期安全性。

尽管我已经积累了超过2万张照片,总计约200多G的数据量,但要实现流畅的浏览体验却并不容易。我曾尝试使用Synology的photo应用,但其速度缓慢、界面不美观,因此很早就放弃。Plex虽然提供了另一种选择,但它也不够流畅,偶尔还会出现访问问题。

方案

近期,我开始使用Immich,它虽然在照片管理中并不支持文件结构,但可以通过建立相册的方法解决。 Immich是我目前使用过的最优秀的。

/immich.webp

安装注意

  1. 首先安装好Immich,一般基于Dock,我采用直接安装https://github.com/nsg/immich-distribution.git
  2. 链接好外部库到NAS,我把NAS的照片目录就加载到这里
1
2
3
4
5
6
7
# Note: Read access only to avoid risky deletion
# For Plex
[//192.168.0.20/Media](notion://192.168.0.20/Media) /mitangds/media cifs uid=0,credentials=/root/.credential,iocharset=utf8,vers=3.0,noperm 0
[//192.168.0.20/x.Media](notion://192.168.0.20/x.Media) /mitangds/x.media cifs uid=0,credentials=/root/.credential,iocharset=utf8,vers=3.0,noperm 0
# For Immich
[//192.168.0.20/Moments](notion://192.168.0.20/Moments) /var/snap/immich-distribution/common/moments cifs uid=0,credentials=/root/.credential,iocharset=utf8,vers=3.0,noperm 0
[//192.168.0.20/Playground/Upload](notion://192.168.0.20/Playground/Upload) /var/snap/immich-distribution/common/upload/library cifs uid=0,credentials=/root/.credential,iocharset=utf8,vers=3.0,noperm 0
  1. 按照想要的目录结构建立相册。使用https://github.com/Salvoxia/immich-folder-album-creator工具
    1. 这个工具能够自动通过目录结构建立相册,而且能把目录下的照片都放入相册,同时若是目录内容更新,也能更新相册。

      1
      2
      
      #这个工具的使用方法,里面需要你自己的APIkey。
      python3 /home/jacob/ima/immich_auto_album.py "/var/snap/immich-distribution/common/moments/My Works" <http://192.168.0.26:3001/api> umpBWgoqmLr86J2JuKlPp0AMGbmIhe8UDAX03wZvNvY
      

使用注意

  • 每晚自动扫描:系统会定期检查所有文件的修改日期,一旦有新增或修改,将更新相关的数据库和照片缩略图。
  • 不使用自带的上传功能,功能是给普通用户屏蔽文件存储。但是对大量照片的NAS用户,有一个稳定的文件结构,不依赖其他软件会更容易维护。
  • 外部设备(NAS)尽量设置为只读模式供Immich访问,以防止误操作。
  • 缩略图的建立需要一定时间和空间。我花了18个小时,生成了近10GB的缩略图空间。
    • 所有改动仅在外部设备上进行,后可以执行扫描,然后执行“Remove offlines”来清理。

    • 如果有一些脏数据是因为Immich还在开发改进。immich_remove_offline_files 这个可以用来清除。

      1
      2
      3
      4
      5
      
      #clean the offline files/folders
      python3 /home/jacob/ima/immich_remove_offline_files.py --admin_apikey "umpBWgoqmLr86J2JuKlPp0AMGbmIhe8UDAX03wZvNvY" --user_apikey "umpBWgoqmLr86J2JuKlPp0AMGbmIhe8UDAX03wZvNvY" --immichaddress "[<http://192.168.0.26:3001>](<http://192.168.0.26:3001/>)"
      
      # remove untracked files
      #rm -f $(<untracked.txt)
      
  • 需要打开远程访问的话,Immich建议你用reverse proxy,我用了Synology的内置Nginx,方便配置还能使用早已安装的证书:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    #Install
    brew install certbot
    
    #Create first certification
    sudo certbot certonly --manual
    
    #Renew every 3 months
    certbot renew
    
    #sudo cp -R /etc/letsencrypt/archive/* .
    
  • 默认启动解码器,会先把视频做成小且各平台兼容的格式,这个功能需用了我40G的空间,不需要远程访问可以略过。
  • 建议启用AI智能识别人脸和地址信息功能,以便更轻松地进行检索和管理。
  • 因为数据识别都是本地运行,耗时但是没有隐私泄露风险。