- 搭建Minio 图片文件服务器 (树莓派4B搭建Minio+公网云服务器用nps内网穿透)
- Typora 安装客户端 --> 可以利用免费gitee管理文档
- 利用Typora 图像自定义文件上传功能 + Minio强大的API功能
一、树莓派4B 64bit raspberry 操作系统 + Docker Minio 图片文件服务器 + 公网云服务器用nps内网穿透
1. 安装部署docker容器
#官方脚本:会自动检测当前的系统和版本后,安装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 容器
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 的依赖包
<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 代码
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 自定义图像