原本自建了一个兰空图床,但是最近折腾服务器的时候不小心给删掉了,导致所有的图片都没了,也是一把辛酸泪泪啊。于是想着给重装下,由于兰空图床最新已经商业化了,我们的需求也不多,就选开源足够了。

最早的安装还是基于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

最后修改:2025 年 10 月 21 日 01 : 01 PM