图像和视频上传平台Share Me

news2024/10/6 4:06:07

在这里插入图片描述

本文完成于 6 月,所以反代中,域名演示还是使用的 laosu.ml,不过版本并没有什么变化;

什么是 Share Me ?

Share Me 是使用 Next.jsPocketBase 的自托管图像和视频上传平台,具有丰富的嵌入支持和 API,是 Imgur 的开源替代品。

什么是 PocketBase ?

PocketBase 是一个开源后端,由具有数据验证、实时订阅和易于使用的 REST API 的嵌入式 SQLite 数据库组成。 它还为媒体文件提供身份验证和文件存储。

PocketBase 之前在『 局域网唤醒工具UpSnap 』 一文中曾经提到过

命令行安装

在群晖上以 Docker 方式安装。

下载镜像

官方最新的镜像发布到了 ghcr.io,从版本看,目前最新的 latest 版本对应的是 0.27.0

在这里插入图片描述

SSH 客户端登录到群晖后,执行下面的命令拉取镜像

# 拉取服务端镜像
docker pull ghcr.io/dan6erbond/share-me-server:latest

# 拉取前端镜像
docker pull ghcr.io/dan6erbond/share-me-frontend:latest

如果没有科学上网,很可能会拉不动,可以试试 docker 代理网站:https://dockerproxy.com/,但是会多几个步骤

# ---拉取服务端镜像---
## 如果拉不动的话加个代理
docker pull ghcr.dockerproxy.com/dan6erbond/share-me-server:latest

## 重命名镜像(如果是通过代理下载的)
docker tag ghcr.dockerproxy.com/dan6erbond/share-me-server:latest ghcr.io/dan6erbond/share-me-server:latest

## 删除代理镜像(如果是通过代理下载的)
docker rmi ghcr.dockerproxy.com/dan6erbond/share-me-server:latest

# ---拉取前端镜像---
## 如果拉不动的话加个代理
docker pull ghcr.dockerproxy.com/dan6erbond/share-me-frontend:latest

## 重命名镜像(如果是通过代理下载的)
docker tag ghcr.dockerproxy.com/dan6erbond/share-me-frontend:latest ghcr.io/dan6erbond/share-me-frontend:latest

## 删除代理镜像(如果是通过代理下载的)
docker rmi ghcr.dockerproxy.com/dan6erbond/share-me-frontend:latest

反向代理

既然是当图床,当然是要从公网访问的,老苏还是采用了 npm 来实现反向代理

主机设置

Custom locations 中通过 Add location 增加子路径,将其转发给服务端

SSL 证书可以都勾上

docker cli 安装

现在可以开始运行容器了

# 新建文件夹 shareme 及子目录
mkdir -p /volume1/docker/shareme/data

# 进入 shareme 目录
cd /volume1/docker/shareme

# 运行服务端容器
docker run -d \
    --restart unless-stopped \
    --name sm-server \
    -p 3121:8080 \
    -v $(pwd)/data:/pb/pb_data \
    ghcr.io/dan6erbond/share-me-server:latest

# 运行前端容器
docker run -d \
    --restart unless-stopped \
    --name sm-web \
    -p 3122:3000 \
    -e POCKETBASE_URL=https://shareme.laosu.ml \
    ghcr.io/dan6erbond/share-me-frontend:latest

docker-compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: "3"

services:
  server:
    image: ghcr.io/dan6erbond/share-me-server:latest
    container_name: sm-server
    restart: unless-stopped
    ports:
      - 3121:8080
    volumes:
      - ./data:/pb/pb_data

  frontend:
    image: ghcr.io/dan6erbond/share-me-frontend:latest
    container_name: sm-web
    restart: unless-stopped
    ports:
      - 3122:3000
    environment:
      POCKETBASE_URL: https://shareme.laosu.ml

然后执行下面的命令

# 新建文件夹 shareme 及子目录
mkdir -p /volume1/docker/shareme/data

# 进入 shareme 目录
cd /volume1/docker/shareme

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

后台

在浏览器中输入 https://shareme.laosu.ml/_/,会看到登录界面

需注册登录

  1. 这是后台 PocketBase 的账号;
  2. 密码不能少于 10 个字符;

在这里插入图片描述

因为 Share Me 的文件是通过 PocketBase 上传的,因此可以在 PocketBase 管理 UI 中配置它们的限制,否则上传图片时,会遇到错误

Collections --> files --> Settings

点后面的小齿轮,默认 Max file size0

在这里插入图片描述

假设最大 1G为例,要填入 1073741824,因为这里只能是 bytes

在这里插入图片描述

前端

在浏览器中输入 http://群晖IP:3122 就能看到主界面

Sign Up 注册账号

  1. 这是后台 Share Me 的账号;
  2. 密码似乎不能少于 8 个字符,但没有任何提示;

登录成功后,点 Post 上传图片

  • ① 图片的标题;
  • ② 可以将图片拖拽到这个区域上传;
  • ③ 图片是否为公开展示的;
  • NSFW 表示不适合在工作场所或者公共场所查看的内容;

在这里插入图片描述

上传成功后,还可以添加描述(Description)和标签 Tags

回到首页

集成

【备注】:本章节的内容,老苏未测试;

从官方文档 https://dan6erbond.github.io/share-me/integrations/api-keys 看,Share Me 允许用户使用 API Key 通过其 API 创建自定义集成,官方举的例子第三方客户端 ShareX

在这里插入图片描述

API Key 只有第一次会显示,每个 Key 可以禁用,也可以设置过期时间

ShareX 在『 轻量级文件管理器XBackBone 』一文中介绍过,这里就略过了

官方提供了 SXCU 文件的示例,按自己的域名和 API Key 修改之后,导入 ShareX 应该就可以了

{
  "Version": "15.0.0",
  "Name": "Share Me",
  "DestinationType": "ImageUploader",
  "RequestMethod": "POST",
  "RequestURL": "https://share-me.example.com/api/posts",
  "Headers": {
    "Accept": "*/*",
    "Authorization": "Bearer <ApiKey>"
  },
  "Body": "MultipartFormData",
  "FileFormName": "files",
  "URL": "https://share-me.example.com/posts/{json:id}"
}

参考文档

Dan6erbond/share-me: An image and video hosting platform for your server, with rich embed support and API.
地址:https://github.com/Dan6erbond/share-me

Share Me
地址:https://dan6erbond.github.io/share-me/

Visiting logged in user’s settings or profile logs them out · Issue #42 · Dan6erbond/share-me
地址:https://github.com/Dan6erbond/share-me/issues/42

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1063253.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Java的高校宿舍管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

【C++】unordered_map和unordered_set

哈希表 1. unordered_map1.1 概念1.2 常见接口 2. unordered_set2.1 概念2.1 常见接口 3. 底层实现3.1 哈希3.2 哈希函数3.3 闭散列和开散列3.3.1 闭散列3.3.2 开散列 3.4 模拟实现3.4.1 改造哈希桶3.4.2 模拟实现unordered_set3.4.3 模拟实现unordered_map 在C11中&#xff0c…

Promise, async, await 学习

异步编程简介&#xff1a; 介绍&#xff1a;异步编程是一种编程范式&#xff0c;旨在提高程序的性能和响应能力。该模型允许程序在执行某些任务时&#xff0c;不必等待这些任务完成就可以进行下一步操作&#xff0c;从而提高了程序的效率。 作用&#xff1a;异步编程通常用于…

IPT2602协议-USB 快速充电端口控制器

产品描述&#xff1a; IPT2602是一款USB端口快速充电协议控制芯片。IPT2602智能识别多种快速充电协议&#xff0c;对手机等受电设备进行快速充电。IPT2602根据受电设备发送的电压请求能够精确的调整VBUS输出电压&#xff0c;从而实现快速充电。 IPT2602在调整5V输出电压前会自动…

10.5 认识XEDParse汇编引擎

XEDParse 是一款开源的x86指令编码库&#xff0c;该库用于将MASM语法的汇编指令级转换为对等的机器码&#xff0c;并以XED格式输出&#xff0c;目前该库支持x86、x64平台下的汇编编码&#xff0c;XEDParse的特点是高效、准确、易于使用&#xff0c;它可以良好地处理各种类型的指…

[硬件基础]-快速了解RS232串行通信

快速了解RS232串行通信 文章目录 快速了解RS232串行通信1、概述2、什么是串行数据通信&#xff1f;3、什么是RS232&#xff1f;4、RS232应用5、RS232如何工作&#xff1f;6、RS232协议基础6.1 电压与逻辑表示6.2 数据编码6.3 起始位和停止位6.4 奇偶校验位6.5 波特率6.5 RS232电…

掌握 SwiftUI 中的 ScrollView

文章目录 前言scrollTransition 修饰符ScrollTransitionPhase弹性动画总结 前言 SwiftUI 框架的第五个版本引入了许多与 ScrollView 相关的新 API&#xff0c;使其比以前更强大。本周将开始介绍 ScrollView 在 SwiftUI 中的新功能系列文章&#xff0c;首先我们将讨论滚动过渡。…

【LeetCode: 918. 环形子数组的最大和 | 动态规划】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

关联规则挖掘(上):数据分析 | 数据挖掘 | 十大算法之一

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

【全方位带你配置yolo开发环境】快速上手yolov5

本文用于记录yolo开发环境的配置&#xff0c;以及我在配置中出现的各种问题&#xff0c;以供大伙参考。&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; 本人持续分享更多关于电子通信专业内容以及嵌入式和单片机的知识…

阿里云服务器ECS详细介绍_云主机_服务器托管_弹性计算

阿里云服务器ECS英文全程Elastic Compute Service&#xff0c;云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务&#xff0c;阿里云提供多种云服务器ECS实例规格&#xff0c;如经济型e实例、通用算力型u1、ECS计算型c7、通用型g7、GPU实例等&#xff0c;阿里云服务器网分享阿…

使用css制作3D盒子,目的是把盒子并列制作成3D货架

1. 首先看效果&#xff08;第一个五颜六色的是透明多个面&#xff0c;第2-3都是只有3个面是我实际需要的&#xff0c;右边的有3个并列的正方体与3个并列的长方体&#xff09;&#xff1a; 长方体与正方体&#xff0c;所有代码&#xff1a; <!DOCTYPE html> <html lan…

汽车网络安全--安全芯片应用场景解析

​在聊汽车网络安全时,最先想到的就是使用芯片内置HSM,比如说英飞凌TC2xx系列的HSM、瑞萨RH850的ICU、NXP的HSE等等;实际上除了内置HSM,还有外置HSM(通过UART、SPI等通信)、安全存储芯片等等。而这些芯片统称为安全芯片。 安全芯片的主要作用是为整个系统建立起一个可信的…

【Java】类和接口的区别

1. 类和类的继承关系&#xff08;一个类只能单继承一个父类&#xff0c;不能继承n多个不同的父类&#xff09; 继承关系&#xff0c;只能单继承&#xff0c;但可以多层继承 2. 类和接口的实现关系&#xff08;一个类可以实现n多个不同的接口&#xff09; 实现关系&#xff0c;可…

【QT开发笔记-基础篇】| 第四章 事件QEvent | 4.4 鼠标按下、移动、释放事件

本章要实现的整体效果如下&#xff1a; QEvent::MouseButtonPress ​ 鼠标按下时&#xff0c;触发该事件&#xff0c;它对应的子类是 QMouseEvent QEvent::MouseMove ​ 鼠标移动时&#xff0c;触发该事件&#xff0c;它对应的子类是 QMouseEvent QEvent::MouseButtonRel…

golang gin框架1——简单案例以及api版本控制

gin框架 gin是golang的一个后台WEB框架 简单案例 package mainimport ("github.com/gin-gonic/gin""net/http" )func main() {r : gin.Default()r.GET("/ping", func(c *gin.Context) {//以json形式输出&#xff0c;还可以xml protobufc.JSON…

网络安全黑客究竟是什么?

“网络安全”是指任何活动旨在保护您的网络和数据的可用性和完整性。它包括硬件和软件技术。有效的网络安全管理对网络的访问。它针对的是一种不同的威胁,阻止他们进入或在您的网络传播。 网络安全是如何工作的呢? 网络安全结合多层防御的优势和网络。每个网络安全层实现政策…

前端TypeScript学习day01-TS介绍与TS常用类型

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 TypeScript 介绍 TypeScript 是什么 TypeScript 为什么要为 JS 添加类型支持&#xff1f; TypeScript 相…

【Redis】基础数据结构-quicklist

Redis List 在Redis3.2版之前&#xff0c;Redis使用压缩列表和双向链表作为List的底层实现。当元素个数比较少并且元素长度比较小时&#xff0c;Redis使用压缩列表实现&#xff0c;否则Redis使用双向链表实现。 ziplist存在问题 不能保存过多的元素&#xff0c;否则查找复杂度…

vue-devtools插件安装

拓展程序连接 链接&#xff1a;https://pan.baidu.com/s/1tEyZJUCEK_PHPGhU_cu_MQ?pwdr2cj 提取码&#xff1a;r2cj 一、打开谷歌浏览器&#xff0c;点击扩展程序-管理扩展程序 二、打开开发者模式&#xff0c;将vue-devtools.crx 拖入页面&#xff0c;点击添加扩展程序 成…