828华为云征文|华为云Flexus云服务器X实例部署immich相片管理系统
828华为云征文|华为云Flexus云服务器X实例部署immich相片管理系统
- 前言
- 一、Flexus云服务器X实例介绍
- 1.1 Flexus云服务器X实例简介
- 1.2 Flexus云服务器X实例特点
- 1.3 Flexus云服务器X实例使用场景
- 二、immich介绍
- 2.1 immich简介
- 2.2 immich注意事项
- 2.3 主要特点
- 2.4 使用场景
- 三、本次实践介绍
- 3.1 本次实践简介
- 3.2 本次环境规划
- 四、购买华为云Flexus云服务器X实例
- 4.1 登录华为云
- 4.2 进入Flexus云服务器X实例购买页面
- 4.3 购买Flexus云服务器X实例配置
- 4.4 使用Xshell远程连接
- 五、检查Docker环境
- 5.1 检查操作系统版本
- 5.2 检查内核版本
- 5.3 检查Docker版本
- 5.5 检查Docker compose版本
- 六、部署immich应用
- 6.1 拉取immich镜像
- 6.2 创建部署目录
- 6.3 编辑docker-compose.yaml文件
- 6.4 编辑.env文件
- 6.5 创建immich容器
- 6.6 检查immich容器状态
- 七、访问前准备工作
- 7.1 关闭selinux和防火墙
- 7.2 Flexus云服务器X实例安全组配置
- 八、访问immich服务
- 8.1 访问immich初始页
- 8.2 注册账号
- 8.3 登录immich
- 九、immich的基本使用
- 9.1 上传图片
- 9.2 新建相册
- 9.3 查看统计数据
- 十、使用体验与总结
前言
在数字化时代,个人和企业对于数据隐私和安全的需求日益增长,Immich 作为一个开源的、自托管的照片和视频备份解决方案,为用户提供了一个私密且可控的媒体文件存储选项。
华为云Flexus云服务器X实例
凭借其卓越的柔性算力和专为中小企业及开发者设计的特性,成为部署此类应用的理想选择。通过结合Immich的强大功能与华为云的高性能基础设施,用户不仅能够享受到高效的数据管理和访问体验,还能确保数据的安全性和隐私性。本文将详细介绍如何在华为云Flexus云服务器X实例上部署Immich相片管理系统,展示华为云在提供可靠、灵活云计算服务方面的卓越表现。
一、Flexus云服务器X实例介绍
1.1 Flexus云服务器X实例简介
- 官网地址: 华为云Flexus云服务器X实例
华为云
Flexus云服务器X实例
是新一代面向中小企业和开发者的柔性算力云服务器。它能够智能感知业务负载的变化,自动调整资源配置。这款服务器特别适用于中低负载的应用场景,例如电商直播、企业网站建设、开发测试环境、游戏服务器以及音视频服务等。X实例的设计理念旨在为用户提供更加灵活和高效的计算资源管理方式。通过智能调整,它可以更好地满足不同业务的需求,提高资源利用率。
1.2 Flexus云服务器X实例特点
-
提供丰富的公共镜像:Flexus云服务器X实例提供多种公共镜像供用户选择,方便快速部署各种应用和服务。
-
可灵活自定义vCPU内存配比:用户可以根据自己的需要灵活调整虚拟CPU和内存的配比,以满足不同场景的需求。
-
智能感知业务动态升降配:Flexus云服务器X实例能够智能感知业务的负载情况,并根据需要自动升降配,以满足业务的需求,提高系统的稳定性和性能。
-
负载范围更高:相对于Flexus应用服务器L实例,Flexus云服务器X实例能够处理更高的负载,适用于更复杂和繁忙的场景。
1.3 Flexus云服务器X实例使用场景
Flexus云服务器X实例针对不同的使用场景展现出其独特的优势:
-
电商直播:利用X实例搭建电商交易平台,可以有效应对电商市场的瞬息万变,从容处理业务压力波动,确保交易过程顺畅无阻。
-
企业建站:面向博客、论坛和企业门户等应用场景,X实例帮助企业高效传播价值信息,促进信息共享与交流,支持构建多功能传播和交互平台。
-
个人开发测试:开发者在开发和测试过程中所需的环境资源可以通过X实例便捷获取,不仅提高了搭建效率,而且降低了成本。
-
游戏服务器:适用于搭建游戏后台服务器,强大的计算能力可以轻松应对大量玩家同时在线的情况,同时支持平滑扩容,快速应对玩家数量增长的需求,以及提供出色的网络加速能力以提升用户体验。
二、immich介绍
2.1 immich简介
Immich
是一个开源的、自托管的照片和视频备份解决方案,它允许用户在自己的服务器上存储和管理媒体文件。Immich 旨在为用户提供一种私密且可控的方式来保存个人照片和视频,避免了将数据上传到第三方云服务可能带来的隐私问题。
2.2 immich注意事项
该项目正在非常积极的开发中。
- ⚠️预计会出现错误和重大更改。
- ⚠️ 请勿将该应用程序用作存储照片和视频的唯一方式。
- ⚠️始终遵循 3-2-1 备份计划,为您珍贵的照片和视频!
2.3 主要特点
-
开源与自托管:Immich 是完全开源的,这意味着任何人都可以查看其代码,并根据需要进行修改或扩展。通过自托管的方式,用户可以在自己控制的服务器上部署Immich,确保了数据的安全性和隐私性。
-
跨平台兼容:Immich 提供了适用于iOS、Android以及Web端的应用程序,使得用户能够方便地从各种设备访问和管理他们的媒体库。
-
自动备份:用户可以通过设置来实现手机上的照片和视频自动备份到自己的服务器上,从而保证珍贵记忆的安全。
-
智能功能:Immich 支持基于人工智能的面部识别技术,帮助用户组织并标记他们的照片集。此外,还提供了基于地理位置和时间的搜索功能,便于快速查找特定的照片或视频。
-
易于安装与配置:借助Docker等容器化技术,Immich 可以相对容易地被部署到任何支持Docker的服务器上,包括但不限于Linux、macOS以及Windows系统。
-
丰富的API接口:对于开发者来说,Immich 提供了RESTful API,允许创建自定义应用程序或者集成到现有的项目中去。
-
社区驱动:作为一款活跃发展的开源项目,Immich 拥有一个积极贡献和支持的社区,持续不断地改进软件特性并解决遇到的问题。
2.4 使用场景
- 家庭媒体库:家庭成员可以将各自的照片和视频自动备份到一个中央服务器上,方便全家共享和浏览。
- 小型企业资料管理:小型企业利用Immich来存储和组织公司活动、产品图片等重要业务资料,便于团队访问和协作。
- 个人隐私保护:注重隐私的个人用户通过在自己的服务器上部署Immich,确保照片和视频的安全存储,远离第三方云服务的数据泄露风险。
- 旅行者与摄影师:经常旅行或专业摄影师使用Immich即时备份大量高分辨率照片和视频,保证旅途中的珍贵记忆安全无虞。
- 教育机构资源分享:学校和培训机构使用Immich建立多媒体教育资源库,供教师上传教学材料,并让学生轻松访问这些学习资源。
- 远程工作团队协作:分布在全球各地的工作团队通过Immich平台共享项目相关的视觉素材,促进高效沟通与合作。
三、本次实践介绍
3.1 本次实践简介
1.本次实践为个人测试学习环境,旨在快速部署应用,生产环境请谨慎;
2.本次实践环境为华为云Flexus云服务器X实例,使用的操作系统为openEuler 22.03 LTS
;
3.在Docker环境下部署immich相片管理系统。
3.2 本次环境规划
服务器类别 | 公共镜像选择 | 内网IP地址 | Docker版本 | 操作系统版本 |
---|---|---|---|---|
华为云Flexus云服务器X实例 | openEuler | 192.168.0.169 | 26.1.3 | openEuler 22.03 LTS |
四、购买华为云Flexus云服务器X实例
4.1 登录华为云
进入华为云官网:https://activity.huaweicloud.com/,登录自己的华为云账号,进入华为云首页。
4.2 进入Flexus云服务器X实例购买页面
我们在华为云官网首页,精选推荐模块中,可以看到Flexus云服务器X实例,点击进入Flexus云服务器X实例主页。
点击页面中的“购买”选项,进入Flexus云服务器X实例购买页面。
4.3 购买Flexus云服务器X实例配置
- 镜像选择:本次实践使用openEuler作为公共镜像,请根据实际需求自定义选择合适的操作系统镜像。
- 镜像切换说明:参考的公共镜像原为Huawei Cloud EulerOS,但本次实践中已切换至openEuler。
- 基础配置参考:购买时可参考以下基础配置进行选择。
项目 | 配置说明 |
---|---|
计费模式 | 包年/包月 |
区域 | 华北—北京四,可用区:随机即可 |
实例规格 | 关闭性能模式,选择自定义,4vCPUs | 12GiB |
镜像 | 公共镜像,openEuler,版本:openEuler 2.0 Standard 64 bit (10GiB) |
应用加速 | 不加速 |
存储 | 系统盘,通用型SSD 100G |
网络 | 选择默认即可 |
安全组 | 选择默认即可 |
弹性公网IP | 选择“现在购买”,全动态BGP,带宽3Mbit/s |
云服务器名称 | 可自定义设置,这里选择默认的名称 |
登录凭证 | 自定义设置密码 |
云备份 | 暂不购买 |
- 确认配置及购买:在确认配置页面仔细检查Flexus云服务器X实例的各项设置,确保无误后点击“立即购买”,完成付款流程即可成功购买。
4.4 使用Xshell远程连接
进入华为云Flexus云服务的控制台,选择Flexus云服务器X实例,可以看到已经正在运行的Flexus云服务器X实例。
- 复制Flexus云服务器X实例的弹性公网IP地址
- 主要填写Flexus云服务器X实例的弹性公网IP地址,输入其登录用户和密码,连接即可。
五、检查Docker环境
5.1 检查操作系统版本
检查Flexus云服务器X实例的操作系统版本,本次实践选择的版本为
openEuler 22.03 LTS
[root@flexusx-51a1 ~]# cat /etc/os-release
NAME="openEuler"
VERSION="22.03 LTS"
ID="openEuler"
VERSION_ID="22.03"
PRETTY_NAME="openEuler 22.03 LTS"
ANSI_COLOR="0;31"
5.2 检查内核版本
检查当前操作系统的内核版本,当前内核版本为
5.10.0-60.139.0.166.oe2203.x86_64
。
[root@flexusx-51a1 ~]# uname -r
5.10.0-60.139.0.166.oe2203.x86_64
5.3 检查Docker版本
部署该项目需要提前安装Docker环境,检查Docker版本,当前安装的Docker版本为
26.1.3
。
[root@flexusx-51a1 ~]# docker -v
Docker version 26.1.3, build b72abbb
检查Docker服务状态,确保Docker服务正常。
[root@flexusx-51a1 ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2024-09-23 20:27:32 CST; 12min ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 18484 (dockerd)
Tasks: 10
Memory: 240.2M
CGroup: /system.slice/docker.service
└─ 18484 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
5.5 检查Docker compose版本
检查docker compose版本,当前默认安装版本为
v2.27.0
。
[root@flexusx-51a1 ~]# docker compose version
Docker Compose version v2.27.0
六、部署immich应用
6.1 拉取immich镜像
从 Google 容器仓库(Google Container Registry, GCR)和 Docker Hub 拉取 Immich 相关镜像时,请参考以下镜像名称及版本。请注意,由于镜像版本的更新和 Immich 的持续迭代,部署文件和步骤可能会有所变化。如果在部署过程中遇到问题,请参阅官方最新文档以获取最新的指导和支持。
docker pull ghcr.io/immich-app/immich-server:release
docker pull ghcr.io/immich-app/immich-machine-learning:release
docker pull docker.io/redis:6.2-alpine@sha256:2d1463258f2764328496376f5d965f20c6a67f66ea2b06dc42af351f75248792
docker pull docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
查看本地已经下载的4个immich相关镜像
docker images
6.2 创建部署目录
在命令行终端上,我们需要创建部署目录
/data/immich
。
mkdir -p /data/immich && cd /data/immich
6.3 编辑docker-compose.yaml文件
本次实践使用docker compose方式部署immich应用,编辑docker-compose.yaml文件,可自行修改映射端口部分。
vim docker-compose.yaml
# WARNING: Make sure to use the docker-compose.yml of the current release:
#
# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
#
# The compose file on main may not be compatible with the latest release.
#
name: immich
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
# extends:
# file: hwaccel.transcoding.yml
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
volumes:
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
ports:
- 2283:3001
depends_on:
- redis
- database
restart: always
healthcheck:
disable: false
immich-machine-learning:
container_name: immich_machine_learning
# For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
# Example tag: ${IMMICH_VERSION:-release}-cuda
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
# extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
# file: hwaccel.ml.yml
# service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
volumes:
- model-cache:/cache
env_file:
- .env
restart: always
healthcheck:
disable: false
redis:
container_name: immich_redis
image: docker.io/redis:6.2-alpine@sha256:2d1463258f2764328496376f5d965f20c6a67f66ea2b06dc42af351f75248792
healthcheck:
test: redis-cli ping || exit 1
restart: always
database:
container_name: immich_postgres
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
volumes:
# Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
healthcheck:
test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1
interval: 5m
start_interval: 30s
start_period: 5m
command: ["postgres", "-c", "shared_preload_libraries=vectors.so", "-c", 'search_path="$$user", public, vectors', "-c", "logging_collector=on", "-c", "max_wal_size=2GB", "-c", "shared_buffers=512MB", "-c", "wal_compression=on"]
restart: always
volumes:
model-cache:
6.4 编辑.env文件
编辑.env文件,可参考如下配置:
vim .env
# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables
# The location where your uploaded files are stored
UPLOAD_LOCATION=./library
# The location where your database files are stored
DB_DATA_LOCATION=./postgres
# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
# TZ=Etc/UTC
# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=release
# Connection secret for postgres. You should change it to a random password
# Please use only the characters `A-Za-z0-9`, without special characters or spaces
DB_PASSWORD=postgres
# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=postgres
DB_DATABASE_NAME=immich
~
6.5 创建immich容器
执行以下命令,使用docker-compose.yaml文件创建immich服务。
[root@flexusx-51a1 immich]# docker compose up -d
[+] Running 6/6
✔ Network immich_default Created 0.0s
✔ Volume "immich_model-cache" Created 0.0s
✔ Container immich_postgres Started 0.3s
✔ Container immich_machine_learning Started 0.2s
✔ Container immich_redis Started 0.2s
✔ Container immich_server Started 0.4s
6.6 检查immich容器状态
检查immich容器状态,确保immich容器正常启动。
[root@flexusx-51a1 immich]# docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
immich_machine_learning ghcr.io/immich-app/immich-machine-learning:release "tini -- ./start.sh" immich-machine-learning 5 minutes ago Up 5 minutes (healthy)
immich_postgres docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0 "docker-entrypoint.s…" database 5 minutes ago Up 5 minutes (healthy) 5432/tcp
immich_redis docker.io/redis:6.2-alpine@sha256:2d1463258f2764328496376f5d965f20c6a67f66ea2b06dc42af351f75248792 "docker-entrypoint.s…" redis 5 minutes ago Up 5 minutes (healthy) 6379/tcp
immich_server ghcr.io/immich-app/immich-server:release "tini -- /bin/bash s…" immich-server 5 minutes ago Up 5 minutes (healthy) 0.0.0.0:2283->3001/tcp, :::2283->3001/tcp
七、访问前准备工作
7.1 关闭selinux和防火墙
- 关闭selinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
- 停止防火墙
systemctl stop firewalld
systemctl disable firewalld
7.2 Flexus云服务器X实例安全组配置
进入Flexus云服务器X实例控制台,进行安全组规则配置。入方向上放行2283端口,确认配置即可。
八、访问immich服务
8.1 访问immich初始页
浏览器访问地址:http://服务器IP地址:2283,将IP替换为自己云服务器弹性公网IP地址。浏览器打开后,进入immich初始页。
8.2 注册账号
点击“Getting Started”,进入账号注册页面。
在账号注册页,自定义填写账号信息即可。
8.3 登录immich
在immich登录页,输入刚才注册的账号密码,登录即可。
九、immich的基本使用
9.1 上传图片
点击上传选项,上传本地图片。
上传完成后,可以看到刚上传的图片效果。
9.2 新建相册
在相册管理页面,点击创建相册。
填写相册名称:自定义填写即可,可选择将已上传的图片加入该新建相册。
9.3 查看统计数据
点击Administration,进入系统设置页面,选择“Server status”,可以看到相关统计信息。
十、使用体验与总结
通过在
华为云Flexus云服务器X实例
上成功部署Immich相片管理系统,我们不仅体验到了高效稳定的自托管照片和视频备份解决方案,还深刻感受到了华为云提供的卓越性能和灵活性。华为云的柔性算力确保了即使在高负载情况下,系统依然能够流畅运行,为用户提供无缝的使用体验。此外,华为云丰富的文档和支持资源极大地简化了部署过程,使得即使是技术新手也能轻松上手。此次实践再次证明了华为云作为领先云计算服务提供商,在支持创新应用和服务方面的强大能力和专业性。
在华为云828 B2B企业节期间,Flexus X实例带来了极具吸引力的优惠活动。华为云凭借其顶级的云服务和卓越的性能,为企业提供了稳定可靠的支持,成为推动业务增长的理想选择。我们诚挚邀请各行各业的伙伴加入华为云的大家庭,共同见证技术创新带来的无限潜力。让我们携手并进,开启云端发展的新篇章,共享科技进步所带来的丰硕成果!