Docker快速部署高效照片管理系统LibrePhotos搭建私有云相册

文章目录

    • 前言
    • 1.关于LibrePhotos
    • 2.本地部署LibrePhotos
    • 3.LibrePhotos简单使用
    • 4. 安装内网穿透
    • 5.配置LibrePhotos公网地址
    • 6. 配置固定公网地址

前言

想象一下这样的场景:你有一大堆珍贵的回忆照片,但又不想使用各种网盘来管理。怎么办?别担心!我们有解决方案——LibrePhotos。这是一个完全自托管、开源的照片管理和共享平台,功能强大不输Google Photos,最重要的是它能够保护你的隐私,并且让你拥有数据的绝对控制权。

你可能会问:“那如果我没有公网IP或者域名呢?”没问题!这里就要介绍另一个神器——cpolar内网穿透工具。通过这个小工具,你可以轻松实现内外网络互通,无论你在世界的哪个角落都能随时查看和管理照片库。

接下来的内容将带你一步步了解如何在本地Linux系统上部署LibrePhotos,并结合cpolar完成整个过程。如果你对数据隐私有较高的要求,又想拥有一个高效、便捷的照片管理系统,那么这篇文章绝对值得你花时间读一读!

img

1.关于LibrePhotos

LibrePhotos是一个自托管的开源照片管理与共享平台,其功能媲美Google Photos,但更加注重用户的隐私保护,并赋予用户对自己数据的完全控制权。

更多功能特点如下:

  • 开放自由: LibrePhotos基于开源模式,提供免费服务。这意味着您可以根据自身需求灵活调整和优化软件。
  • 自主部署: 用户可以选择在自己的服务器上安装LibrePhotos,确保了照片和视频的安全存储,杜绝隐私泄露的可能性。
  • 强大功能: 通过集成多种先进技术工具(如ImageMagick、FFmpeg、ExifTool等),LibrePhotos不仅支持高质量的照片与视频处理,还具备高效的数据解析能力。此外,平台提供便捷的上传方式、智能整理分类以及直观友好的操作界面,极大提升了用户体验。
  • 智能化管理: 利用face_recognition库进行精准的人脸识别,并结合scikit-learn和hdbscan算法实现照片自动归类;借助im2txt和places365技术对图像内容及拍摄地点进行智能分析,优化搜索功能。
  • 安全可靠: 实现了数据的本地化存储,防止敏感信息外泄。同时,平台配备了严格的安全措施,包括但不限于强大的用户认证机制,确保只有合法用户才能访问相应的资源库。
  • 灵活共享: 用户可以轻松地与家人、朋友或团队成员分享自己的照片集,并可自定义不同的访问权限设置,满足多样化的需求。

适用人群

  • 个人爱好者: 对于那些珍视隐私且希望自行管理数字资产的个体而言,LibrePhotos无疑是一个完美的解决方案。
  • 家庭用户: 家庭成员可以通过共同维护一个照片库来记录并分享生活中的美好瞬间。
  • 专业团队: 摄影师、设计师及小型企业等专业人士或组织亦能利用此平台高效管理和展示其作品集。

2.本地部署LibrePhotos

本例使用Docker进行部署,如果没有安装Docker,可以查看这篇教程进行安装:《Docker安装教程——Linux、Windows、MacOS》

首先下载部署文件

git clone https://github.com/LibrePhotos/librephotos-docker.git

image-20241202145456097

进入到此文件内

cd librephotos-docker
cp librephotos.env .env

image-20241202145528020

修改配置文件

nano .env

image-20241202145549479

修改里面的配置,如果没有需要自行添加该行配置

timeZone=Asia/Shanghai // 时区,需要自行添加该行配置!
userName=chen // 管理员用户名
userPass=chen // 管理员密码
adminEmail=chenyuge1130@sina.com // 管理员邮箱
shhhhKey=123456 // 随机密钥
httpPort=3000 // 暴露的服务端口
dbName=librephotos // 数据库名
dbUser=docker // 数据库用户
dbPass=123456 // 数据库用户密码
gunniWorkers=4 // 工人数量,每个工人预计消耗800MB RAM
HEAVYWEIGHT_PROCESS=4 // 多线程扫描,每个工人预计消耗800MB RAM

61bcf312931b75af5d8831b69365143

按ctrl+x保存退出后输入以下命令运行容器

sudo docker compose -f docker-compose.yml up -d

image-20241202152002003

服务启动后,在浏览器中访问localhost:3000即可。

image-20241202154632797

3.LibrePhotos简单使用

登录之后点击Data路径即可

image-20241202175229063

右上角点击第三个可以修改头像名字

image-20241202175336028

可以选择语言

image-20241202175400471

点击管理面板选择允许上传

image-20241202175445350

我们就可以上传照片了

image-20241202175545675

4. 安装内网穿透

不过我们目前只能在本地局域网内使用手机电脑等设备访问刚刚使用docker部署的使用LibrePhotos。假设你是一名摄影师,经常需要在外拍摄。你希望有一个安全、可靠的地方来存储和管理自己的照片,并且能够随时随地访问这些照片进行编辑或分享。使用LibrePhotos + Cpolar的组合可以完美解决这个问题,安装一个cpolar内网穿透工具就能轻松实现远程访问内网主机中部署的服务了,接下来介绍一下如何安装cpolar内网穿透。

下面是安装cpolar步骤:

Cpolar官网地址: https://www.cpolar.com

使用一键脚本安装命令

sudo curl https://get.cpolar.sh | sh

img

安装完成后,执行下方命令查看cpolar服务状态:(如图所示running即为正常启动)

sudo systemctl status cpolar

img

Cpolar安装和成功启动服务后,在浏览器上输入ubuntu主机IP加9200端口即:【http://localhost:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

image-20240801133735424

5.配置LibrePhotos公网地址

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,本例使用了: LibrePhotos 注意不要与已有的隧道名称重复
  • 协议:http
  • 本地地址:3000
  • 域名类型:随机域名
  • 地区:选择China Top

image-20241203113437295

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了两个公网地址,接下来就可以在其他电脑(异地)上,使用任意一个地址在浏览器中访问即可。

image-20241203113542118

如下图所示,成功实现使用公网地址异地远程访问本地部署的LibrePhotos。

image-20241203114701527

使用账号登录即可正常使用了:

image-20241203114743976

小结

为了方便演示,我们在上边的操作过程中使用cpolar生成的HTTP公网地址隧道,其公网地址是随机生成的。这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址是随机生成,这个地址在24小时内会发生随机变化,更适合于临时使用。

如果有长期使用LibrePhotos远程使用照片管理器,或者异地访问与使用其他本地部署的服务的需求,但又不想每天重新配置公网地址,还想让公网地址好看又好记并体验更多功能与更快的带宽,那我推荐大家选择使用固定的二级子域名方式来配置公网地址。

6. 配置固定公网地址

由于以上使用cpolar所创建的隧道使用的是随机公网地址,24小时内会随机变化,不利于长期远程访问。因此我们可以为其配置二级子域名,该地址为固定地址,不会随机变化。

点击左侧的预留,选择保留二级子域名,地区选择China TOP,然后设置一个二级子域名名称,填写备注信息,点击保留。

image-20241203115420298

保留成功后复制保留的二级子域名地址:LibrePhotos

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道LibrePhotos,点击右侧的编辑

image-20241203115505430

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名
  • 地区: China TOP

点击更新

image-20241203115532463

现在一个永久不会变化的网址就设置好了。

image-20241203115629065

我们复制下来打开浏览器粘贴,现在我们使用固定的公网地址访问LibrePhotos可以看到访问成功。image-20241203115728741

可以看到登录后正常访问。

image-20241203115839828

通过今天的分享,相信你也已经掌握了如何利用Docker和cpolar在本地Linux系统上部署LibrePhotos的方法了。这样一来,不仅能够保护你的照片数据隐私,还能随时随地进行管理与共享。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/68895.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java计算机毕业设计】基于Springboot的物业信息管理系统【源代码+数据库+LW文档+开题报告+答辩稿+部署教程+代码讲解】

源代码数据库LW文档(1万字以上)开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统:Window操作系统 2、开发工具:IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

深入解析Python机器学习库Scikit-Learn的应用实例

深入解析Python机器学习库Scikit-Learn的应用实例 随着人工智能和数据科学领域的迅速发展,机器学习成为了当下最炙手可热的技术之一。而在机器学习领域,Python作为一种功能强大且易于上手的编程语言,拥有庞大的生态系统和丰富的机器学习库。其…

高斯光束介绍及光斑处理

常规激光器的光斑为高斯光斑,即中心能量集中,边缘能量较低。一般定义光强的处为高斯光束的半径。高斯光斑的传输由光斑半径、远场发散角、波长等决定。 其中为位置z处的光斑半径,w(z), k2pi/λ为波矢,λ为光波长,R为高…

C++哈希(链地址法)(二)详解

文章目录 1.开放地址法1.1key不能取模的问题1.1.1将字符串转为整型1.1.2将日期类转为整型 2.哈希函数2.1乘法散列法(了解)2.2全域散列法(了解) 3.处理哈希冲突3.1线性探测(挨着找)3.2二次探测(跳…

【Redis】List 类型的介绍和常用命令

1. 介绍 Redis 中的 list 相当于顺序表,并且内部更接近于“双端队列”,所以也支持头插和尾插的操作,可以当做队列或者栈来使用,同时也存在下标的概念,不过和 Java 中的下标不同,Redis 支持负数下标&#x…

携程Java开发面试题及参考答案 (200道-上)

说说四层模型、七层模型。 七层模型(OSI 参考模型) 七层模型,即 OSI(Open System Interconnection)参考模型,是一种概念模型,用于描述网络通信的架构。它将计算机网络从下到上分为七层,各层的功能和作用如下: 物理层:物理层是计算机网络的最底层,主要负责传输比特流…

IM 即时通讯系统-51-MPush开源实时消息推送系统

IM 开源系列 IM 即时通讯系统-41-开源 野火IM 专注于即时通讯实时音视频技术,提供优质可控的IMRTC能力 IM 即时通讯系统-42-基于netty实现的IM服务端,提供客户端jar包,可集成自己的登录系统 IM 即时通讯系统-43-简单的仿QQ聊天安卓APP IM 即时通讯系统-44-仿QQ即…

AlexNet论文代码阅读

论文标题: ImageNet Classification with Deep Convolutional Neural Networks 论文链接: https://volctracer.com/w/BX18q92F 代码链接: https://github.com/dansuh17/alexnet-pytorch 内容概述 训练了一个大型的深度卷积神经网络&#xf…

扩散模型(三)

相关阅读: 扩散模型(一) 扩散模型(二) Latent Variable Space 潜在扩散模型(LDM;龙巴赫、布拉特曼等人,2022 年)在潜在空间而非像素空间中运行扩散过程,这…

git基础使用--4---git分支和使用

文章目录 git基础使用--4---git分支和使用1. 按顺序看2. 什么是分支3. 分支的基本操作4. 分支的基本操作4.1 查看分支4.2 创建分支4.3 切换分支4.4 合并冲突 git基础使用–4—git分支和使用 1. 按顺序看 -git基础使用–1–版本控制的基本概念 -git基础使用–2–gti的基本概念…

8.攻防世界Web_php_wrong_nginx_config

进入题目页面如下 尝试弱口令密码登录 一直显示网站建设中,尝试无果,查看源码也没有什么特别漏洞存在 用Kali中的dirsearch扫描根目录试试 命令: dirsearch -u http://61.147.171.105:53736/ -e* 登录文件便是刚才登录的界面打开robots.txt…

【漫话机器学习系列】076.合页损失函数(Hinge Loss)

Hinge Loss损失函数 Hinge Loss(合页损失),也叫做合页损失函数,广泛用于支持向量机(SVM)等分类模型的训练过程中。它主要用于二分类问题,尤其是支持向量机中的优化目标函数。 定义与公式 对于…

python算法和数据结构刷题[5]:动态规划

动态规划(Dynamic Programming, DP)是一种算法思想,用于解决具有最优子结构的问题。它通过将大问题分解为小问题,并找到这些小问题的最优解,从而得到整个问题的最优解。动态规划与分治法相似,但区别在于动态…

本地Deepseek添加个人知识库(Page Assist/AnythingLLM)

本地Deepseek两种方法建立知识库 前言 (及个人测试结论)法一、在Page Assist建立知识库step1 下载nomic-embed-textstep2 加载进Page Assiststep3 添加知识step4 对话框添加知识库 法二、在AnythingLLM建立知识库准备工作1.下载nomic-embed-text2.下载An…

记8(高级API实现手写数字识别

目录 1、Keras:2、Sequential模型:2.1、建立Sequential模型:modeltf.keras.Sequential()2.2、添加层:model.add(tf.keras.layers.层)2.3、查看摘要:model.summary()2.4、配置训练方法:model.compile(loss,o…

grpc 和 http 的区别---二进制vsJSON编码

gRPC 和 HTTP 是两种广泛使用的通信协议,各自适用于不同的场景。以下是它们的详细对比与优势分析: 一、核心特性对比 特性gRPCHTTP协议基础基于 HTTP/2基于 HTTP/1.1 或 HTTP/2数据格式默认使用 Protobuf(二进制)通常使用 JSON/…

文字投影效果

大家好,我是喝西瓜汁的兔叽,今天给大家分享一个常见的文字投影效果。 效果展示 我们来实现一个这样的文字效果。 思路分析 这样的效果如何实现的呢? 实际上是两组相同的文字,叠合在一块,只不过对应的css不同罢了。 首先&…

图像处理之图像灰度化

目录 1 图像灰度化简介 2 图像灰度化处理方法 2.1 均值灰度化 2.2 经典灰度化 2.3 Photoshop灰度化 2.4 C语言代码实现 3 演示Demo 3.1 开发环境 3.2 功能介绍 3.3 下载地址 参考 1 图像灰度化简介 对于24位的RGB图像而言,每个像素用3字节表示&#xff0…

【课题推荐】基于t分布的非高斯滤波框架在水下自主导航中的应用研究

水下自主导航系统在海洋探测、环境监测及水下作业等领域具有广泛的应用。然而,复杂的水下环境常常导致传感器输出出现野值噪声,这些噪声会严重影响导航信息融合算法的精度,甚至导致系统发散。传统的卡尔曼滤波算法基于高斯噪声假设&#xff0…

知识库管理系统为企业赋能与数字化转型的关键解决方案分析

内容概要 在当今快速发展的商业环境中,知识库管理系统成为企业进行数字化转型的重要支撑工具。这类系统不仅可以帮助企业高效整合和管理其知识资产,还能提升信息共享与沟通的效率。通过科学的知识管理策略,企业可以在动态市场中实现精益管理…