如何使用 Docker Compose 部署 Immich

如何使用 Docker Compose 部署 Immich

Immich 是一个开源的自建照片和视频备份解决方案,通过 Docker 部署可以快速构建一个稳定的自主管理系统。本文将带你一步步完成使用 Docker Compose 部署 Immich 的过程,帮助你在生产环境中实现高效的媒体管理。


1. 环境准备

在开始部署之前,请确保你已经安装并配置了以下软件:

  • Docker Engine
    请参考官方文档安装 Docker Engine,并确保 Docker 守护进程正在运行。

  • Docker Compose
    Docker Compose 是一个用来管理多容器应用的工具,建议使用最新版。
    可通过命令 docker compose version 检查是否已安装。如未安装,请参考 Docker 官方文档进行安装。

  • 服务器或虚拟机环境
    部署 Immich 建议使用 Linux 系统环境,保证磁盘空间足够存储备份数据。
    如果你在 Windows 或 macOS 上进行测试,也可以通过 Docker Desktop 进行部署。


2. 准备部署文件

2.1 创建部署目录

首先在你的服务器或主机上创建一个用于存放部署文件的目录,例如:

mkdir -p ~/immich-app
cd ~/immich-app

该目录将用来保存 docker-compose.yml 配置文件和环境变量文件 .env

2.2 下载配置文件

建议从 Immich 的 GitHub Releases 页面下载最新的部署配置文件。你可以通过以下命令下载:

wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

如果你喜欢,也可以直接在浏览器中下载这两个文件,然后将其放入刚创建的目录中(注意将下载后的 example.env 重命名为 .env)。


3. 配置环境变量

打开 .env 文件,你会看到如下示例配置内容:

# Immich 环境变量示例
# 可以在 https://immich.app/docs/install/environment-variables 中查看所有支持的变量# 上传文件存储路径,建议设置为一个专用目录
UPLOAD_LOCATION=./library# 数据库文件存储路径,注意网络共享目录不支持用于数据库
DB_DATA_LOCATION=./postgres# 设置时区,这里示例中将时区设置为上海
TZ=Asia/Shanghai# 指定要使用的 Immich 版本
IMMICH_VERSION=release# 数据库密码,建议修改为随机密码,且仅包含 A-Za-z0-9 字符
DB_PASSWORD=postgres# 数据库基本配置,通常无需修改
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

根据你的实际情况,可以对以下内容做出调整:

  • UPLOAD_LOCATION
    指定一个有足够存储空间的目录,用于存放上传的照片和视频。
  • DB_DATA_LOCATION
    用于存储 PostgreSQL 数据库数据,同样建议设置为专用目录。
  • TZ
    设置你所在的时区。
  • IMMICH_VERSION
    默认为 release 版本,如果你想指定具体版本号,也可以将该值修改为类似 v1.71.0 的格式。
  • DB_PASSWORD
    请修改为你自己的安全密码,数据库默认只在容器网络内部使用。

4. 启动 Immich 应用

在完成 .env 文件配置后,就可以启动 Immich 的 Docker Compose 服务了。在 ~/immich-app 目录下执行以下命令:

docker compose up -d

该命令会进行以下操作:

  • 拉取最新的 Immich 镜像(包括相应的后端服务和数据库镜像)。
  • 根据 docker-compose.yml 文件定义启动多个容器,其中包括:
    • Immich 服务器容器
    • PostgreSQL 数据库容器
    • 其他辅助服务容器(如反向代理,视具体配置而定)

使用 -d 参数后,容器将以后台模式运行,你可以通过 docker compose ps 查看当前运行的容器状态。


5. 验证部署和后续配置

5.1 验证服务状态

  • 访问服务器的 IP 地址或域名,默认情况下 Immich 应用会监听 80 端口。如果你在部署过程中修改了端口,请使用对应端口访问。
  • 检查日志:
    可以通过命令 docker compose logs -f 实时查看容器启动和运行日志,确认各项服务是否正常工作。

5.2 根据业务需要进行调整

  • 数据备份与存储:
    确保 UPLOAD_LOCATIONDB_DATA_LOCATION 指向的路径有足够的磁盘空间,并且在生产环境中可以通过挂载持久化卷来保障数据不丢失。

  • 安全配置:
    根据实际生产环境注意网络安全,建议为 Docker 服务和数据库容器设置合适的防火墙规则,不直接暴露数据库端口。同时,建议使用 HTTPS 对外提供服务,可通过反向代理(例如 Nginx)实现 TLS 加密。

  • 升级与维护:
    当 Immich 发布新版本时,只需更新 IMMICH_VERSION 变量并重新拉取镜像,然后重启服务即可完成升级。


6. 常见问题排查

  • 如果容器启动失败
    请检查 .env 文件中环境变量的配置是否正确,尤其是路径配置、时区和数据库密码设置。

  • 如果服务无法访问
    请确认 Docker 主机防火墙或安全组规则是否允许访问相应端口;另外,也可以检查 docker compose logs 中是否有错误信息。

  • 资源不足问题
    如果发现容器运行时磁盘空间不足或内存占用高,请检查宿主机资源,并考虑扩展存储或为容器设置资源限制。


7. 总结

通过 Docker Compose 部署 Immich 能够快速搭建一个高效、易于管理的自建照片与视频备份系统。整个部署过程主要包括以下步骤:

  1. 准备部署目录及环境文件(docker-compose.yml 和 .env)。
  2. 修改环境变量文件,调整存储路径、时区、版本及数据库密码等配置。
  3. 执行 docker compose up -d 命令启动容器服务。
  4. 根据日志和访问状态验证部署是否成功,再根据实际需求进行安全、资源等方面的优化。

希望这篇指南能帮助你轻松部署 Immich,实现私有云相册系统的快速上线。如有任何疑问或遇到问题,欢迎在评论区交流讨论或参考 Immich 官方文档 了解更多详细信息。

Happy deploying!

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

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

相关文章

Mac远程连接Windows电脑教程

在 Mac 上通过微软官方远程桌面工具(Windows App)连接局域网内的 Windows 电脑,需按照以下步骤操作: 一、准备工作 确认 Windows 版本支持远程连接 Windows 专业版/企业版/教育版 支持远程桌面功能。家庭版不支持,需使…

从0到1打造AI Copilot:用SpringBoot + ChatGPT API实现智能开发助手

本文将从0到1系统性地讲解如何基于SpringBoot与OpenAI ChatGPT API打造一款智能开发助手(AI Copilot)。文章首先介绍AI Copilot的背景与价值,接着深入架构设计与环境准备,然后通过详尽的代码示例演示SpringBoot项目的搭建、依赖配…

Crawl4AI:高效的AI数据抓取工具

在大数据时代,抓取并处理大量数据是进行人工智能(AI)研究与开发的基础。而网络爬虫是获取网页数据的重要工具。今天,我想介绍一个功能强大的爬虫框架——Crawl4AI,它为数据抓取和机器学习任务提供了无缝的支持。Crawl4…

从单链表 list 中删除第 i 个元素--Python

从单链表 list 中删除第 i 个元素 一、问题引入二、解题步骤1.思维导图2.解题步骤 三、代码实现四、个人总结 一、问题引入 请编写程序,将 n 个整数顺次插入一个初始为空的单链表的表头。随后对任意给定的位序 i,删除链表中第 i 个结点。注意&#xff1…

git学习与使用(远程仓库、分支、工作流)

文章目录 前言简介git的工作流程git的安装配置git环境:git config --globalgit的基本使用新建目录初始化仓库(repository)添加到暂存区新增/修改/删除 文件状态会改变 提交到仓库查看提交(commit)的历史记录git其他命令…

九、日志分析和系统故障排查

目录 1、日志分析1.1、日志介绍1.1.1、日志的功能1.1.2、日志文件的分类1.1.3、日志保存位置1.2、rsyslog服务1.2.1、发送日志到远程日志服务器1.3、查看日志文件1.3.1、/var/log/messages文件的内容示例1.3.2、用户登录、退出系统的相关日志1.4、日志级别1.5、程序日志分析1.6…

C++ 非类成员变量 非类成员函数 全局变量 使用

1 使用特点 加 :: 变量使用 #include <iostream> using namespace std; int qwer 100; int asdf 900; void sitl(){std::cout <<"globe dog is sitting." << std::endl; }class Cat { public:static int num;}; int Cat::num 99;class Dog { …

【小乌龙问题】stm32供电,用过的ch340缺无法被识别

解决&#xff1a;更换正确供电&#xff08;stlink&#xff09;&#xff0c;不能用usb-ttl的仅供电&#xff0c;会干扰的&#xff01;&#xff01;&#xff01;&#xff01; 原来用stlink供电&#xff0c;今天没拿就想着usb-ttl的电源供电&#xff0c;然后用ch340传输数据&…

使用 Navicat 17 for PostgreSQL 时,请问哪个版本支持 PostgreSQL 的 20150623 版本?还是每个版本都支持?

&#x1f9d1;‍&#x1f4bb; PostgreSQL 用户 使用 Navicat 17 for PostgreSQL 时&#xff0c;请问哪个版本支持 PostgreSQL 的 20150623 版本&#xff1f;还是每个版本都支持&#xff1f; &#x1f9d1;‍&#x1f527; 官方技术中心 Navicat Premium 17 和 Navicat for P…

游戏引擎学习第305天:在平台层中使用内存 Arena 的方法与思路

回顾前一天内容&#xff0c;并为今天的开发工作设定方向 我们正在直播制作完整游戏&#xff0c;当前正在实现一个精灵图&#xff08;sprite graph&#xff09;的排序系统。排序的代码已经写完&#xff0c;过程并不复杂&#xff0c;虽然还没做太多优化&#xff0c;但总体思路比…

PHP-FPM 调优配置建议

1、动态模式 pm dynamic; 最大子进程数&#xff08;根据服务器内存调整&#xff09; pm.max_children 100 //每个PHP-FPM进程大约占用30-50MB内存(ThinkPHP框架本身有一定内存开销)安全值&#xff1a;8GB内存 / 50MB ≈ 160&#xff0c;保守设置为100 ; 启动时创建的进程数&…

腾讯2025年校招笔试真题手撕(一)

一、题目 有n 把钥匙&#xff0c;m 个锁&#xff0c;每把锁只能由一把特定的钥匙打开&#xff0c;其他钥匙都无法打开。一把钥匙可能可以打开多把锁&#xff0c;钥匙也可以重复使用。 对于任意一把锁来说&#xff0c;打开它的钥匙是哪一把是等概率的。但你无法事先知道是哪一把…

【北邮通信系统建模与仿真simulink笔记】(2)2.3搭建仿真模型模块操作运行仿真

【声明】 本博客仅用于记录博主学习内容、分享笔记经验&#xff0c;不得用作其他非学术、非正规用途&#xff0c;不得商用。本声明对本博客永久生效&#xff0c;若违反声明所导致的一切后果&#xff0c;本博客均不负责。 目录 【声明】 一、搭建第一个仿真模型 二、模块操作…

系统与账户安全

SYS-01&#xff1a;Windows的账户安全 安全配置核心原则&#xff1a; 强密码策略&#xff1a; 通过组策略设置密码复杂度&#xff1a; # 启用密码复杂度要求 secedit /export /cfg secpolicy.inf # 修改文件中的 "PasswordComplexity 1" secedit /configure /db …

COMPUTEX 2025 | 广和通5G AI MiFi解决方案助力移动宽带终端迈向AI新未来

随着5G与AI不断融合&#xff0c;稳定高速、智能的移动网络已成为商务、旅行、户外作业等场景的刚需。广和通5G AI MiFi方案凭借领先技术与创新设计&#xff0c;重新定义5G移动网络体验。 广和通5G AI MiFi 方案搭载高通 4nm制程QCM4490平台&#xff0c;融合手机级超低功耗技术…

免费开放试乘体验!苏州金龙自动驾驶巴士即将上线阳澄数谷

近日&#xff0c;苏州自动驾驶巴士线路——阳澄数谷示范线正式上线&#xff0c;即日起向全民免费开放试乘体验&#xff01; 在苏州工业园区地铁3号线倪浜•阳澄数谷站外&#xff0c;一辆辆黑、白配色的小巴正在道路上有条不紊地行驶。与普通公交不同的是&#xff0c;小巴造型奇…

嵌入式软件架构规范之 - 分层设计

一、规范的核心思想&#xff1a;驱动文件的“独立性”与“复用性” 该规范的本质是通过分层隔离&#xff0c;实现驱动代码的高复用性、低耦合性&#xff0c;确保驱动模块仅关注“硬件操作逻辑”&#xff0c;不依赖上层业务或下层硬件接口的具体实现细节。其核心要求包括&#…

PyQt5绘图全攻略:QPainter、QPen、QBrush与QPixmap详解

摘要&#xff1a;掌握PyQt5绘图核心控件&#xff0c;轻松实现窗体绘图、文字渲染、几何图形绘制及图像加载。本文附带完整代码示例与效果图&#xff0c;助你快速上手GUI图形开发。 绘图基础&#xff1a;为什么需要这些控件&#xff1f; 在GUI开发中&#xff0c;绘图功能是数据…

C++学习:六个月从基础到就业——多线程编程:std::thread基础

C学习&#xff1a;六个月从基础到就业——多线程编程&#xff1a;std::thread基础 本文是我C学习之旅系列的第五十四篇技术文章&#xff0c;也是第四阶段"并发与高级主题"的第一篇&#xff0c;介绍C11引入的多线程编程基础知识。查看完整系列目录了解更多内容。 引言…

【计算机网络】TCP如何保障传输可靠性_笔记

文章目录 一、传输可靠性的6方面保障二、分段机制三、超时重传机制四、流量控制五、拥塞控制 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 源网站 按TCP/IP 4层体系&#xff0c;TCP位于传输层&#xff0c;为应用层提供服务 一、传输可靠性的6方面保障…