打造私人云笔记,创造舒适的写作空间

  1. 搭建Minio 图片文件服务器 (树莓派4B搭建Minio+公网云服务器用nps内网穿透)
  2. Typora 安装客户端 --> 可以利用免费gitee管理文档
  3. 利用Typora 图像自定义文件上传功能 + Minio强大的API功能

一、树莓派4B 64bit raspberry 操作系统 + Docker Minio 图片文件服务器 + 公网云服务器用nps内网穿透

1. 安装部署docker容器
shell 复制代码
#官方脚本:会自动检测当前的系统和版本后,安装docker,只需要在联网情况下,耐心等待
sudo curl -fsSL https://get.docker.com | sh

#或者这样安装
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-get update

#查找可用版本
sudo apt-cache madison docker-ce

#安装最新版本
sudo apt-get install docker-ce 

#启动Docker
sudo systemctl start docker

#查看docker启动状态
sudo systemctl status docker

#查看启动中的容器
sudo docker ps

#设置开机自启动
sudo systemctl enable docker.service

#查看docker开机启动状态 enabled:开启, disabled:关闭
sudo systemctl is-enabled docker.service
2. 创建Minio 容器
shell 复制代码
sudo docker run -d -p 11000:9000 -p 11001:9090 \
--net=host \
--name minio \
-e "MINIO_ACCESS_KEY=minioadmin" \
-e "MINIO_SECRET_KEY=minioadmin" \
-v /media/pi/Elements/minio/data:/data \
-v /media/pi/Elements/minio/config:/root/.minio \
minio/minio server \
/data --console-address ":11001" -address ":11000"


# 
sudo docker run -d -p 11000:9000 -p 11001:9090 \
--net=host \
--name minio \
-e "MINIO_ACCESS_KEY=minioadmin" \
-e "MINIO_SECRET_KEY=minioadmin" \
-v /data/minio/data:/data \
-v /data/minio/config:/root/.minio \
minio/minio server \
/data --console-address ":11001" -address ":11000"
3. 公网云服务器用nps内网穿透

公网云服务器部署nps服务

通过内网穿透,配置minio web公网访问

使用账号登陆进入进行web文件上传和浏览测试验证

二、 Typora 安装客户端

安装步骤省略;

利用gitee 进行文件托管

三、利用Typora 图像自定义上传功能 + Minio强大的API功能

文件-->偏好设置

由于Minio 强大SDK 功能,我使用Java maven 依赖minio 的依赖包

xml 复制代码
<dependencies>
  <dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.4.4</version>
  </dependency>
</dependencies>
<build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Java 代码

java 复制代码
public static void main(String[] args) {
    try {
        // 使用MinIO服务器平台、其访问密钥和密钥创建minioClient。
        MinioClient minioClient = MinioClient.builder()
            .endpoint(MinioConfig.ENDPOINT)
            .credentials(MinioConfig.ACCESS_KEY, MinioConfig.SECRET_KEY)
            .build();
        String blogPermalink = args[0];
        if (blogPermalink.length() != 8) {
            System.out.println("唯一id未设置!");
            return;
        }
        // 循环上传图片
        for (int i = 1; i < args.length; i++) {
            String arg = args[i];
            // 生成自定义文件名, 规则为博客唯一链接id_时间戳+随机2位数
            String fileSuffix = arg.substring(arg.lastIndexOf("."));
            String fileName = String.format("%s_%s%02d%s", blogPermalink, LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli(), (int) (Math.random() * 100), fileSuffix);

            String path = String.format("/%s/%s", IMG_DIR, fileName);
            // 上传图片
            minioClient.uploadObject(UploadObjectArgs.builder()
                                     .bucket(MinioConfig.BUCKET)
                                     .object(path)
                                     .filename(arg)
                                     .build());
            // 打印出来的字符会返回给typora
            System.out.println(String.format("%s/%s/%s/%s", MinioConfig.ENDPOINT, MinioConfig.BUCKET, IMG_DIR, fileName));
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        System.exit(0);
    }
}

打包好,放到指定目录下,然后配置typora 自定义图像

相关推荐
ACP广源盛1392462567327 分钟前
硬件选型笔记:国产 PCIe Gen2.1 交换芯片 IX6024@ACP,工控与存量设备国产化改造方案评估
笔记·硬件架构·硬件工程·pcie·国产芯片
哦虎!35 分钟前
【JavaEE】网络初识
java
for_ever_love__1 小时前
MySQL ORDER BY 排序优化:从 Using filesort 到索引有序扫描(含双路 / 单路排序原理)
java·mysql·优化·存储·by·order·filesort
文人sec1 小时前
SQL基础入门笔记 | 从零基础到掌握核心查询语句
数据库·笔记·sql
我是人✓2 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
欣栀♡2 小时前
JVM 频繁 Full GC 先看日志括号里的 cause,jstat 的 FGC 在 JDK 8 上会骗人
java·jvm
IT研究室2 小时前
最新计算机毕业设计选题推荐-基于spring boot的葡萄酒文化宣传网站-网站-文档指导-Java-springboot
java·spring boot·课程设计
慧都小项2 小时前
MyEclipse 中创建和测试 JAX-RS REST 接口:从项目配置到 REST Explorer
java·restful·myeclipse·jax-rs
Wang's Blog2 小时前
Java 项目实战: 交友项目 - 入门案例:编写 Dubbo 服务提供者
java·dubbo·交友
秋饼3 小时前
Spring AI 2.0 结构化输出企业级实战:从 BeanOutputConverter 源码到生产级解析容错
java·ai·技术分享·后端开发