当前位置: 首页 > news >正文

Immich自托管服务的本地化部署与随时随地安全便捷在线访问数据

文章目录

    • 前言
    • 1.关于Immich
    • 2.安装Docker
    • 3.本地部署Immich
    • 4.Immich体验
    • 5.安装cpolar内网穿透
    • 6.创建远程链接公网地址
    • 7.使用固定公网地址远程访问

前言

小伙伴们,你们好呀!今天要给大家揭秘一个超炫的技能——如何把自家电脑变成私人云相册,并且借助 Cpolar 实现随时随地访问。是不是听起来就很有科技感呢?想象一下,无论你身处地球哪个角落,只要手机、平板或电脑连上网,就能随时上传和查看你的专属相册!这不仅让生活变得更加便利,还能让你的珍贵回忆得到最安全的保护。

Immich 是一款超酷的照片和视频管理神器,它让你可以像在自家后院一样,在自己的服务器上存放、管理和分享各种媒体文件。这款软件的设计灵感来源于 Google Photos 和 iCloud,但最大的亮点在于——你才是真正的主人!这意味着你可以随心所欲地处理自己的照片和视频,再也不用担心被别人窥探啦。

那么问题来了:为什么一定要自己托管呢?首先当然是为了保护隐私嘛!在这个信息泄露频发的时代,自托管能够确保你的私人资料不会落入他人之手。其次,拥有数据的完全控制权也是个大大的优势——你可以随时备份、迁移文件,再也不用担心被第三方服务‘卡脖子’了。

接下来,就让我们一步步教你如何轻松搭建 Immich,并通过 Cpolar 实现公网远程访问吧!无论你是新手小白还是技术老司机,这篇教程都能让你快速上手。废话不多说,咱们开始吧~

在这里插入图片描述

【视频教程】

轻松搭建个人云相册,告别存储焦虑!

1.关于Immich

Immich的主要特点包括:

自托管:所有数据都存储在用户自己的服务器上。
照片和视频备份:提供自动的媒体文件备份功能。
易于访问:通过Web界面和移动应用,用户可以轻松访问、管理和分享他们的媒体库。
数据控制:用户完全拥有和控制自己的数据,而不是存储在第三方的云服务中。
隐私保护:由于是自托管解决方案,用户的照片和视频不会被未经授权的第三方访问。
Immich通常通过Docker容器化部署,使得安装和维护变得简单。项目在GitHub上开源,社区驱动,不断更新和改进。

Github官方地址:GitHub - immich-app/immich: High performance self-hosted photo and video management solution.

使用Immich,用户需要具备一定的技术背景,特别是关于如何部署和维护自托管服务的知识。但对于希望提高个人数据隐私和安全性的用户来说,Immich提供了一个很好的解决方案。

2.安装Docker

本教程操作环境为Linux Ubuntu系统,在开始之前,我们需要先安装Docker

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

最后我们在docker容器中运行下 hello world 看一下是否安装成功

sudo docker container run hello-world

可以看到出现了hello world,也就是说明我们已经安装docker成功,那么接下来就可以直接拉取Answer镜像了。

image-20240910145208138

3.本地部署Immich

打开一个新的终端,输入下方命令安装脚本

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

该脚本将执行以下操作:

①.从存储库的main分支下载docker-compose.yml和.env文件。

②.启动容器。

image-20240920153208643

运行完命令后,打开一个浏览器输入localhost:2283或者直接复制红框里面的链接,就可以进入到Immich首页了。下面的api结尾的链接是可以复制到手机或者平板上打开浏览器访问。

image-20240920153250645

4.Immich体验

现在我们就成功在Ubuntu系统本地搭建了Immich,点击中间的Getting Started登录或注册自己的账号,就可以拥有属于自己的相册啦~

image-20240920154528454

进入到相册,整个界面非常简洁,功能简单明了,也都比较实用。

总体分为7大功能:图片、探索、地图、分享、收藏、相册、归档和回收站。

小结

Immich 安装相对简单,体验下来,简单易用,能满足基本的需求,尤其是照片归类功能比较实用,将所有人物识别到统一相册内,也方便查找,一个简洁云盘非常香!但如果想实现不在同一个局域网下,也能随时随地上传或查看自己储存在本地的图片,就需要借助cpolar内网穿透工具来实现公网访问了~下面我将介绍一下如何安装cpolar内网穿透,并实现无公网IP访问本地Immich!

5.安装cpolar内网穿透

下面是安装cpolar步骤:

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

使用一键脚本安装命令

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

img

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

sudo systemctl status cpolar

image-20240924094847716

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

image-20240801133735424

6.创建远程链接公网地址

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

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

image-20240924095148740

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了两个公网地址(可在高级设置中配置只生成http或https一条公网地址):

image-20240924095335565

然后就可以在其他电脑或手机平板(异地)上,使用上边任选其一的公网地址在浏览器中访问即可。

image-20240924095459152

可以看到成功实现使用公网地址异地远程本地部署的Immich照片管理器!重新登录自己的账号就可以玩转Immich啦~

小结

为了方便演示,我们在上边的操作过程中使用了cpolar生成的公网地址隧道,其公网地址是随机生成的。

这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址是随机生成,这个地址在24小时内会发生随机变化,更适合于临时远程测试时使用。

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

7.使用固定公网地址远程访问

登录cpolar官网,点击左侧的预留,选择保留二级子域名,地区选择China VIP,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称,这里我填写的是Immich,大家也可以自定义喜欢的名称。

image-20240924100206237

保留成功后复制保留成功的二级子域名的名称:Immich,返回登录Cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道Immich,点击右侧的编辑:

image-20240924100320518

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

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

点击更新(注意,点击一次更新即可,不需要重复提交)

image-20240924100401904

更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址名称也变成了固定的二级子域名名称的域名:

image-20240924100517791

接着使用这个固定公网地址在浏览器访问,可以看到访问成功啦~这样即使不在同一个局域网下也可以随时随地用这个网址来远程访问本地部署的Immich来管理照片了!

image-20240924100653083

今天的分享是不是让你觉得既简单又有趣呢?在这个数据安全越来越受到重视的时代,自托管不仅是一种技术选择,更是一种超酷的生活态度!希望这篇教程能帮助你更好地管理和保护自己的珍贵回忆。从此以后,无论走到哪里,你的私人相册都像贴身小秘书一样随时待命,是不是感觉特别有安全感呀~ 赶快动手试试吧,让 Immich 成为你的专属照片管理神器,享受科技带来的便利和安心吧!

相关文章:

Immich自托管服务的本地化部署与随时随地安全便捷在线访问数据

文章目录 前言1.关于Immich2.安装Docker3.本地部署Immich4.Immich体验5.安装cpolar内网穿透6.创建远程链接公网地址7.使用固定公网地址远程访问 前言 小伙伴们,你们好呀!今天要给大家揭秘一个超炫的技能——如何把自家电脑变成私人云相册,并…...

基于SpringBoot的在线付费问答系统设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...

【Linux】信号处理以及补充知识

目录 一、信号被处理的时机: 1、理解: 2、内核态与用户态: 1、概念: 2、重谈地址空间: 3、处理时机: 补充知识: 1、sigaction: 2、函数重入: 3、volatile&…...

pandas——to_datatime用法

Pandas中pd.to_datetime的用法及示例 pd.to_datetime 是 Pandas 库中用于将字符串、整数或列表转换为日期时间(datetime)对象的核心函数。它在处理时间序列数据时至关重要,能够灵活解析多种日期格式并统一为标准时间类型。以下是其核心用法及…...

《DataWorks 深度洞察:量子机器学习重塑深度学习架构,决胜复杂数据战场》

在数字化浪潮汹涌澎湃的当下,大数据已然成为推动各行业发展的核心动力。身处这一时代洪流,企业对数据的处理与分析能力,直接关乎其竞争力的高低。阿里巴巴的DataWorks作为大数据领域的扛鼎之作,凭借强大的数据处理与分析能力&…...

Java 大视界 -- 基于 Java 的大数据实时数据处理框架性能评测与选型建议(121)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...

多线程-JUC

简介 juc,java.util.concurrent包的简称,java1.5时引入。juc中提供了一系列的工具,可以更好地支持高并发任务 juc中提供的工具 可重入锁 ReentrantLock 可重入锁:ReentrantLock,可重入是指当一个线程获取到锁之后&…...

DeepSeek:中国AGI先锋,用技术重塑通用人工智能的未来

在ChatGPT掀起全球大模型热潮的背景下,中国AI领域涌现出一批极具创新力的技术公司,深度求索(DeepSeek)​便是其中的典型代表。这家以“探索未知、拓展智能边界”为使命的AI企业,凭借长文本理解、逻辑推理与多模态技术的…...

Vue 框架深度解析:源码分析与实现原理详解

文章目录 一、Vue 核心架构设计1.1 整体架构流程图1.2 模块职责划分 二、响应式系统源码解析2.1 核心类关系图2.2 核心源码分析2.2.1 数据劫持实现2.2.2 依赖收集过程 三、虚拟DOM与Diff算法实现3.1 Diff算法流程图3.2 核心Diff源码 四、模板编译全流程剖析4.1 编译流程图4.2 编…...

Python爬虫获取淘宝快递费接口的详细指南

在电商运营中,快递费用的透明化和精准计算对于提升用户体验、优化物流成本以及增强市场竞争力至关重要。淘宝提供的 item_fee 接口能够帮助开发者快速获取商品的快递费用信息。本文将详细介绍如何使用 Python 爬虫技术结合 item_fee 接口,实现高效的数据…...

基于BMO磁性细菌优化的WSN网络最优节点部署算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 无线传感器网络(Wireless Sensor Network, WSN)由大量分布式传感器节点组成,用于监测物理或环境状况。节点部署是 WSN 的关键问…...

Android Activity的启动器ActivityStarter入口

Activity启动器入口 Android的Activity的启动入口是在ActivityStarter类的execute(),在该方法里面继续调用executeRequest(Request request) ,相应的参数都设置在方法参数request中。代码挺长,分段现在看下它的实现,分段一&#x…...

Python深度学习算法介绍

一、引言 深度学习是机器学习的一个重要分支,它通过构建多层神经网络结构,自动从数据中学习特征表示,从而实现对复杂模式的识别和预测。Python作为一门强大的编程语言,凭借其简洁易读的语法和丰富的库支持,成为深度学…...

关于sqlalchemy的使用

关于sqlalchemy的使用 说明一、sqlachemy总体使用思路二、安装与创建库、连结库三、创建表、增加数据四、查询记录五、更新或删除六、关联表定义七、一对多关联查询八、映射类定义与添加记录 说明 本教程所需软件及库python3.10、sqlalchemy安装与创建库、连结库创建表、增加数…...

利用LLMs准确预测旋转机械(如轴承)的剩余使用寿命(RUL)

研究背景 研究问题:如何准确预测旋转机械(如轴承)的剩余使用寿命(RUL),这对于设备可靠性和减少工业系统中的意外故障至关重要。研究难点:该问题的研究难点包括:训练和测试阶段数据分布不一致、长期RUL预测的泛化能力有限。相关工作:现有工作主要包括基于模型的方法、数…...

深度学习 PyTorch 中 18 种数据增强策略与实现

深度学习pytorch之简单方法自定义9类卷积即插即用 数据增强通过对训练数据进行多种变换,增加数据的多样性,它帮助我们提高模型的鲁棒性,并减少过拟合的风险。PyTorch 提供torchvision.transforms 模块丰富的数据增强操作,我们可以…...

视觉图像处理

在MATLAB中进行视觉图像处理仿真通常涉及图像增强、滤波、分割、特征提取等操作。以下是一个分步指南和示例代码,帮助您快速入门: 1. MATLAB图像处理基础步骤 1.1 读取和显示图像 % 读取图像(替换为实际文件路径) img = imread(lena.jpg); % 显示原图 figure; subplot(2…...

深度学习与普通神经网络有何区别?

深度学习与普通神经网络的主要区别体现在以下几个方面: 一、结构复杂度 普通神经网络:通常指浅层结构,层数较少,一般为2-3层,包括输入层、一个或多个隐藏层、输出层。深度学习:强调通过5层以上的深度架构…...

Vue3、vue学习笔记

<!-- Vue3 --> 1、Vue项目搭建 npm init vuelatest cd 文件目录 npm i npm run dev // npm run _ 这个在package.json中查看scripts /* vue_study\.vscode可删 // vue_study\src\components也可删除(基本语法&#xff0c;不使用组件) */ // vue_study\.vscode\lau…...

python中C#类库调用+调试方法~~~

因为开发需要&#xff0c;我们经常会用C#来写一些库供python调用&#xff0c;但是在使用过程中难免会碰到一些问题&#xff0c;需要我们抽丝剥茧来解决~~~ 首先&#xff0c;我们在python中要想调用C#(基于.net)的dll&#xff0c;需要安装一个库&#xff0c;它就是 pythonnet …...

L33.【LeetCode笔记】循环队列(数组解法)

目录 1.题目 2.分析 方法1:链表 尝试使用单向循环链表模拟 插入节点 解决方法1:开辟(k1)个节点 解决方法2:使用变量size记录队列元素个数 获取队尾元素 其他函数的实现说明 方法2:数组 重要点:指针越界的解决方法 方法1:单独判断 方法2:取模 3.数组代码的逐步实现…...

css实现元素垂直居中显示的7种方式

文章目录 * [【一】知道居中元素的宽高](https://blog.csdn.net/weixin_41305441/article/details/89886846#_1) [absolute 负margin](https://blog.csdn.net/weixin_41305441/article/details/89886846#absolute__margin_2) [absolute margin auto](https://blog.csdn.net…...

【Python】Django 中的算法应用与实现

Django 中的算法应用与实现 在 Django 开发中&#xff0c;算法的应用可以极大地扩展 Web 应用的功能和性能。从简单的数据处理到复杂的机器学习模型&#xff0c;Django 都可以作为一个强大的后端框架来支持这些算法的实现。本文将介绍几种常见的算法及其在 Django 中的使用方法…...

Docker 运行 GPUStack 的详细教程

GPUStack GPUStack 是一个用于运行 AI 模型的开源 GPU 集群管理器。它具有广泛的硬件兼容性&#xff0c;支持多种品牌的 GPU&#xff0c;并能在 Apple MacBook、Windows PC 和 Linux 服务器上运行。GPUStack 支持各种 AI 模型&#xff0c;包括大型语言模型&#xff08;LLMs&am…...

Kubernetes中的 iptables 规则介绍

#作者&#xff1a;邓伟 文章目录 一、Kubernetes 网络模型概述二、iptables 基础知识三、Kubernetes 中的 iptables 应用四、查看和调试 iptables 规则五、总结 在 Kubernetes 集群中&#xff0c;iptables 是一个核心组件&#xff0c; 用于实现服务发现和网络策略。iptables 通…...

解决VScode 连接不上问题

问题 &#xff1a;VScode 连接不上 解决方案&#xff1a; 1、手动杀死VS Code服务器进程&#xff0c;然后重新尝试登录 打开xshell &#xff0c;远程连接服务器 &#xff0c;查看vscode的进程 &#xff0c;然后全部杀掉 [cxqiZwz9fjj2ssnshikw14avaZ ~]$ ps ajx | grep vsc…...

AI 驱动的软件测试革命:从自动化到智能化的进阶之路

&#x1f680;引言&#xff1a;软件测试的智能化转型浪潮 在数字化转型加速的今天&#xff0c;软件产品的迭代速度与复杂度呈指数级增长。传统软件测试依赖人工编写用例、执行测试的模式&#xff0c;已难以应对快速交付与高质量要求的双重挑战。人工智能技术的突破为测试领域注…...

【Java代码审计 | 第六篇】XSS防范

文章目录 XSS防范使用HTML转义使用Content Security Policy (CSP)输入验证使用安全的库和框架避免直接使用用户输入构建JavaScript代码 XSS防范 使用HTML转义 在输出用户输入时&#xff0c;对特殊字符进行转义&#xff0c;防止它们被解释为HTML或JavaScript代码。 例如&…...

Android WebSocket工具类:重连、心跳、消息队列一站式解决方案

依赖库 使用 OkHttp 的WebSocket支持。 在 build.gradle 中添加依赖&#xff1a; implementation com.squareup.okhttp3:okhttp:4.9.3WebSocket工具类实现 import okhttp3.*; import android.os.Handler; import android.os.Looper; import android.util.Log;import java.ut…...

认识vue2脚手架

1.认识脚手架结构 使用VSCode将vue项目打开&#xff1a; package.json&#xff1a;包的说明书&#xff08;包的名字&#xff0c;包的版本&#xff0c;依赖哪些库&#xff09;。该文件里有webpack的短命令&#xff1a; serve&#xff08;启动内置服务器&#xff09; build命令…...