使用 immich 搭建家庭相册系统

2023/05/30 soft 共 3688 字,约 11 分钟
  • 官网:https://immich.app/
  • 在线体验:https://demo.immich.app/,账号:demo@immich.app 密码:demo
  • GitHub:https://github.com/immich-app/immich

一、安装

以下均为Windows操作系统上的安装方法,主要还是依赖于docker,区别是 Docker Desktop on WindowsWSL Docker,最终效果一样,只是一个有图形界面一个没有。

Docker Desktop on Windows

  1. 下载安装 Docker Desktop on Windows
  2. 安装 wsl ,参考:在Windows上使用VisualStudio配合WSL进行Linux程序开发 — 朱皮特的烂笔头
  3. 运行docker
  4. 找一个文件夹作为 immich 的工作目录,然后右键打开 PowerShell,参考 Install - Immich ,执行命令:
curl -o- https://raw.githubusercontent.com/immich-app/immich/main/install.sh | bash

版本升级时需要进入到 immich 的目录下,然后执行命令:

docker-compose pull && docker-compose up -d     # Or `docker compose up -d`

需要注意的是,执行上面的命令,需要提前运行docker才行。如果网络不通,可以尝试用加速器。

  1. 后续再运行 immich 只需要在 docker 里通过图形界面操作来运行,比较方便。

WSL Docker

  1. 安装 wsl ,参考:在Windows上使用VisualStudio配合WSL进行Linux程序开发 — 朱皮特的烂笔头

  2. wsl 中安装 docker

# 安装 docker
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh

# 安装完成后输入命令
sudo groupadd docker
sudo gpasswd –a $USER docker
newgrp docker			# 如果不行,可以在前面执行一句: 

# 启动 docker
sudo service docker start

# 检查 docker 是否安装成功,返回:Docker is running 说明正常运行
sudo service docker status
  1. 找一个文件夹作为 immich 的工作目录,然后右键打开 PowerShell,参考 Install - Immich ,执行命令:
sudo su
curl -o- https://raw.githubusercontent.com/immich-app/immich/main/install.sh | bash

运行:

apt install docker-compose
 
docker-compose up -d     # or `docker compose up -d` based on your docker-compose version

版本升级时需要进入到 immich 的目录下,然后执行命令:

docker-compose pull && docker-compose up -d     # Or `docker compose up -d`

需要注意的是,执行上面的命令,需要提前运行docker才行。如果网络不通,可以尝试用加速器。

  1. 停止 immich 相关服务:
docker stop $(docker ps -q -f name=immich)

二、配置局域网访问

1、配置无线设备与宿主机在同一网段

如果手机与Windows宿主机不在同一个网段,例如手机使用路由器WiFi,但是宿主机使用光猫直连,则可以配置路由器的上网模式为桥接模式(Bridge AP),让光猫来统一给设备分配IP地址,这样所有设备就都在一个网段了,配置完成后记得重启路由器。

2、配置局域网访问Windows 10 WSL 的网络服务

也即实现局域网内的手机、电视、电脑、平板等设备可以访问 immich网络服务,可以参考:Docker — 朱皮特的烂笔头 「局域网访问Windows 10 WSL 的网络服务」章节进行配置。

配置结束后的地址如下:

地址说明
http://192.168.1.2:8080/api移动端App的服务器配置地址
http://192.168.1.2:8080所有局域网设备可访问的地址
http://172.23.192.21:2283/仅宿主机可访问的服务地址

三、一键启动脚本

有时候局域网IP地址可能会发生变化,每次手动设置也挺麻烦,可以让脚本自动获取并自动配置好。在 immich-app 目录下创建 powershell 脚本 run-immich.ps1

<#
一键启动 immich 服务
#>

$wslServerPort = 2283
$localPort = 8080

$hostIP = (ipconfig|select-string "IPv4"|out-string).Split(":")[-1].Trim()

$wslOutput = wsl -e ip addr show eth0
$wslIP = $wslOutput | Select-String -Pattern '\d+(\.\d+){3}' -AllMatches | ForEach-Object { $_.Matches.Value } | Select-Object -First 1


$baseUrl = "http://" + $hostIP + ":8080"
$apiUrl = $baseUrl+ "/api"

Write-Host "宿主IP地址:  $hostIP"
Write-Host "WSL IP地址:  $wslIP"
Write-Host "局域网地址:  $baseUrl"
Write-Host "App服务地址: $apiUrl"


Write-Host "端口映射,将对本机 ${hostIP}:${localPort} 的访问请求转发到 ${wslIP}:${wslServerPort}"
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 protocol=tcp listenport=8080 connectport=2283 connectaddress=$wslIP

Write-Host "查看端口映射情况"
netsh interface portproxy show all

Write-Host "配置防火墙添加允许入站规则"
New-NetFirewallRule -DisplayName "Allow Inbound TCP Port 8080" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 8080


Write-Host "启动 immich 服务"
$wslCommand = "bash -c 'chmod +x run-immich-docker.sh && ./run-immich-docker.sh'"
$process = Start-Process -FilePath wsl -ArgumentList $wslCommand -PassThru 

Write-Host "打开局域网地址"
Start-Process $baseUrl

Write-Host "按任意键继续..."
[Console]::ReadKey()

创建run-immich-docker.sh脚本(注意文件的换行符不能使用Windows的\r\n,要转换为Unix换行符,可以使用notepad++修改:菜单编辑 - 文档格式转换 - 转为Unix(LF)):

#!/bin/bash

# 启动 immich 服务
docker-compose up -d

# 查看 immich 服务相关的端口号
docker ps --filter 'name=immich' --format '\t'
exec bash

以后需要上传图片和视频的时候,打开宿主机,一键运行脚本 run-immich.ps1即可,成功运行后可以关闭 run-immich.ps1的窗口,但是进入wsl环境的窗口不能关闭,需要让服务能够在后台一直运行。

四、更新

需要安装 Docker Desktop on Windows ,进入 WSL 环境后执行:

docker-compose pull && docker-compose up -d

五、问题及解决

  1. 首次安装运行后,web页面的状态显示为 offline,截止到2023-5-31,v1.59.0还存在这个问题。解决办法:在 immich 的命令下,创建一个名为 library的文件夹即可解决。 2023-5-31补充:作者临时打了个补丁,v1.59.1已经解决了。
  2. 首次安装运行后,可以上传图片,但是不会显示出来,截止到2023-5-31,v1.59.0还存在这个问题。解决办法:与作者交流或发新版本,作者临时打了个补丁,v1.59.1已经解决了。

文档信息

Search

    Table of Contents