一个简单的自托管图片库HomeGallery
什么是 HomeGallery ?
HomeGallery
是一个自托管的开源Web
图片库,用于浏览个人照片和视频,其中包括标记、对移动端友好和AI
驱动的图像和面部发现功能。
HomeGallery
的独特功能是自动 相似图像/反向图像搜索功能 和 无数据库架构 (所有搜索和过滤都在客户端浏览器上快速完成)。这会带来快速响应的用户体验,无需任何手动步骤即可导航和探索档案。
官方提供了演示网站:https://demo.home-gallery.org/
命令行安装
采用 docker-compose
安装方式,将下面的内容保存为 docker-compose.yml
文件
这是在官方的
docker-compose.yml
基础上修改的,老苏保留了修改痕迹,方便你知道改了哪些内容;
version: "3.9"services:api:# custom build via#build: packages/api-serverimage: xemle/home-gallery-api-servercontainer_name: home-gallery-apienvironment:# TensorflowJS backends# - cpu: slowest and best support# - wasm: good perfromance for arm64 and amd64 platforms# - node: best performance on amd64 platform#- BACKEND=cpu- BACKEND=wasm#- BACKEND=nodegallery:# custom build via#build: .image: xemle/home-gallerycontainer_name: home-gallery-serverenvironment:- GALLERY_API_SERVER=http://api:3000#- GALLERY_API_SERVER_CONCURRENT=1 # On low powered devices#- GALLERY_API_SERVER_TIMEOUT=60 # On low powered devices- GALLERY_OPEN_BROWSER=falsevolumes:- ./data:/data# Mount your media directories below /data- /volume2/docker/photoprism/photos:/data/Picturesports:- "3045:3000"user: "${CURRENT_USER}"entrypoint: [ 'node', '/app/gallery.js' ]command: [ 'run', 'server' ]
几个主要变量的说明:
BACKEND
:这个是配置TensorflowJS
的环境变量,分为:cpu
:这个速度最慢,但是兼容性应该是最好的;wasm
:这个在arm64
和amd64
平台的都具有良好的性能;node
:这个在amd64
平台上的能获得最佳性能;
所以,其实按老苏的机器,应该是选node
的。
GALLERY_API_SERVER
:指API
服务器的地址,这里用的是相对地址,所以你可以不用管;GALLERY_API_SERVER_CONCURRENT
:设置并发数,这个在低功耗的机器上才需要打开,比如树莓派;GALLERY_API_SERVER_TIMEOUT
:设置超时,也是低功耗设备才需要设置;/data
卷:用于存放SQLite
、缩略图和设置等;/data/Picture
卷:用于放照片和视频文件,可以指向一个已经存在的图库,也可以是新建的。老苏指向了之前PhotoPrism
的照片库,省得占用空间一个简单的自托管图片库HomeGallery相关推荐
- 一个简单的Apriltag,数字,动物水果分类器
简 介: 对于全国大学生智能车竞赛竞赛室内视觉AI组用于识别Apriltag,数字,动物以及水果任务,本文提出了基于图片像素的HSV空间的统计值,建立了一个简单的大类分类器.利用这个分类器可以非常精确 ...
- 实例学习SSIS(一)--制作一个简单的ETL包
http://www.cnblogs.com/tenghoo/archive/2009/10/archive/2009/10/archive/2009/10/16/ssis_lookup.html 导 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十)——一步一步教你如何撸Dapr之绑定...
如果说Actor是dapr有状态服务的内部体现的话,那绑定应该是dapr对serverless这部分的体现了.我们可以通过绑定极大的扩展应用的能力,甚至未来会成为serverless的基础.最开始接触 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(五)——一步一步教你如何撸Dapr之状态管理...
状态管理和上一章的订阅发布都算是Dapr相较于其他服务网格框架来讲提供的比较特异性的内容,今天我们来讲讲状态管理. 目录: 一.通过Dapr实现一个简单的基于.net的微服务电商系统 二.通过Dapr ...
- html控制图的宽,用JointJS做一个简单的功能控制图
继上一篇介绍了GoJS之后,继续研究JS的绘图工具,毕竟GoJS有些小贵.这次选择了JointJS,完全开源,它还有一个商业版本叫Raddit,功能更强大.不过就我的需求场景,开源的Joint就足够了 ...
- Vulkan是什么?和我一起完成一个简单的Vulkan应用程序
在本章,你将学到: Vulkan以及它背后的基本原理: 如何创建一个最简单的Vulkan应用程序: 在本书其余部分将使用到的术语和概念. 本章将介绍并解释Vulkan是什么.我们会介绍API背后的基本 ...
- 实现一个简单的压测工具
公司开发了一些服务器程序:上生产前需要进行压力测试,测试点包括:并发数.响应时间.吞吐量等指标.领导说,能不能仿照LoadRunner实现一个简单的压测工具(并发数在10000以上,结果指标以曲线图的 ...
- Ubuntu 18.04 安装 nginx 并搭建一个简单的网站
目录 一.安装 nginx 二.设置 nginx 服务器模块 三.总结 四.参考资料 尽你所学(采用 html.或 CSS.或 Javascript 等)完成一个静态网页,比如制作一个简单的个人介绍网 ...
- Web3Auth 筹集了 1300 万美元的 A 轮融资,通过简单的非托管身份验证基础设施推动 Web3 应用程序和钱包采用...
我们很高兴地宣布,我们已经筹集了 1300 万美元,由 Sequoia Capital India.Union Square Ventures.Multicoin 和其他公司牵头,通过简单.安全和非托 ...
最新文章
- 解决Pycharm中SystemError报错
- 利用OpenCV读取和写入视频
- forfiles命令批量删除N天前文件
- 薄壁轴承摩擦力矩_机器人四点接触薄壁轴承详细介绍
- ubuntu更新python的指令_ubuntu下python模块的库更新(转载)
- unity消息队列判断字符串相等有错误_Python3十大经典错误及解决办法
- mysql慢查询日志轮转_MySQL slow log相关参数解释
- 使用 WinSCP 连接到 VCSA 6.5 失败并显示以下错误:收到的 SFTP 数据包过大
- c++ opencv mat_OpenCV计算机视觉-Core组件(一)
- getTickCount-opencv中计时与帧率计算的函数
- 信息收集--空间搜索引擎/网盘
- Linux运维——高级指令
- BugKu ——WP(MISC[二])
- 使用YYLabel匹配连接
- .snk文件用什么程序可以打开
- 今日头条校招2017.7.21编程3,PM、idea、程序员
- Python开发案例:制作二维码
- List、Map、Set集合的特点及常用方法
- 李宏毅2022机器学习HW5解析
- Python3 (基础练习) 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
热门文章
- solidity:4.函数可见性与修饰符
- 王者战力查询改名工具箱小程序源码-带流量主激励广告
- PRIN:Pointwise Rotation-Invariant Network with Adaptive Sampling and 3D Spherical Voxel Convolution
- 415错误的一种解决方法
- spring security——Spring Social简介(五)
- 解读Bytom丨比原链BTM,连接两个世界的无限可能
- 华清远见-重庆中心-JAVA面向对象阶段技术总结:
- 计算机编程cc语言,想学编程没有电脑?手机也能编程 !
- 能上网但找不到网络里的计算机,网络中找不到共享电脑怎么办解决方法
- (脑肿瘤分割笔记:十四)用于脑肿瘤分割的优化U-Net
- 一个简单的Apriltag,数字,动物水果分类器