1. 安装说明
  2. 安装docker及docker-compose
  3. 部署完整版聚合图床
  4. 部署转发版聚合图床
  5. 配置nginx
安装说明

完整版及转发版部署均需授权,授权价格请参考会员服务

安装docker

以root用户执行以下命令:

curl https://get.docker.com/ | sh        # 安装docker
curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose   # 安装docker-compose
systemctl start docker                   # 启动docker
systemctl enable docker                  # 开机启动docker
部署完整版聚合图床

首先提供一个docker-compose.yml

version: '3.3'
services:
  mongo:
    image: mongo
    container_name: superbed_mongo
    restart: always
    privileged: true
    volumes:
      - ./mongodb:/data/db

  redis:
    image: redis
    container_name: superbed_redis
    restart: always
    privileged: true
    volumes:
      - ./redisdb:/data

  rabbitmq:
    image: rabbitmq:management
    container_name: superbed_rabbitmq
    restart: always
    privileged: true
    ports:
      - 15672:15672

  superbed:
    image: zkdfbb/superbed
    container_name: superbed
    restart: on-failure
    privileged: true
    depends_on:
      - mongo
      - redis
      - rabbitmq
    ports:
      - 8000:8000
      - 8001:8001
      - 8002:8002
    env_file:
      - config.env
    volumes:
      - ./images:/app/static/images

  nginx:
    image: nginx
    container_name: nginx
    restart: always
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./nginx:/etc/nginx/conf.d
      - ./acme.sh:/acme.sh

再提供一个config.env,配置环境变量

INDEX=true                         # 启动前端页面
PIPELINE=true                      # 启动后端上传
TOKEN=                             # 您的token
ADDRESS=http://192.168.1.1:8000    # 网站的地址,可以是域名或者公网ip+端口
ENDPOINTS=alicdn,sohu,qq           # 默认上传的图床,用逗号分隔
PROCESS=3                          # 前端多进程部署,容器内端口分别为8000,8001,8002...
RETRIES=3                          # 上传失败重试次数
WORKERS=50                         # 后端异步上传工作协程数
ADMIN_USER=admin                   # 创建的管理员的账号
ADMIN_PWD=123456                   # 管理员密码
ADMIN_EMAIL=admin@163.com          # 管理员的邮箱
REGISTER=false                     # 是否需要注册才能上传,如果是,需要提供以下信息
EMAIL_SENDER=                      # 用户注册时,用来发送注册验证码的邮箱
EMAIL_SMTP=                        # 邮箱SMTP地址
EMAIL_USER=                        # 邮箱smtp用户名
EMAIL_PWD=                         # 邮箱smtp密码

目前开放支持以下图床,后续会持续增加新图床。

alicdn
sohu
qq
jd
sogou
baidu
qihu
juejin
smms
uploadcc
vimcn
catbox

这两个文件都写完之后,在当前目录使用 docker-compose up -d,等待安装完成,过几秒钟就可以直接用 ip+端口访问了,如果 ADDRESS 是域名,则需要自己配置 nginx 转发,转发的地址是 127.0.0.1:8000,如果 8000 端口已经被占用,则修改一下 docker-compose.yml:

ports:
    - 8010:8000  # 将 8000 端口换位 8010 端口
部署转发版聚合图床

部署转发版聚合图床和完整版方式基本一致,只需要修改config.env如下(只有INDEX=true这一行):

INDEX=true                         # 启动前端页面

然后在聚合图床的用户中心-自定义跳转链接中填上您的域名即可。

如果您网站流量比较大,可以在多个机器上部署转发版,使用不同的前缀,如https://pic1.superbed.cn, https://pic2.superbed.cn, https://pic3.superbed.cn等,然后分别在不同的机器上部署(每个机器使用一个域名),然后在用户中心-自定义跳转链接中填写多个地址,填写规则如下:

https://pic1.superbed.cn#5,https://pic2.superbed.cn#1,https://pic3.superbed.cn#2

其中#后面的数字为不同服务器的带宽,如pic1这台服务器为5Mbps,pic2这台服务器为1Mbps,pic3这台服务器为2Mbps,后台将会根据不同的带宽,在上传时按照比例来返回跳转链接,当然同一个图片id,使用任一跳转链接都是可以访问的。

配置nginx

如果使用自定义域名,上面的docker-compose.yml已经集成了nginx。如果您还没有安装nginx,可以直接使用,仅需提供一个superbed.conf

upstream tuchuang_backend {
    server superbed:8000;
    server superbed:8001;
    server superbed:8002;
    keepalive 16;
}

server {
    listen 80;
    server_name www.superbed.cn;

    proxy_set_header        Host            $host;
    proxy_set_header        X-Real-IP       $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

    location / {
        add_header  X-Frame-Options "DENY";
        add_header  Strict-Transport-Security "max-age=86400; includeSubDomains";
        proxy_pass  http://tuchuang_backend;
    }
}

如果要使用https,参考配置如下

upstream tuchuang_backend {
    server superbed:8000;
    server superbed:8001;
    server superbed:8002;
    keepalive 16;
}

server {
    listen 80;
    server_name www.superbed.cn;

    location / {
        rewrite ^/(.*)\$  https://www.superbed.cn/\$1;
    }
}

server {
    listen 443;
    server_name www.superbed.cn;

    ssl on;
    ssl_certificate  /opt/openresty/nginx/keys/www.superbed.cn.crt;
    ssl_certificate_key  /opt/openresty/nginx/keys/www.superbed.cn.key;

    proxy_set_header        Host            $host;
    proxy_set_header        X-Real-IP       $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

    location / {
        add_header  X-Frame-Options "DENY";
        add_header  Strict-Transport-Security "max-age=86400; includeSubDomains";
        proxy_pass  http://tuchuang_backend;
    }
}

如果您已安装nginx,则需要自行拷贝配置然后重新加载。