原本自建了一个兰空图床,但是最近折腾服务器的时候不小心给删掉了,导致所有的图片都没了,也是一把辛酸泪泪啊。于是想着给重装下,由于兰空图床最新已经商业化了,我们的需求也不多,就选开源足够了。
最早的安装还是基于php-fpm来的,我看最新的有现成的docker了,所有最新方案就采用docker来安装把。
个人的需求不同,我只是简单记录下我自己的环境安装方式。
贴一个集合lskypro+mysql+nginx的docker-compose.yml配置:
services:
# Lsky Pro 应用程序服务
lskypro:
image: halcyonazure/lsky-pro-docker:latest
restart: unless-stopped
hostname: lskypro
container_name: lskypro
volumes:
- ./lsky-data:/var/www/html
# 'ports' 部分已被移除或注释掉,Nginx 将通过 Docker 网络访问它
# ports:
# - "8089:8089"
networks:
- lsky-net
depends_on:
- mysql-lsky
# MySQL 数据库服务
mysql-lsky:
image: mysql:5.7
restart: unless-stopped
hostname: mysql-lsky
container_name: mysql-lsky
volumes:
- ./mysql-data:/var/lib/mysql
environment:
# 确保这里是你设置的密码
MYSQL_ROOT_PASSWORD: 'your_mysql_root_password'
MYSQL_DATABASE: 'lskypro'
MYSQL_USER: 'lskypro'
MYSQL_PASSWORD: 'your_mysql_user_password'
networks:
- lsky-net
# 新增:Nginx 反向代理服务
nginx-proxy:
image: nginx:latest # 使用官方 Nginx 镜像
restart: unless-stopped
container_name: lsky-nginx-proxy
ports:
# 这是唯一需要暴露给宿主机的端口
# 访问 http://<your-server-ip>:80
- "80:80"
# 如果你配置了 SSL (HTTPS),也请打开 443 端口
# - "443:443"
volumes:
# 挂载你的 Nginx 配置文件
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
# (可选) 挂载 Nginx 日志目录
- ./nginx-logs:/var/log/nginx
# (可选) 如果配置 HTTPS,你需要挂载 SSL 证书
# - ./ssl-certs:/etc/nginx/ssl
networks:
- lsky-net
depends_on:
- lskypro # 确保 Nginx 在 Lsky Pro 启动后再启动
networks:
lsky-net:
lskypro的docker镜像地址:https://hub.docker.com/r/halcyonazure/lsky-pro-docker
Lsky Pro容器安装
由于我已经有很多公共服务docker,比如nginx、mysql这些都是单独的docker容器,因此我使用的docker-compose.yml文件就精简了下
services:
# Lsky Pro 应用程序服务
lskypro:
image: halcyonazure/lsky-pro-docker:latest
restart: unless-stopped
container_name: lskypro
volumes:
- ./lsky/data:/var/www/html
networks:
- shared-net
networks:
shared-net:
external: true
name: service-network1
我的nginx、mysql的容器均位于网络service-network1上,因此lskypro也同样需要位于该网络中,方便容器之间网络互通,这种容器都处于容易个网络,如果该容器不需要外网直连,就不需要再进行端口映射了,因此移除了ports:
配置。
一定要注意的是alcyonazure/lsky-pro-docker
这个docker容器的web端口为8089,我配置的时候没有太注意导致好一段时间来排查,后续我会以nginx配置来进行说明。
下面启动容器
docker-compose up -d
Nginx反代配置
下面贴出nginx配置
upstream lsky-handler {
# 核心:反向代理到 Lsky Pro 容器
# 'lskypro' 是 docker-compose.yml 中定义的服务名(容器名)
# '8089' 是 lskypro 容器内部的端口(来自 halcyonazure/lsky-pro-docker 镜像)
server lskypro:8089;
}
server {
listen 80;
listen [::]:80;
server_name youerdomain.com;
# Enforce HTTPS
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name youerdomain.com;
ssl_certificate /etc/nginx/ssl_certs/youerdomain.com.pem;
ssl_certificate_key /etc/nginx/ssl_certs/youerdomain.com.key;
client_max_body_size 0;
location / {
proxy_pass http://lsky-handler;
# 设置必要的请求头,以便 Lsky Pro 能获取到真实的客户端信息
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;
}
}
重点就是上有server地址http://lskypro:8089,这里的lskypro就是兰空图床的容器名。
Mysql配置
在安装之前需要提前在mysql中新建一个数据库,兰空图床的安装没有新建数据库功能。
Docker环境下的lsky安装配置
安装的时候忘记截配置图了,要记住你的数据库信息,分以下情况
-
如果你的mysql为非docker运行,想使用ip地址连接,就直接填写对应的公网/私网地址
-
如果你的mysql为docker运行,那么建议两者位于同一网络,因为docker容器的ip地址会发生变化,如果指定ip会存在无法访问的风险。
docker运行mysql,记得填写mysql的容器名称到服务器地址中。
下面为安装成功的页面
Picgo配置
方便本地上传图片,另外可以结合其它以下笔记软件实现笔记快速插图。
下载了v2.3.1和v2.3.0的版本,在插件设置里面没法搜索到插件。安装了2.4.0-beta.10正常。
下面为兰空图床的配置,Server配置图床域名即可
Auth token需要使用账号+密码来获取
curl -X POST "https://youerdomain/api/v1/tokens" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"email":"xxx@xxxx.com","password":"xxxxx"}'
获取出来的token需要进行拼接才能用。
Bearer [token]
类似Bearer 3|xxxxxxxxxxxx
。