如何使用 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
繁體地址,請注明出處:http://hk.pswp.cn/web/80915.shtml
英文地址,請注明出處:http://en.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方面保障…