发布于 

使用Docker部署LskyPro图床

为了后续写作方便,以及给博客的评论插件使用,搭了一个图床,使用 Lsky Pro 搭建。

Lsky Pro 是一个用于在线上传、管理图片的图床程序。有开源版和企业版,一般开源版就够用了。

简单起见,我直接用 docker 来部署。

1
docker run -d --name lsky -p 10080:80 -v /data/lsky:/var/www/html halcyonazure/lsky-pro-docker:latest

一开始镜像拉不下来,超时。

然后发现服务器以前配的阿里云镜像加速,不知道为什么没了,于是重新配了一下。

1
2
3
4
5
6
7
8
9
10
11
sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://z**********w.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

成功拉取镜像,运行成功,但是输入地址结果发现无法访问。

提示 ERR_UNSAFE_PORT

百度搜了一下发现是端口原因,10080 是高危端口,淦!

err-unsafe-port
err-unsafe-port

删掉原来的容器,端口换成 20080。

1
2
3
docker rm -f lsky

docker run -d --name lsky -p 20080:80 -v /data/lsky:/var/www/html halcyonazure/lsky-pro-docker:latest

可以打开地址了,但是发现报 502 错误。后面找到 lsky-pro-docker 的作者 @halcyonazure 的 github 仓库,发现容器端口是 8089。上面的 80 端口的命令,是在网上一篇前两年的博客里看到的,应该是过时了。

lskypro-docker-github
lskypro-docker-github

仓库地址:https://github.com/HalcyonAzure/lsky-pro-docker

修改命令重新运行。

1
docker run -d --name lsky -p 20080:8089 -v /data/lsky:/var/www/html halcyonazure/lsky-pro-docker:latest

这次成功进入页面,没有再报错。需要配置数据库,输入账号密码后安装成功。

lskypro-index-page
lskypro-index-page

网上有人用 docker 安装完之后,上传图片复制外链,结果外链地址是内网地址,我这里没有遇到这个问题。

所以就直接下一步,配置 nginx,使用 https 来访问。

我直接在 nginx 的 conf.d 目录新加了一个 lsky.conf。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
server {
listen 80;
server_name pic.5had0w.com;
rewrite ^(.*) https://$server_name$1 permanent;
}

server {
listen 443 ssl;
server_name pic.5had0w.com;
proxy_send_timeout 10000s;
client_max_body_size 1000M;
ssl_certificate /etc/nginx/cert/pic.5had0w.com_nginx/pic.5had0w.com_bundle.crt;
ssl_certificate_key /etc/nginx/cert/pic.5had0w.com_nginx/pic.5had0w.com.key;

location / {
proxy_pass http://127.0.0.1:20080;
proxy_set_header Host $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;
}

}

成功通过域名访问。

lskypro-admin
lskypro-admin

发现图片的外链还是 IP 地址,用超级管理员的账户设置一下存储策略,修改访问地址为域名即可。

lskypro-storage-policy
lskypro-storage-policy