Nginx 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
Acme.sh 是一个自动申请证书工具
Lsky Pro 兰空图床可以帮您保管大量无处安放的图片,数据可以自由选择储存驱动,支持主流第三方储存。作为一个助手,它不仅可以将您把图片以指定规则存放在指定位置,还有更多强大的功能来帮助您处理这些图片。
MariaDB 数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
Picgo 一个用于快速上传图片并获取图片 URL 链接的工具
更新
v1.0 Docker 部署(2022.09.02)
v1.1 Docker Compose 部署 Lsky Pro 图床 + Picgo 上传工具(2022.11.14)
v1.2 Docker Compose 部署 增加 nginx acme.sh (2022.11.15)
一.安装部署
1.1 安装 Docker
按提示自行选择国内或国外安装
bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/DockerInstallation.sh)
1.2 Docker 部署 Lsky Pro
创建文件存储路径
mkdir -p /data/Lsky/var/www/html
拉取镜像
docker pull wbsu2003/lskypro:latest
启动容器
docker run -d --name=lskypro -p 8080:80 -v /data/Lsky/var/www/html:/var/www/html --restart=always wbsu2003/lskypro:latest
命令解释:
-d \ #后台运行 -p 8080:80 \ #映射容器内80端口至宿主机8080端口 -v /data/Lsky:/var/www/html #将容器内 /var/www/html 路径映射至宿主机 /data/Lsky 路径 --restart=always #配置容器始终启动 --name lskypro #配置容器名称 wbsu2003/lskypro:latestt #运行docker官方镜像站 wbsu2003/lskypro 镜像,latest:最新镜像 访问服务: http://服务器ip:8080 即可登录
1.3 Docker Compose 部署
创建文件存储路径并进入
mkdir -p /Data/Docker_Data/Lsky_Data
cd /Data/Docker_Data/Lsky_Data
创建nginx配置文件
mkeir -p nginx/conf/
cd nginx/conf/
nano xxx.conf
server {
listen 80;
server_name xxx.xxx.xxx xxxsql.xxx.xxx; #xxx 为域名,一个兰空图床的域名,一个sql管理工具的域名
rewrite ^(.*) https://$host$1 permanent;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name xxx.xxx.xxx.com; #修改xxx 为 兰空图床的域名
ssl_certificate /lsky_key/xxx.xxx.xxx.cer; #修改xxx 为 兰空图床的域名
ssl_certificate_key /lsky_key/xxx.xxx.xxx.key; #修改xxx 为 兰空图床的域名
location / {
proxy_set_header X-FORWARDED-FOR $remote_addr;
proxy_set_header X-FORWARDED-PROTO $scheme;
proxy_set_header Host $http_host;
proxy_pass http://lsky:80;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name xxxsql.xxx.xxx; #数据库管理工具的域名
ssl_certificate /sql_key/xxxsql.xxx.xxx.cer; #修改xxx 为 数据库管理工具的域名
ssl_certificate_key /sql_key/xxxsql.xxx.xxx.key;
location / {
proxy_set_header X-FORWARDED-FOR $remote_addr;
proxy_set_header X-FORWARDED-PROTO $scheme;
proxy_set_header Host $http_host;
proxy_pass http://phpmyadmin:80;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
创建 docker-compose.yml 配置文件
cd /Data/Docker_Data/Lsky_Data
nano docker-compose.yml
version: "3.9"
services:
# Nginx 反向代理
nginx:
image: nginx:latest
container_name: nginx
depends_on:
- acme.sh
volumes:
- ./nginx/html:/usr/share/nginx/html/
- ./nginx/conf:/etc/nginx/conf.d/
- ./acme/xxx.xxx.xxx:/lsky_key #此处路径为acme 内 证书文件夹路径,为lsky 申请证书
- ./acme/xxx.xxx.xxx:/sql_key #此处路径为acme 内 证书文件夹路径, 为phpmyadmin 数据库管理工具申请证书
# 对外开放 80 (http) 和 443 (https) 端口
ports:
- 80:80
- 443:443
networks:
- lsky_net # 此处为网络设置,无需指定网络可删除
restart: always
acme.sh:
image: neilpang/acme.sh
container_name: acme.sh
restart: always
environment:
- CF_Token=xxxxxxxxxxx #我这里是 CloudFlare
- CF_Account_ID=xxxxxxxxxxxx #我这里是 CloudFlare
command: daemon
volumes:
- ./acme:/acme.sh
networks:
- lsky_net # 此处为网络设置,无需指定网络可删除
# 图床应用
lsky:
image: wbsu2003/lskypro:latest
container_name: tc_aoliyougei_lsky
restart: always
container_name: lsky
ports:
- 8080:80 #对外映射端口,由于lsky和mariadb 容器处于同一网络内,故mariadb无需指定窗口
volumes:
- ./lsky:/var/www/html # ./ 为当前目录下
networks:
- lsky_net # 此处为网络设置,无需指定网络可删除
mariadb:
image: mariadb
# 映射mariadb容器内存放数据库数据的文件夹
# 其中包含了WordPress的核心数据信息
container_name: mariadb
volumes:
- ./mariadb_data:/var/lib/mysql # ./ 为当前目录下
restart: always
# 下面的环境变量会在数据库数据文件夹已存在时失效
environment:
# root用户的初始密码
MYSQL_ROOT_PASSWORD: password
# 使用的数据库
MYSQL_DATABASE: lsky
# 使用的用户
MYSQL_USER: lsky
# 使用的用户的密码
MYSQL_PASSWORD: lsky
networks:
# 使用自己建立的Docker网络
- lsky_net
# phpmyadmin 管理数据库
phpmyadmin:
container_name: phpmyadmin
depends_on:
- mariadb
image: phpmyadmin
restart: always
environment:
- PMA_HOST=mariadb
- PMA_USER=root
- PMA_PASSWORD=aoliyougei
networks:
# 使用自己建立的Docker网络
- lsky_net # 此处为网络设置,无需指定网络可删除
networks: # 此处为网络设置,无需指定网络可删除
lsky_net: # 此处为网络设置,无需指定网络可删除
启动容器
docker-compose up -d
查看容器状态 此时 nginx 无法启动,因为证书还没有申请
docker ps
为 Lsky Pro 及 phpmyadmin 申请证书
docker exec -it acme.sh acme.sh --issue --server letsencrypt --dns dns_cf -d xxx.xxx.xxx --nginx
docker exec -it acme.sh acme.sh --issue --server letsencrypt --dns dns_cf -d xxxsql.xxx.xxx --nginx
申请成功后重启 docker-compose
docker-compose restart
查看证书续签时间
docker exec -it acme.sh crontab -l
开启 acme.sh 自动更新
docker exec -it acme.sh acme.sh --upgrade --auto-upgrade
由于证书更新后需要重启nginx重启才能识别,所以添加一条定时重启 nginx 容器 的命令
crontab -e
添加为 每天 0点30分 重启nginx
30 0 * * * docker restart nginx
如在云服务器中配置则直接解析域名到IP地址即可访问
如在本地自建DNS服务器则解析IP地址到本地DNS服务器即可访问
如在本机或局域网测试环境直接修改电脑 hosts 文件 解析IP即可访问
二、配置运行
2.1 Lsky Pro 配置
进入 Lsky Pro
设置管理员账号,下一步
2.2 Picgo 配置
下载 Picgo 客户端
进入 GitHub 中 点击 Releases 进入下载对应版本
下拉选择对应电脑系统 进行下载即可
国内用户无法访问 Github 可关注公众号获取
打开 PicGo 客户端
2.3 Lsky Pro 与 PicGo 对接设置
打开 PicGo 客户端 窗口>插件设置>搜索>lsky>安装
提示缺少 node.js 点击 yes 转跳至官网下载
下载安装
Node.js 安装完成后再次安装插件
安装完成后点击设置>配置uploader – lankong(如果没有出现设置按钮 关闭重开即可)
PicGo >插件设置>配置 uploader – lankong >设置相关选项
打开 Lsky Pro 后台>设置>拷贝 Token >黏贴至 PicGo >插件设置>配置 uploader – lankong >Auth Token
暂无评论内容