当前位置: 首页 > news >正文

轻博客Plume的搭建

在这里插入图片描述

什么是 Plume ?

Plume 是一个基于 ActivityPub 的联合博客引擎。它是用 Rust 编写的,带有 Rocket 框架,以及 Diesel 与数据库交互。前端使用 Ructe模板、WASMSCSS

反向代理

假设我们实际访问地址为: https://plume.laosu.ml:444

域名局域网地址备注
plume.laosu.mlhttp://192.168.0.197:7879plume 的访问地址

npm 中的设置

在这里插入图片描述

SSL 都勾选了

在这里插入图片描述

命令行安装

.env.txt 文件

将下面的内容保存为 .env.txt 文件

基于官方 https://docs.joinplu.me/docker.sample.env 修改

BASE_URL=plume.laosu.ml:444
USE_HTTPS=1# generate one with openssl rand -base64 32
ROCKET_SECRET_KEY=9gpVFbpgyvkzq/Miz1euBAze8CeRzxzmYoYD5XBA2k8=
ROCKET_ADDRESS=0.0.0.0
ROCKET_PORT=7878# Mail settings
MAIL_SERVER=smtp.88.com
MAIL_PORT=465
MAIL_USER=wbsu2003@88.com
MAIL_PASSWORD=<第三方邮件客户端专用密码>
MAIL_HELO_NAME=laosu
MAIL_ADDRESS=wbsu2003@88.com# DATABASE SETUP
POSTGRES_PASSWORD=passw0rd
POSTGRES_USER=plume
POSTGRES_DB=plume# you can safely leave those defaults
DATABASE_URL=postgres://plume:passw0rd@postgres:5432/plume
MIGRATION_DIRECTORY=migrations/postgres
  • BASE_URL:如果用 npm 反代,这里填局域网 IP +
    端口也可以,例如:192.168.0.197:7879,但是访问不能用 IP,否则登录会报错;
  • USE_HTTPS:如果上一步使用局域网 IP,这里改为 0
# 使用 IP 的示例 
BASE_URL=192.168.0.197:7879
USE_HTTPS=0
  • ROCKET_SECRET_KEY:执行 penssl rand -base64 32 可以生成;
  • MAIL_ 部分请根据自己的情况填写,有两种情况下会用到发邮件;
    • 忘记密码:网页上需要重置密码时发送邮件;
    • 注册策略:设为 email 时,表示注册时,Plume 需要邮件确认;

如果邮件设置没问题,忘记密码可以通过邮件进行重置

在这里插入图片描述

  • POSTGRES_PASSWORD:可以改复杂一些;
  • DATABASE_URL:如果 POSTGRES_PASSWORD 修改了,这里也要跟着变化;

其他的保持默认就可以,想了解更多的变量,请阅读官方文档:https://docs.joinplu.me/environment/

docker-compose.yml 文件

将下面的内容保存为 docker-compose.yml 文件

基于官方 https://docs.joinplu.me/docker-compose.sample.yml 修改

version: '3'services:postgres:image: postgres:14container_name: plume-dbenv_file: .env.txtrestart: unless-stoppedvolumes:- "./data:/var/lib/postgresql/data"plume:image: plumeorg/plume:0.7.2container_name: plume-webenv_file: .env.txtrestart: unless-stoppedvolumes:- "./media:/app/static/media"- "./.env.txt:/app/.env"- "./search_index:/app/search_index"ports:- "7879:7878"depends_on:- postgres

以上工作都完成之后,可以依次执行下面的命令

# 新建文件夹 plume 和 子目录
mkdir -p /volume2/docker/plume/{data,media,search_index}# 进入 plume 目录
cd /volume2/docker/plume# 运行数据库容器
docker-compose up -d postgres# 等待 postgres 初始化完成(用 docker-compose logs 看 postgres 的日志输出)
# 数据库设置,第一次迁移运行
docker-compose run --rm plume plm migration run

在这里插入图片描述

接下来进行实例设置,并创建管理员账号

# 重建搜索引擎
docker-compose run --rm plume plm search init# 创建你的实例
docker-compose run --rm plume plm instance new -d 'plume.laosu.ml:444' -n 'laosu test blog' -l 'default licence'

【重要】:-d 后面一定要填写完整的域名和端口,否则你上传的图片不能被正确的打开

# 创建管理员账号
docker-compose run --rm plume plm users new -n 'admin' -N 'laosu' -b 'laosu' -e 'wbsu2003@hotmail.com' -p '123456' --admin

这些设置,有些可以在 管理 中再修改,但是有些是不能的

在这里插入图片描述

现在可以一键启动了

# 一键启动
docker-compose up -d

在这里插入图片描述

运行

在浏览器中输入 https://plume.laosu.ml:444 就可以看到主界面了

界面默认显示的是繁体中文,老苏并没找到设置语言的地方;

在这里插入图片描述

不管你 BASE_URL 设置了域名还是 IP,只要用 IP 访问,登录账号或者创建账号都会显示下面的错误

在这里插入图片描述

登录后,进入 Dashboard 就可以创建博客了

在这里插入图片描述

起个标题

似乎不能使用中文,会报 Invalid name 错误

在这里插入图片描述

现在可以开始写博客了

在这里插入图片描述

新增文章

在这里插入图片描述

发布

在这里插入图片描述

填写标签等,因为尚未上传照片,封面先选无

在这里插入图片描述

上传图片

在这里插入图片描述

上传成功后,能在图片集中看到

在这里插入图片描述

编辑文章,选择封面

在这里插入图片描述

回到首页看看效果,感觉图片的比例可能不符合要求,显示不全

在这里插入图片描述

小结

  1. 环境变量文件中,BASE_URL 用域名还是 IP 都是可以的,但是访问时一定要用域名,否则登录和注册会报错;既然如此,老苏建议还是用域名吧;
  2. 用命令行创建实例时,域名一定要正确,否则上传的图片会打不开;

参考文档

Plume-org/Plume: Federated blogging application, thanks to ActivityPub (now on https://git.joinplu.me/ — this is just a mirror)
地址:https://github.com/Plume-org/Plume

Installing with Docker ⋅ Plume documentation
地址:https://docs.joinplu.me/installation/with/docker/

Plume: a federated blogging application
地址:https://joinplu.me/

相关文章:

轻博客Plume的搭建

什么是 Plume &#xff1f; Plume 是一个基于 ActivityPub 的联合博客引擎。它是用 Rust 编写的&#xff0c;带有 Rocket 框架&#xff0c;以及 Diesel 与数据库交互。前端使用 Ructe模板、WASM 和SCSS。 反向代理 假设我们实际访问地址为&#xff1a; https://plume.laosu.ml…...

机器人关节电机PWM

脉冲宽度调制(Pulse width modulation,PWM)技术。一种模拟控制方式 机器人关节电机的控制通常使用PWM(脉冲宽度调制)技术。PWM是一种用于控制电子设备的技术,通过控制高电平和低电平之间的时间比例,实现对电子设备的控制。在机器人关节电机中,PWM信号可以控制电机的…...

MPU6050详解(含源码)

前言&#xff1a;MPU6050是一款强大的六轴传感器&#xff0c;需要理解MPU6050首先得有IIC的基础&#xff0c;MPU6050 内部整合了 3 轴陀螺仪和 3 轴加速度传感器&#xff0c;并且含有一个第二 IIC 接口&#xff0c;可用于连接外部磁力传感器&#xff0c;内部有硬件算法支持. 1…...

Vue入门学习笔记:TodoList(三):实例中的数据、事件和方法

目录&#xff1a; Vue入门学习笔记&#xff1a;TodoList&#xff08;一&#xff09;&#xff1a;HelloWorld Vue入门学习笔记&#xff1a;TodoList&#xff08;二&#xff09;&#xff1a;挂载点、模板、实例 Vue入门学习笔记&#xff1a;TodoList&#xff08;三&#xff09;&a…...

怎么找到引发回流的JavaScript代码?

要找到引发回流的JavaScript代码&#xff0c;可以使用浏览器的开发者工具中的性能分析器。不同的浏览器有不同的名称和位置&#xff0c;例如Google Chrome的开发者工具中的性能分析器被称为Performance&#xff0c;Firefox的开发者工具中的性能分析器被称为Profiler。 以下是在…...

未来广告策划,转型还是淘汰?

在广告行业呆了十来年了&#xff0c;最近我越来越感觉到广告行业真的是一个需要与时俱进&#xff0c;并且应用场景非常广泛的一个专业。 而且由于这是一个需要创意能力的行业&#xff0c;所以对比于重复性容易被机器以及人工智能所代替的岗位行业来说&#xff0c;广告的可替代…...

【vscode远程开发】使用SSH远程连接服务器 「内网穿透」

文章目录 前言视频教程1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 转…...

七天从零实现Web框架Gee - 扩展

到这里前七天的任务已经完成&#xff0c;但我们可以对Gee框架进行一些扩展 补充HTTP请求方法 原作者只实现了 GET, POST 路由添加&#xff0c;其他的 PUT, DELETE 等标准 HTTP 方法未实现&#xff0c;实现方法也很简单&#xff0c;只需在gee.go中增加如下代码 // PUT define…...

什么是土壤水分传感器

土壤水分传感器又称土壤湿度传感器由不锈钢探针和防水探头构成&#xff0c;可长期埋设于土壤和堤坝内使用&#xff0c;对表层和深层土壤进行墒情的定点监测和在线测量。与数据采集器配合使用&#xff0c;可作为水分定点监测或移动测量的工具&#xff08;即农田墒情检测仪&#…...

月薪17k需要什么水平?98年测试员的面试全过程…

我的情况 大概介绍一下个人情况&#xff0c;男&#xff0c;本科&#xff0c;三年多测试工作经验&#xff0c;懂python&#xff0c;会写脚本&#xff0c;会selenium&#xff0c;会性能&#xff0c;然而到今天都没有收到一份offer&#xff01;从年后就开始准备简历&#xff0c;年…...

知了汇智:坚持发展产教融合,做好高校、人才与企业之间的桥梁

6月将正式迎来高校毕业季&#xff0c;大学生就业是聚焦全社会关注的头等大事。5月9日&#xff0c;成都知了汇智科技有限公司&#xff08;以下简称“知了汇智”&#xff09;组织开展“深化产教融合、聚焦人才培养”的主题座谈会议&#xff0c;联动高校与合作企业参加&#xff0c…...

MyBatis缓存-一级缓存--二级缓存的非常详细的介绍

目录 MyBatis-缓存-提高检索效率的利器 缓存-官方文档 一级缓存 基本说明 一级缓存原理图 代码演示 修改MonsterMapperTest.java, 增加测试方法 结果 debug 一级缓存执行流程 一级缓存失效分析 关闭sqlSession会话后 , 一级缓存失效 如果执行sqlSession.clearCache(…...

macOS Ventura 13.4 RC2(22F63)发布

系统介绍 根据黑果魏叔官网提供&#xff1a;5 月 12 日消息&#xff0c;苹果今天面向开发人员&#xff0c;发布了 macOS Ventura 13.4 的第 2 个候选 RC 版本&#xff08;内部版本号 22F63&#xff09;&#xff0c;距离上个候选版本相隔数天时间。 macOS Ventura 带来了台前调…...

【为什么可以相信一个HTTPS网站】

解决信用&#xff0c;仅仅有加密和解密是不够的。加密解密解决的只是传输链路的安全问题&#xff0c;相当于两个人说话不被窃听。可以类比成你现在生活 的世界——货币的信用&#xff0c;是由政府在背后支撑的&#xff1b;购房贷款的信用&#xff0c;是由银行在背后支撑的&…...

4.进阶篇

目录 一、按照测试对象划分 1.界面测试&#xff08;UI测试&#xff09; 界面测试的常见错误&#xff1a; 2.可靠性测试 3.容错性测试 4.文档测试 5.兼容性测试 6.易用性 7.安装卸载测试 8.安全性测试 9.性能测试 10.内存泄漏 二、按照是否查看代码 1.黑盒测试 2.…...

conda init

在输入conda activate 的时候出现报错: 解决: "需要使用 conda init 进行初始化" 的错误通常是由于你的系统环境缺少 conda 的初始化脚本所致。当你尝试在终端中执行 conda activate 命令时,会出现此错误提示。 要解决这个问题,可以通过以下步骤进行操作: 打…...

Elasticsearch(二)

Clasticsearch&#xff08;二&#xff09; DSL查询语法 文档 文档&#xff1a;https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html 常见查询类型包括&#xff1a; 查询所有&#xff1a;查询出所有数据&#xff0c;一般测试用。如&#xff1a…...

工业视觉检测的8个技术优势

工业4.0时代&#xff0c;自动化生产线成为了这个时代的主旋律&#xff0c;而工业视觉检测技术也成为其中亮眼的表现&#xff0c;其机器视觉技术为设备提供了智慧的双眼&#xff0c;让自动化的脚步得以加速&#xff01; 在实际的生产应用中&#xff0c;视觉技术方案往往先被着手…...

16 KVM虚拟机配置-其他常见配置项

文章目录 16 KVM虚拟机配置-其他常见配置项16.1 概述16.2 元素介绍16.3 配置示例 16 KVM虚拟机配置-其他常见配置项 16.1 概述 除系统资源和虚拟设备外&#xff0c;XML配置文件还需要配置一些其他元素&#xff0c;本节介绍这些元素的配置方法。 16.2 元素介绍 iothreads&…...

(转载)从0开始学matlab(第1天)—变量和数组

MATLAB 程序的基本数据单元是数组。一个数组是以行和列组织起来的数据集合&#xff0c;并且拥有一个数组名。数组中的单个数据是可以被访问的&#xff0c;访问的方法是数组名后带一个括号&#xff0c;括号内是这个数据所对应行标和列标。标量在 MATLAB 中也被当作数组来处理——…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...

Monorepo架构: Nx Cloud 扩展能力与缓存加速

借助 Nx Cloud 实现项目协同与加速构建 1 &#xff09; 缓存工作原理分析 在了解了本地缓存和远程缓存之后&#xff0c;我们来探究缓存是如何工作的。以计算文件的哈希串为例&#xff0c;若后续运行任务时文件哈希串未变&#xff0c;系统会直接使用对应的输出和制品文件。 2 …...