侧边栏壁纸
博主头像
可乐没气的猫博主等级

四分之一的职业法师|二次元的分享家

  • 累计撰写 12 篇文章
  • 累计创建 6 个标签
  • 累计收到 19 条评论

目 录CONTENT

文章目录

20220305 Docker自建一个永不开裂的图床

可乐没气的猫
2022-03-05 / 0 评论 / 0 点赞 / 3,472 阅读 / 2,936 字

前言
前两篇文章已经介绍过用Docker安装Halo博客以及监控,这篇文章就在此基础上用docker搭建一个永不开裂的图床,撇去随时跑路的公共图床和付费的对象存储。

本站目前采用的实例站点
猫の图床

yopngs简介

一个纯粹的开源图床,聚焦图床核心功能,抛去用户验证、上传限制,自带鉴黄功能
支持鉴黄、支持压缩、支持本地存储、COS存储、OSS存储、B2存储

Github:https://github.com/xpnas/yopngs
Demo:https://yopngs.com/
本篇博客效果如下:
yopngs
上传图片后,有四种链接可以复制,分别是 URL、HTML、UBB、MD。
上传图片

Docker安装

命令行安装(不带鉴黄功能)

docker run --name=yopngs -d -p 8050:80 -d --network halongwiz -v /root/yopngs:/yopngs -v /root/yopngs/yopngs_config:/app/config --restart=always xpnas/yopngs:latest

docker-compose安装(带鉴黄功能)

首先下载docker-compose.yml文件

wget "https://raw.githubusercontent.com/xpnas/yopngs/master/docker-compose.yml" 

然后根据自己的路径挂载和网络进行编辑

version: '2'

services:
  yopngs:  #图床服务
    container_name: yopngs
    restart: always
    image: xpnas/yopngs:latest
    volumes:
      - /root/yopngs:/yopngs
      - /root/yopngs/yopngs_config:/app/config
    ports:
      - "8050:80"
  
  nsfwapi:  #鉴黄服务
    container_name: nsfwapi
    restart: always
    image: eugencepoi/nsfw_api:latest
    environment:
      PORT: 5000
    ports:
      - "8030:5000"

networks:
  default:
    external:
      name: halongwiz

执行命令,拉起图床和鉴黄服务

docker-compose up -d

这个时候查看已安装完成的docker服务

docker ps -a
CONTAINER ID   IMAGE                                COMMAND                  CREATED        STATUS                PORTS                                            NAMES
050b22e0ba3b   eugencepoi/nsfw_api:latest           "/bin/sh -c 'gunicor…"   12 hours ago   Up 12 hours           0.0.0.0:8030->5000/tcp                           nsfwapi
7e328136a8a2   xpnas/yopngs:latest                  "dotnet yopngs.dll"      12 hours ago   Up 10 hours           443/tcp, 0.0.0.0:8050->80/tcp                    yopngs

配置Nginx代理

server {
    listen      80;
    server_name pics.findmyfun.xyz;
    return 301 https://$server_name$request_uri;
}
server {
    listen       443 ssl;
    server_name  pics.findmyfun.xyz;
    ...
    client_max_body_size 1024m;
    location / {
            proxy_pass http://yopngs;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection keep-alive;
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
    }
}

配置存储源

所有配置都在config目录下的setting.json文件,可参照defaultsetting.json修改,本篇博客主要用到下面的配置。

本地存储

DISKStores节点,支持多个,可使用docker启动命令映射Rclone挂载的磁盘

"DISKStores": [
    {
      "diskfloder": "/yopngs",//本地目录,docker请做映射
      "webfloder": "/v2",//url目录,如https://pics.findmyfun.xyz/v2/2022/03/05/xxx.png
      "name": "findmyfun",//主界面下拉显示名称,随意填写
      "type": "findmyfun",//内部类型,随意填写
      "index": 0,//主界面下拉排序,越小越优先
      "active": true//是否激活
    },

腾讯COS存储

COSStores节点,支持多个

"COSStores": [
    {
      "region": "ap-tokyo",
      "bucket": "findpics-1309390030",
      "SECRET_ID": "xxxxxx",
      "SECRET_KEY": "xxxxxx",
      "Domain": "https://pics.findmyfun.xyz",
      "name": "COS",
      "type": "COS",
      "index": 1,
      "active": false
    }
  ],

其他设置

"GLOBAL": {
    "SIZELIMIT": 30,//图片大小
    "EXTLIMIT": ".WEBP.PNG.GIF.JPG.JPEG.BMP",//类型限制
    "NSFW": true,//鉴黄开关
    "NSFWCORE": 0.5,//鉴黄分数0~1
    "NSFWHOST": "http://nsfwapi:5000",//请勿修改
    "SERVERHOST": "http://yopngs:80",//请勿修改
    "COMPRESS": false,//是否启用压缩
    "COUNT": 0,
    "STARTDATE": "2020.01.01"
  },
0

评论区