V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nihaorz
V2EX  ›  分享发现

[自建图床解决方案分享] lsky + 阿里云盘 + webdav

  •  
  •   nihaorz · 2022-08-31 17:17:45 +08:00 · 3439 次点击
    这是一个创建于 850 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一直在 cnblogs 写博客(更多是转发记录一些大神的解决问题过程),习惯把文章的图片一张张抠下来再上传,效率太低了,实践了一下 typora+picgo 自动上传 http 图片替换成自己图床的地址。

    实践一下 github 、gitee 、jihulab 和七牛云作为图片存储后端:

    • github 时不时被墙

    • gitee 提示我是图床应用,不给我公开权限

    • jihulab 直接说我的图片由于法律原因不给显示

    • 七牛有限额

    遂想到了把自己的公网 ip 和软路由利用起来

    1 、docker 容器把 aliyundrive-webdav 跑起来,开启用户认证,指定根目录

    2 、再跑一个 lsky-pro ,创建一个新的存储策略,对接上一步的 webdav ,将用户的存储策略改成 webdav

    3 、再跑一个 webdav ,这个 webdav 关闭用户认证和自动索引,存储策略的访问域名改成这个新的 webdav ,这样以后上传图片直接返回的就是无需认证的 webdav 地址了

    4 、picgo 装 lankong 插件配置,picgo 和 typora 一顿配置猛如虎,好像插入图片会自动上传并替换成图床地址了

    总结

    1 、一套部署下来比较麻烦,还要跑一个数据库( lsky 支持 sqlite ,然而我没跑起来)

    2 、需要自己有公网 IP 加服务端设备

    3 、不知阿里云盘会不会屏蔽图片,tg 上分享的热门电影可是很容易被屏蔽的

    收获

    1 、dockerhub 上找到 halcyonazure/lsky-pro-docker 镜像,使用挺简单,就是没有 arm 架构的镜像,fork 了一把源码,恶补了一下 github actions ,搞出了自己的 arm 架构镜像

    2 、typora 结合 picgo 终于可以愉快的抠图了

    3 、发现我的壁纸,收藏的插画可以愉快的安家了,lsky 后端管理预览效果还不错,还有高级搜索,我在 picgo 的 lankong 插件配置了一个小号来做图片上传,写作图片和我的收藏的插画互不干扰

    4 、最后收获凌晨两点睡觉

    13 条回复    2022-09-03 17:21:22 +08:00
    wonderfulcxm
        1
    wonderfulcxm  
       2022-08-31 17:20:20 +08:00 via iPhone
    lsky-pro-docker 的 arm 镜像可以分享一下吗?我也想在 n1 上整一套
    AllenHua
        2
    AllenHua  
       2022-08-31 17:23:26 +08:00
    借贵楼推荐我写的兰空图床 PicGo 插件: https://github.com/hellodk34/picgo-plugin-lankong

    以及同时支持 amd64 和 arm64 的 docker 镜像: https://hub.docker.com/r/dko0/lsky-pro

    @wonderfulcxm 可以看看我的
    nihaorz
        3
    nihaorz  
    OP
       2022-08-31 17:25:04 +08:00
    @wonderfulcxm
    docker pull wangrui027/lsky-pro ,我这个是 arm64 架构的镜像,你看一下 n1 跑不跑的起来,跑不起来我再加几个低版本的 arm 架构镜像( github actions 构建镜像比较慢,可能内容比较多吧,所以我只构建了 x86 和 arm64 架构)
    AllenHua
        4
    AllenHua  
       2022-08-31 17:26:15 +08:00
    @wonderfulcxm #1 我的 N1 上也跑着一个 lsky pro ,建议安装 mysql 8 了,我的原文还是拿 5.7 举例的。
    nihaorz
        5
    nihaorz  
    OP
       2022-08-31 17:26:33 +08:00
    @AllenHua 我用的就是你这个插件,感谢大佬的辛苦劳动啊
    AllenHua
        6
    AllenHua  
       2022-08-31 17:29:30 +08:00
    @nihaorz #5 不客气不客气。我也是受益者。

    另外这不是有嘛,在 docker hub 上搜,能搜到我构建的支持 arm64 的镜像

    ![6151888189e7c32a8e42529941b56b5f.jpg]( https://img.gejiba.com/images/6151888189e7c32a8e42529941b56b5f.jpg)
    nihaorz
        7
    nihaorz  
    OP
       2022-08-31 17:36:11 +08:00   ❤️ 1
    @AllenHua 收到,可以愉快的玩耍了
    muhahaha
        8
    muhahaha  
       2022-09-03 15:45:05 +08:00
    @AllenHua 感谢大佬写的插件!不知道能否提个需求,就是可以不可以支持 http 的接口连接?
    AllenHua
        9
    AllenHua  
       2022-09-03 16:05:14 +08:00
    @muhahaha #8 我的图床也是搭建在内网的,Server 那里使用内网的 http 形式的 ip + port ,也是能成功上传的啊。不太清楚你的具体需求是什么,http 的接口连接?不就是 http://192.168.2.178:7791 这样子么
    muhahaha
        10
    muhahaha  
       2022-09-03 16:15:56 +08:00
    @AllenHua 感谢回复!我 server 也是用的这个形式,但是上传图片提示:

    2022-09-03 16:14:13 [PicGo ERROR]
    ------Error Stack Begin------
    RequestError: TypeError [ERR_INVALID_PROTOCOL]: Protocol "http:" not supported. Expected "https:"
    AllenHua
        11
    AllenHua  
       2022-09-03 17:05:14 +08:00
    @muhahaha #10 你把 ignore certificate error 关掉试试看,我刚试了下打开时遇到了同样错误。这个开关是给 letsencrypt 有效期只有三个月的证书(可能还有其他)的图床网站服务的,使用了一个 http agent 代理请求忽略了证书错误。关掉就好了。
    AllenHua
        12
    AllenHua  
       2022-09-03 17:08:20 +08:00
    @muhahaha #10 这个开关,非必要别打开,打开是为了解决 certificate has expired 的问题,但是会降低 http 请求的效率,单个请求可能没什么,同时进行几十万个请求时时间上的差异是很明显的。
    muhahaha
        13
    muhahaha  
       2022-09-03 17:21:22 +08:00   ❤️ 1
    @AllenHua 感谢!确实是这个问题,目前已经解决!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   975 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 20:03 · PVG 04:03 · LAX 12:03 · JFK 15:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.