Skip to content

Latest commit

History

214 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

North

North

version: v1.1.4 (shields.io)version: v1.0.0 (shields.io)version: v1.0.0 (shields.io)

Recent Progress

  1. 用户登录授权系统

    image-20221202212357589

  2. 全新风格 UI

    image-20221202212640017

  3. 插件化开发

    image-20221202212734313

    插件上下文结构

  4. 其他

    • 支持 docker 部署
    • 可视化安装、迁移
    • 支持用户组策略、图片权限设置
    • 多数据库支持(MySql、SQL Server、Oracle、Sqlite、PostgreSQL、……)
    • ……

Background

图床可以把图片转为链接,从而方便我们书写、分享博客,目前图床主要分为以下几类

  • 利用 Git 仓库存储
  • 对象存储(OSS、COS、七牛云等)
  • 免费公共图床(SM.MS、聚合图床、ImgTP、Postimage等)

但上述图床都有些不尽人意

  • 公共图床的稳定性未知,往往会开启审查机制、限制上传图片的尺寸
  • Github 国内访问速度堪忧,并且官方明令禁止将 GithubGitee 仓库作为图床
  • 对象存储的容量和访问速度还不错,但流量较贵

图床服务并不需要高性能的服务器去承载,现在云服务器的价格也并不昂贵,因此搭建个人图床也许是不错的选择。出于这样的想法,作者设计了 ImageBed 以供大家快速搭建个人图床服务。

Feature

  • 剪贴板图片上传、链接自动复制
  • 可视化图片管理
  • 安全可靠,图片完全存储在主机
  • 无图片尺寸、数量、带宽限制(取决于环境)
  • 跨平台,可在 windowsLinuxMacOS 部署

Install

Requirement

All Release

在这里可快速选择适合自己的版本,表格中的格式为 "最小版本/ 推荐版本"

功 能ImageBed 版本picgo-plugin-imagebed版本
图片上传与下载v1.0.0 / v1.1.4v1.1.1
图库管理v2.0.0 / v2.2.13
自动更新v2.3.14 / v2.3.14

本地搭建

版本: Windows 11 家庭中文版 (21H2)

  1. 前往 ImageBed主页 下载资源包

    image-20220506144854125

  2. 解压资源包 (图片存储路径为 Data/Resources/Images)

    Z62J08FN

  3. 双击 ImageBed.exe 运行服务

    V6X4644N

  4. 浏览器地址栏输入 localhost:12121

    8PD0X4VR

  5. 点击上传图片

    RJ6V26VJ

    F4TNFTTD

  6. 安装完成

云服务器搭建

版本: Ubuntu 18.04.4 LTS(GNU/Linux 4.15.0-159-generic x86_64)

  1. 将资源包解压后上传至云服务器

    08HLTD88

  2. 进入 ImageBed 文件夹,运行 ImageBed.dll

    nohup dotnet ImageBed.dll &

    该命令会在后台运行 ImageBed.dll,若要关闭 ImageBed 服务,需要先查询 ImageBed 服务的 pid,之后用 kill 命令关闭

    # 查询ImageBed服务pid
    ps -ef | grep dotnet
    # pid为4363
    ubuntu 4363 1636 0 19:32 pts/0 00:00:01 dotnet ImageBed.dll
    ubuntu 31389 30239 0 21:47 pts/2 00:00:00 grep --color=auto dotnet
    # 关闭ImageBed服务
    ubuntu@VM-0-16-ubuntu:~$ sudo kill 4363
  3. 浏览器地址栏输入 {ip}:12121 即可访问图床服务,其中 {ip} 为云服务器公网 ip

  4. 安装完成

Nginx 反向代理

反向代理概念、原理、功能请 移步,这里不再赘述。下面主要叙述如何在 Linux 上搭建 Nginx 反相代理

  1. 安装 nginx

    sudo apt-get install nginx
  2. 打开 /etc/nginx/nginx.conf,修改相关设置

    user www-data;worker_processes auto;pid /run/nginx.pid;include /etc/nginx/modules-enabled/*.conf;events{worker_connections768;}http{sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout65;types_hash_max_size20480;include /etc/nginx/mime.types;default_type application/octet-stream;ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;access_log /var/log/nginx/access.log;error_log /var/log/nginx/error.log;gzip on;map$http_connection$connection_upgrade{"~*Upgrade"$http_connection;
    default keep-alive;} # ========================== 重点看这里========================server{listen80;server_name xxx.xxx.xxx.xxx; # 云服务器公网ip (或域名)location / {client_max_body_size100m; # html报文尺寸限制
    proxy_passhttp://127.0.0.1:12121; # Configuration for WebSocketsproxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $connection_upgrade;proxy_cache off; # WebSockets were implemented after http/1.0proxy_http_version 1.1; # Configuration for ServerSentEventsproxy_buffering off; # Configuration for LongPolling or if your KeepAliveInterval is longer than 60 secondsproxy_read_timeout100s;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}}include /etc/nginx/conf.d/*.conf;include /etc/nginx/sites-enabled/*;}
  3. 检查 nginx.conf 语法是否正确

    sudo nginx -t

    若格式正确则输出

    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
  4. 关闭防火墙并重新加载 nginx

    sudo systemctl stop firewalld
    sudo systemctl start girewalld
    sudo firewall-cmd --reload
    sudo nginx -s reload

Usage

上传

web 界面上传

web界面上传

剪贴板上传

剪贴板上传

删除

删除图片

导入导出

导入图片

导入图片

导出图片

导出图片

视图切换

视图切换

API

该图床服务器包含三个API(上传、下载、删除),控制器为 Controllers/ImageController

上传图片

HTTPPOST /api/image

Body 请求参数 Form-data

参数名类型必填说明
*[file]图片文件

返回参数 JSON最外层结构为: Object

参数名类型必含说明
statusCode[int]状态码
message[string]提示信息
res[array]图片链接

下载图片

HTTPGET /api/image/{imageName}

REST参数

参数名类型必填说明
imageName[string]图片名称

返回参数 Binary

图片文件

删除图片

HTTPDELETE /api/image/{imageName}

REST参数

参数名类型必填说明
imageName[string]图片名称

返回参数 JSON最外层结构为: Object

参数名类型必含说明
statusCode[int]状态码
message[string]提示信息
res[object]恒为null

Q & A

S1. 局域网用户如何上传图片?

局域网内用户在浏览器输入 {ip}:12121 即可访问图床服务器,其中 {ip} 为服务器的 局域网IP

S2. 如何对接Picgo?

PicGo 是一款图床管理软件,支持多种图床。使用 picgo 可大大简化我们上传图片的流程,笔者在此开发了 picgo 插件 picgo-plugin-imagebed 以供大家使用

S3. 导入图片压缩包无响应?

请尝试直接压缩图片,而不是包含图片的文件夹

S4. 通知设置中的邮箱授权码如何获取?

请移步 这里

Star History Chart

About

一个易于搭建的图床服务

Topics

Resources

Stars

144 stars

Watchers

3 watching

Forks

Releases

Contributors

Languages