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

  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 自定义图像

相关推荐
奋发向前wcx2 小时前
y1,y2总复习笔记10 2026.7.24
笔记·哈希算法·散列表
MuMuMu12232 小时前
智慧监测的“火眼金睛”:当AIoT重构环保监管体系
笔记
头发还在的女程序员3 小时前
医院陪诊管理系统怎么选择?——2026 年选型避坑与架构参考
java·开发语言·陪诊系统·陪诊app·医院陪诊陪护
CodeStats4 小时前
【Spring事务】Spring事务注解 @Transactional 完整体系:从 MySQL 隔离级别到 MyBatis 原理详解
java·spring·mybatis·事务·transactional
Cloud云卷云舒4 小时前
智能体长期记忆技术选型分析报告
云原生·ai-native·haishandb
一只小菜鸡..4 小时前
南京大学 操作系统 (JYY) 学习笔记:进程地址空间与内存“外挂”魔法
笔记·学习
我命由我123454 小时前
Android 开发问题:为 PDFView 设置一个带有黑色边框的背景 drawable,但边框没有生效
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
一只小菜鸡..5 小时前
南京大学 操作系统 (JYY) 学习笔记:访问操作系统的对象与“一切皆文件”
笔记·学习
IT二叔5 小时前
Kubernetes(K8s)-01-简介
云原生·容器·kubernetes
都叫我大帅哥6 小时前
从Python到Java:为什么企业级Agent最终会选择Java?
java·ai编程