首页 > 其他分享 >36.6K star!Immich - 一款开源高性能的自托管照片和视频备份方案

36.6K star!Immich - 一款开源高性能的自托管照片和视频备份方案

时间:2024-06-18 17:57:05浏览次数:13  
标签:immich star app 应用程序 Immich https 36.6 备份

大家好,今天给大家分享的是一个高性能的自托管照片和视频备份方案。

Immich 是一个图片管理和分享平台,它允许用户高效地组织、存储和访问他们的照片和视频集合。这个项目特别设计来优化个人和家庭的多媒体内容管理体验,提供了诸如自动备份、智能分类、高级搜索和安全分享等功能。

项目介绍

面向个人用户、摄影爱好者以及需要有效管理大量媒体文件的家庭,Immich 提供了一个集中的平台,使得珍贵的记忆得以妥善保存和欣赏。

功能特性

功能特性 移动端 网页端
上传并查看照片和视频
软件运行时自动备份 N/A
忽略重复的项目
选择需要备份的相册 N/A
下载照片和视频到本地
多用户支持
相册与共享相册
可拖动的快速滚动条
支持RAW格式
元数据视图(EXIF、地图)
通过元数据、对象、人脸和标签进行搜索
管理功能(用户管理)
后台备份 N/A
虚拟滚动
OAuth 支持
API Keys N/A
实况照片备份和查看
支持360度全景图显示
用户自定义存储结构
公共分享
归档与收藏功能
足迹地图
好友分享
人脸识别与分组
回忆(那年今日)
离线支持
只读相册
照片堆叠

Star增长曲线

技术架构

Immich 采用传统的客户端-服务器设计,使用专用数据库来保存数据。前端客户端使用 REST API 通过 HTTP 与后端服务进行通信。下面是该项目架构图。

Immich 有三个主要客户端:

  • 移动应用程序——Android、iOS:采用Flutter编写,它使用Isar Database作为本地数据库,并使用Riverpod进行状态管理。
  • Web 应用程序 - 响应式网站:使用SvelteKit和Tailwindcss的TypeScript项目。
  • CLI - 用于批量上传的命令行实用程序:是一个npm包,可让用户通过命令行控制其 Immich 实例。它使用 API 执行各种任务,尤其是上传资源。

Immich 后端分为几个服务,作为单独的 docker 容器运行。

  • immich-server- 处理并响应 REST API 请求
  • immich-microservices- 执行后台作业(缩略图生成、元数据提取、转码等)
  • immich-machine-learning- 执行机器学习模型
  • postgres- 持久数据存储
  • redis- 队列管理immich-microservices

详细介绍,请查看官方介绍文档[1]。

安装使用

服务部署

Docker Compose 是运行 Immich 的推荐方法。以下是使用 Docker Compose 部署 Immich 的步骤。Immich 需要 Docker Compose 版本 2.x。

从您选择的项目目录中,通过shell执行以下命令:

curl -o- https://raw.githubusercontent.com/immich-app/immich/main/install.sh | bash

该脚本将执行以下操作:

1.从Github的主分支下载docker-compose.yml和.env文件。2.启动容器。

Web应用程序访问地址http://<machine-ip-address>:2283,移动应用程序的服务器 URL 地址http://<machine-ip-address>:2283/api

安装后续步骤,请参阅安装后步骤[2]

移动应用

您可从以下地点下载移动应用程序:

  • Google Play 商店[3]
  • 苹果应用商店[4]
  • F-Droid[5]
  • GitHub 发布 (apk)[6]

使用服务器端点 URL 登录移动应用程序http://<machine-ip-address>:2283/api

单击屏幕右上角的云图标导航到备份屏幕。

您可以从备份屏幕选择要备份到 Immich 服务器的相册。

向下滚动到底部并按“开始备份”以开始备份过程。

项目地址

https://github.com/immich-app/immich

References

[1] 官方介绍文档: https://immich.app/docs/developer/architecture
[2] 安装后步骤: https://immich.app/docs/install/post-install
[3] Google Play 商店: https://play.google.com/store/apps/details?id=app.alextran.immich
[4] 苹果应用商店: https://apps.apple.com/us/app/immich/id1613945652
[5] F-Droid: https://f-droid.org/packages/app.alextran.immich
[6] GitHub 发布 (apk): https://github.com/immich-app/immich/releases

标签:immich,star,app,应用程序,Immich,https,36.6,备份
From: https://www.cnblogs.com/yunmoom/p/18252193

相关文章

  • 3k star 项目 learning-cmake 点评
    3kstar项目learning-cmake点评Author:ChrisZZTime:2024.06.17目录3kstar项目learning-cmake点评概要hello-worldhello-world-clearhello-world-libcurlhello-moduleconfig-filehunter-simpleboost总结概要这次我们分析github上搜索cmake排名第三的项目https:/......
  • 12k star 项目 cmake-examples 阅读和点评
    12kstar项目cmake-examples阅读和点评Author:ChrisZZTime:2024.06.17目录12kstar项目cmake-examples阅读和点评项目概要01-basicA-hello-cmakeB-hello-headersC-static-libraryD-shared-libraryE-installingF-build-typeG-compile-flagsH-third-party-libraryI-compi......
  • 字符串— padStart() 和 padEnd()
    在今天的教程中,我们将一起来学习新的字符串,padStart()和padEnd(),它可以帮助我们实现用另一个字符串填充一个字符串,直到结果字符串达到给定的长度。下面,我们就开始今天的内容吧。String.prototype.padStart()padStart()方法从字符串的开头用另一个字符串填充一个字符串到一定......
  • 字符串— trim()、trimStart() 和 trimEnd()
    在今天的教程中,我们将一起来学习JavaScript字符串trim()、trimStart()和trimEnd()。01、trim()学习如何使用JavaScript trim()方法从字符串的两端删除空格字符。JavaScripttrim()方法介绍String.prototype.trim()返回一个从字符串开头和结尾去除空白字符的新字符串:......
  • ScriptManager.RegisterStartupScript方法/在局部刷新的部分不能实现response.write的
    原文链接:https://blog.csdn.net/harbour_bin/article/details/10963555问题:在局部刷新的部分不能实现response.write的功能?解决方法:如果页面中不用Ajax,cs中运行某段js代码方式可以是:Page.ClientScript.RegisterStartupScript(Page.GetType(),"","<script>window.open('defaul......
  • 如何完美解决 IDE升级后启动报错 Internal error. Please refer to https://jb.gg/ide
    如何完美解决IDE升级后启动报错Internalerror.Pleaserefertohttps://jb.gg/ide/critical-startup-errors博主猫头虎的技术世界......
  • 18.9k star!一个高性能的嵌入式分析型数据库,主要用于数据分析和数据处理任务。
    大家好,今天给大家分享的是一个开源的面向列的关系数据库管理系统(RDBMS)。DuckDB是一个嵌入式的分析型数据库,它提供了高性能的数据分析和数据处理能力。DuckDB的设计目标是为数据科学家、分析师和数据工程师提供一个快速、灵活且易于使用的数据分析工具。它支持SQL查询语言,并提......
  • [1007] Getting Started with PDF Extract API (Python)
    ref:GettingStartedwithPDFExtractAPI(Python)Inthiscase,IplantousethemethodofcompressingPDFtoshrinkthesizeofsomePDFfiles.ButthismethodfromtheAdobeAcrobatAPIdoesn'tworkverywellcomparedthetoolwithintheAdobe......
  • netcore HTTP Error 500.30 - ASP.NET Core app failed to start
    netcoreHTTPError500.30-ASP.NETCoreappfailedtostart 错误解释:HTTPError500.30表示在尝试启动ASP.NETCore应用程序时发生了错误。这通常是因为应用程序无法找到或无法正确加载.NETCore运行时或应用程序的相关依赖项。解决方法:确认.NETCore运行时已安装:检查......
  • star 最多的 Go 语言本地化库|GitHub 2.8K
    ......