Immich配置SSL证书开启HTTPS访问
注意事项
配置ssl证书开启https公网访问,请务必注意数据安全。
immich服务目前没有密码错误多次登录时触发登录保护的功能,所以存在暴力破解的可能性。
建议用tailscale、ngrok、frp、cloudflare tunnel之类内网穿透工具。
第一步:申请证书
申请证书这里不做赘述,阿里云送的免费证书,或者let’s encrypt的证书都可以。
我用的反代工具是nginx,所以证书是是nginx格式。
一共两个文件:
domain.key
domain.pem
第二步:安装nginx
我用的系统是debian,直接apt安装
apt install nginx
nginx安装好以后,默认配置文件路径/etc/nginx
。
如果没有这个目录,执行以下命令,会显示nginx的配置文件路径
nginx -t
第三步:上传证书
在/etc/nginx
目录下新建文件夹ssl
,然后用工具(比如winscp/sftp等)把两个ssl证书文件放到ssl
目录下。
最终ssl证书的路径如下:
/etc/nginx/ssl/domain.key
/etc/nginx/ssl/domain.pem
第四步:配置反代
进入目录/etc/nginx/sites-available
,把默认的default
配置文件备份,新建一个default
文件。
# 进目录
cd /etc/nginx/sites-available
# 备份
mv default default.bak
# 新建
touch default
如果不懂为啥,就根据这个操作,如果懂,就根据自己的习惯操作。
用编辑器编辑default
文件,录入一下内容,保存后退出。假定新端口是12345。
server {
# 监听端口 12345
listen 12345 ssl;
listen [::]:12345 ssl;
# 服务名
server_name domain;
# 因为需要上传照片视频,这里设定最大上传文件50GB
client_max_body_size 50000M;
# ssl证书路径
ssl_certificate ssl/domain.pem;
ssl_certificate_key ssl/domain.key;
# ssl session缓存和时间
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
# ssl加密的相关配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
# 这个是设置http访问报错后自动跳转到https
error_page 497 https://$host:$server_port$uri$is_args$args;
location / {
# 跳转到本地2283端口
proxy_pass http://localhost:2283;
# 以下配置是immich官网文档的内容,因为docker-immich还有一层nginx
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
}
}
第五步:重启服务
完成nginx的配置以后,先测试配置文件语法是否正确。
nginx -t
语法测试通过,会显示success
,否则会显示错误行数,根据报错调整即可。
测试通过后,重启nginx。
systemctl restart nginx
重启成功后,就可以通过https://domain:12345
来访问immich了。
参考文章
- Reverse Proxy https://immich.app/docs/administration/reverse-proxy