Immich 一键安装脚本 install.sh 详解:部署流程、配置项与环境变量全解析

发布时间:2026/9/7 14:26:21
Immich 一键安装脚本 install.sh 详解:部署流程、配置项与环境变量全解析 Immich 一键安装脚本 install.sh 详解部署流程、配置项与环境变量全解析【免费下载链接】immichHigh performance self-hosted photo and video management solution.项目地址: https://gitcode.com/GitHub_Trending/im/immich本篇聚焦 Immich 仓库中提供的install.sh一键安装脚本围绕 docs/docs/install/script.md 讲解的安装步骤展开。通过结合仓库内的 install.sh 源码、docker/docker-compose.yml 编排文件与 docker/example.env 默认配置读者将完整掌握该脚本的部署流程、前置条件、关键配置项以及安装后如何修改环境变量的标准操作。前置条件与适用范围install.sh属于实验性Experimental安装方式官方明确标注其当前不推荐用于生产环境生产部署建议改用 Docker Compose 手动安装。使用本脚本前需满足以下条件详见 requirements操作系统脚本仅支持 Linux且要求系统上已预先安装 Docker。Docker Compose 插件必须提供docker compose命令带空格的 V2 插件形式。注意已弃用的docker-composeV1带连字符不受支持。硬件基线供参考来自 requirements 文档内存最低 6GB推荐 8GBCPU最低 2 核推荐 4 核存储推荐使用支持用户/组权限的 Unix 文件系统EXT4、ZFS 等缩略图与转码会使照片库体积平均增加 10%–20%。执行安装命令在任意目录下运行以下命令即可开始安装curl -o- https://raw.githubusercontent.com/immich-app/immich/main/install.sh | bash注意该命令会拉取main分支上的install.sh执行脚本本身再去下载最新的docker-compose.yml与example.env。由于是实验性方法生产环境请优先阅读 Docker Compose 安装文档。脚本做了什么install.sh 源码逐段解析阅读 install.sh 源码可以清楚看到脚本的主流程由main()依次调用四个子函数完成并在每步失败时返回独立的退出码便于排障。1. 创建./immich-app目录create_immich_directory()在当前目录下创建./immich-app。若该目录已存在则提示Found existing directory ./immich-app, will overwrite YAML files即保留已有数据、覆盖 YAML 文件随后cd进入该目录。这意味着后续所有数据照片库、Postgres 数据都以脚本运行时所在的当前目录为基准。这是文档中目录./immich-app相对于当前目录这一说法的来源。2. 下载docker-compose.yml与.env脚本将下载地址固定为最新发布版产物目录RepoUrlhttps://github.com/immich-app/immich/releases/latest/downloaddownload_docker_compose_file()拉取docker-compose.ymldownload_dot_env_file()拉取example.env并保存为.env。这里使用了curl -fsSL静默、跟随重定向、出错时非零退出。若系统没有curl脚本会以退出码 14 提前终止并提示安装 curl。3. 生成随机数据库密码generate_random_password()会基于RANDOM date RANDOM做sha256sum再base64截取前 10 位生成随机密码并用sed把.env中默认的DB_PASSWORDpostgres替换为随机值sed -i -e s/DB_PASSWORDpostgres/DB_PASSWORD${rand_pass}/ ./.env若随机生成结果为空则回退为postgres${RANDOM}${RANDOM}。这一步是为了避免使用默认口令postgres提升安装后的基础安全性。4. 启动容器并输出访问信息start_docker_compose()先校验docker compose是否存在不存在则报错返回再执行docker compose up --remove-orphans -d启动成功后show_friendly_message()会通过hostname -I取第一个 IP 作为本机地址在 macOS 上回退到ipconfig getifaddr en0打印http://$ip_address:2283的访问地址给出一段如何修改配置的固定指引先down再改.env最后up。安装完成后的访问地址与数据目录Web 应用与移动应用入口http://machine-ip-address:2283端口映射自docker-compose.yml中2283:2283。媒体库目录./immich-app相对于运行脚本时所在的当前目录。库文件、缩略图与 Postgres 数据均落在此目录内对应UPLOAD_LOCATION./library与DB_DATA_LOCATION./postgres。关键配置项解析安装脚本实际部署的是一套由四个容器组成的服务定义在 docker/docker-compose.yml 中所有可变项集中在 docker/example.env。以下是与脚本部署直接相关的核心变量。docker-compose.yml 中的服务与关键挂载服务容器名镜像作用immich-serverimmich_serverghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}主 API 与 Web 服务监听2283immich-machine-learningimmich_machine_learningghcr.io/immich-app/immich-machine-learning:...人脸识别、CLIP、OCR 等 ML 任务redisimmich_redisdocker.io/valkey/valkey:9任务队列与缓存databaseimmich_postgresghcr.io/immich-app/postgres:14-...内置 Postgres含向量扩展关键挂载与依赖来自 docker/docker-compose.yml媒体目录${UPLOAD_LOCATION}:/data数据库目录${DB_DATA_LOCATION}:/var/lib/postgresql/data并设置shm_size: 128mb时区文件/etc/localtime:/etc/localtime:ro模型缓存命名卷model-cache:/cacheimmich-server通过depends_on等待redis与database就绪。提示仓库中的 compose 文件头部明确警告——安装应使用当前发布版的 compose 文件main分支的版本可能与最新发布不兼容。install.sh正是从releases/latest/download拉取以避免这一问题。example.env 中的默认值docker/example.env 提供了脚本落地的默认配置安装后建议在首次进入前审阅# 上传文件存储位置照片库 UPLOAD_LOCATION./library # 数据库文件存储位置不支持网络共享 DB_DATA_LOCATION./postgres # 时区默认注释示例为 Etc/UTC # TZEtc/UTC # Immich 版本可固定为具体版本如 v2.1.0 IMMICH_VERSIONv3 # 数据库口令脚本已替换为随机值 DB_PASSWORDrandom-generated # 以下无需修改 DB_USERNAMEpostgres DB_DATABASE_NAMEimmichUPLOAD_LOCATION/DB_DATA_LOCATION是 compose 层变量决定宿主机挂载路径IMMICH_VERSION用于 server 与 machine-learning 两个镜像的 tagDB_PASSWORD被脚本改写为随机值DB_USERNAME、DB_DATABASE_NAME在 compose 中作为POSTGRES_USER、POSTGRES_DB传入 database 容器。完整的变量清单含TZ、CPU_CORES、IMMICH_LOG_LEVEL、Redis、Database 等全部默认值与作用范围见 environment-variables。修改配置的标准流程安装脚本打印的提示信息与官方约定一致修改环境变量必须重建容器仅重启无效。标准操作顺序为# 1. 进入脚本创建的数据目录 cd ./immich-app # 2. 停止容器 docker compose down # 3. 修改 .env 中的配置如 DB_DATA_LOCATION、TZ、IMMICH_VERSION 等 # 编辑 .env # 4. 重新拉起docker 通常能识别 .env 变化并重建受影响容器 docker compose up --remove-orphans -d # 5. 若容器未被自动重建则强制重建 docker compose up -d --force-recreate重要约束Postgres 数据目录DB_DATA_LOCATION不应指向网络共享从 requirements 文档看理想情况应使用本地 SSD因为 Postgres 数据文件通常有 1–3GB。安装后必做步骤脚本部署完成后容器已就绪但功能尚需手动配置。按 Post Install Steps 的典型顺序注册管理员访问http://machine-ip-address:2283点击Getting Started首个注册的用户即为管理员可后续添加其他用户可选创建新用户更新存储模板Storage Template配置缩略图命名规则与目录结构下载并登录移动应用上传照片库开启移动端备份配置服务器备份数据库与媒体库。此外还有可选功能外部照片库接入、视频硬件转码、ML 硬件加速等可在安装完成后按需启用。小结与使用建议install.sh的价值在于一条命令完成建目录 拉取最新 compose/env 生成随机口令 启动容器适合快速体验与开发验证它是实验性方案仓库与文档均建议生产环境改用 Docker Compose 手动安装以获得对版本与配置更完整的控制部署后所有可变项集中在.env修改后需docker compose up -d必要时加--force-recreate重建容器方可生效排障时注意install.sh各阶段的独立退出码10–14可据此判断失败发生在建目录、下载、生成密码还是启动容器环节。【免费下载链接】immichHigh performance self-hosted photo and video management solution.项目地址: https://gitcode.com/GitHub_Trending/im/immich创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考