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

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实例针对不同的使用场景展现出其独特的优势:

  1. 电商直播:利用X实例搭建电商交易平台,可以有效应对电商市场的瞬息万变,从容处理业务压力波动,确保交易过程顺畅无阻。

  2. 企业建站:面向博客、论坛和企业门户等应用场景,X实例帮助企业高效传播价值信息,促进信息共享与交流,支持构建多功能传播和交互平台。

  3. 个人开发测试:开发者在开发和测试过程中所需的环境资源可以通过X实例便捷获取,不仅提高了搭建效率,而且降低了成本。

  4. 游戏服务器:适用于搭建游戏后台服务器,强大的计算能力可以轻松应对大量玩家同时在线的情况,同时支持平滑扩容,快速应对玩家数量增长的需求,以及提供出色的网络加速能力以提升用户体验。

二、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实例openEuler192.168.0.16926.1.3openEuler 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实例带来了极具吸引力的优惠活动。华为云凭借其顶级的云服务和卓越的性能,为企业提供了稳定可靠的支持,成为推动业务增长的理想选择。我们诚挚邀请各行各业的伙伴加入华为云的大家庭,共同见证技术创新带来的无限潜力。让我们携手并进,开启云端发展的新篇章,共享科技进步所带来的丰硕成果!


在这里插入图片描述


http://www.kler.cn/news/319445.html

相关文章:

  • 接口自动化测试框架实战(Pytest+Allure+Excel)
  • unity CustomEditor的基本使用
  • vue3-vben-admin开发记录、知识点
  • 【多线程】面试高频考点!JUC常见类的详细总结,建议收藏!
  • 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-24
  • 小孩真的需要手机上学吗?怎样远程了解他在学校用iPhone干什么?
  • 代码随想录 | Day24 | 二叉树:二叉树的公共祖先(有个自己的想法)二叉搜索树的公共祖先
  • Fyne ( go跨平台GUI )中文文档-小部件 (五)
  • VisualPromptGFSS
  • 【C++ Primer Plus习题】17.7
  • GEO数据库提取疾病样本和正常样本|GEO数据库区分疾病和正常样本|直接用|生物信息|生信
  • 使用宝塔部署项目在win上
  • MySQL数据库脚本转化成sqlite数据库脚本的修改点
  • 动态规划day38|322. 零钱兑换(背包满了吗?最小值怎么表示?)、279. 完全平方数、139. 单词拆分、多重背包要点、背包问题大总结
  • 網路本地連接沒有有效的IP配置:原因與解決方法
  • 匈牙利算法详解与实现
  • 【Tomcat】常见面试题整理 共34题
  • 跨站请求伪造(CSRF)漏洞详解
  • 【MySQL】知识总结——索引的类型分类和性质
  • 2023国赛C题 蔬菜类商品的自动定价与补货决策(上)
  • Spring Boot 中实现动态列导入讲解和案例示范
  • element plus上传文件 点击确认后文件上传到接口
  • Java项目实战II基于Java+Spring Boot+MySQL的车辆管理系统(开发文档+源码+数据库)
  • 【Java】将一个List拆分使用线程池多线程运行
  • linux进程间通信——消息队列、信号量、ipc设计原理
  • 梧桐数据库(WuTongDB):向量化查询优化器的一些实现细节
  • 傅里叶变换及其应用笔记
  • 使用dom-to-image截图html区域为一张图
  • Redis --- redis事务和分布式事务锁
  • 全栈杂谈第三期 我们用的网络协议是什么