轻博客Plume的搭建

news2024/11/20 20:40:31

在这里插入图片描述

什么是 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:14
    container_name: plume-db
    env_file: .env.txt
    restart: unless-stopped
    volumes:
      - "./data:/var/lib/postgresql/data"

  plume:
    image: plumeorg/plume:0.7.2
    container_name: plume-web
    env_file: .env.txt
    restart: unless-stopped
    volumes:
      - "./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/

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

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

相关文章

Map和WeakMap对象的用法(JS)

&#x1f4dd;个人主页&#xff1a;爱吃炫迈 &#x1f48c;系列专栏&#xff1a;数据结构与算法 &#x1f9d1;‍&#x1f4bb;座右铭&#xff1a;道阻且长&#xff0c;行则将至&#x1f497; 文章目录 &#x1f338;Mapkey创建map的其他方式Map常用方法Map结构原生提供三个遍历…

项目成本管理

定义&#xff1a;项目各个成本的总和 作用&#xff1a;在预算范围内完成项目 考点&#xff1a; 直接成本是指一个由项目组承担的费用&#xff0c;例如员工的工资&#xff0c;电脑等硬件费用。 间接成本是指由多个项目组承担的费用&#xff0c;例如租金&#xff0c;水电费&am…

社交媒体中的“点赞”“喜欢”是如何存储在数据库中的?

你有没有想过 Instagram、Twitter、Facebook 或任何社交媒体平台如何跟踪谁喜欢你的帖子&#xff1f;让我们在这篇文章中弄清楚&#xff01; 1&#xff1a;序言 最近&#xff0c;我受邀在一个名为“CityJS”的活动中发言。但问题在于&#xff1a;我是 PHP 开发人员。我根本不懂…

Palo Alto Networks利用基于机器学习的自动化网络安全解决方案

“ Palo Alto Networks利用第三代英特尔至强可扩展处理器和部署在云中的英特尔软件&#xff0c;为其云端安全服务提供强有力的支持&#xff0c;从而提升机器学习和推断的性能。 面对恶意软件攻击的快速演变和难以捉摸的特性&#xff0c;企业网络安全团队面临着巨大的挑战。恶意…

"五步走"的MES系统改进战略,让ERP不再是面子工程

随着制造业信息化进程的不断推进&#xff0c;大部分的制造业企业都开始意识到&#xff0c;生产技术的领先和生产流程的有效管理是其发展的重要一环&#xff0c;有些企业已经或者正在实施的 ERP系统。但是&#xff0c;从相关部门的数据来看&#xff0c; ERP在分散型制造业企业中…

算法(一)—— 回溯(1)

文章目录 前言1 77 组合2 77 组合优化 前言 1、回溯法解决的问题都可以抽象为树形结构&#xff08;N叉树&#xff09;&#xff0c;使用树形结构来理解回溯。 2、回溯法解决的都是在集合中递归查找子集&#xff0c;集合的大小就构成了树的宽度&#xff0c;递归的深度&#xff…

FPGA基于GS2971/GS2972实现SDI视频收发 提供工程源码和技术支持

目录 1、前言2、我目前已有的SDI编解码方案3、GS2971/GS2972芯片解读GS2971解读GS2972解读 4、详细设计方案5、vivado工程1解读硬件逻辑工程软件SDK工程 6、vivado工程2解读硬件逻辑工程软件SDK工程 7、上板调试验证8、福利&#xff1a;工程代码的获取 1、前言 FPGA实现SDI视频…

多尺度深度特征(上):多尺度特征学习才是目标检测精髓(干货满满,建议收藏)...

计算机视觉研究院专栏 作者&#xff1a;Edison_G 深度特征学习方案将重点从具有细节的具体特征转移到具有语义信息的抽象特征。它通过构建多尺度深度特征学习网络 (MDFN) 不仅考虑单个对象和局部上下文&#xff0c;还考虑它们之间的关系。 公众号ID&#xff5c;ComputerVisionG…

零售行业公有云信息安全探讨

新钛云服已累计为您分享744篇技术干货 ⚠️公有云安全事件⚠️ 最近小半年接连处理了几起零售行业公有云安全事件&#xff0c;都是因为某种原因造成的数据泄露。有防护措施不当的&#xff0c;也有因为应用漏洞泄露被黑的&#xff0c;也有内部人员不慎造成的。 事后总结发现主要…

第一章 IRIS 基础知识:使用互操作性制作连接系统

文章目录 第一章 IRIS 基础知识&#xff1a;使用互操作性制作连接系统为什么要连接系统&#xff1f;介绍Productions 第一章 IRIS 基础知识&#xff1a;使用互操作性制作连接系统 本文介绍了如何将系统与 IRIS 数据平台互操作性产品连接在一起。 为什么要连接系统&#xff1f…

Golang每日一练(leetDay0063) 最大数、重复的DNA序列

目录 179. 最大数 Largest Number &#x1f31f;&#x1f31f; 187. 重复的DNA序列 Repeated DNA Sequences &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏…

博客管理系统--博客列表页

准备工作设计数据库封装数据库操作创建实体类数据库增删查改操作&#xff08;写法几乎很相似&#xff09;前后端交互 准备工作 博客管理系统前端部分在学习前端、css、js部分实现&#xff1b;现在我们将完成后端工作;并且部署云服务上&#xff1b;使其能让所有联网的人使用。 …

【代码】一个LVQ神经网络的详解实例

本站原创文章&#xff0c;转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com LVQ神经网络是用于样本分类的一个常用算法&#xff0c;本文先简单回顾LVQ神经网络是什么&#xff0c;然后展示如何用matlab工具箱来训练一个LVQ神经网络 目录 一. LVQ神经网络简介 1.1 LVQ神经…

“首次公开一年连升两级的晋升大法”!

见字如面&#xff0c;我是军哥&#xff01; 今天把江湖上失传已久的技术人晋升大法分享给各位&#xff0c;据说当年雷jun总就是用了此法三年就干到了技术高管&#xff0c;请各位务必做好学习和分享动作。 说真的&#xff0c;用好这三个办法&#xff0c;就算在 IT 大厂一年都可以…

脑挫裂伤是什么?脑挫裂伤的4大症状要警惕!

脑挫裂伤是头部遭受暴力而引起的原发性脑器质性损伤。脑挫裂伤既可发生于着力点的脑组织&#xff0c;也可发生于对冲部位。脑挫裂伤病人的临床表现可以由于损伤部位&#xff0c;范围&#xff0c;程度的不同而有差异。受伤较轻的可以只有轻微的症状而受伤&#xff0c;较重的可以…

这玩意真的有用吗?对,是的!Kotlin 的 Nothing 详解

视频先行 下面是视频内容的脚本文案原稿分享。 文案原稿 Kotlin 的 Nothing 类&#xff0c;无法创建出任何实例&#xff1a; public class Nothing private constructor() 所以所有 Nothing 类型的变量或者函数&#xff0c;都找不到可用的值&#xff1a; val nothing: Nothing …

电脑视频录屏软件哪个好用 电脑视频录屏怎么录屏

录屏是我们的工作和生活中非常大的一个需求&#xff0c;尤其对于专业的视频制作者来说&#xff0c;经常需要录制屏幕和编辑视频&#xff0c;因此找到便捷好用的录屏软件非常重要。今天就来分享一下电脑视频录屏软件哪个好用&#xff0c;电脑视频录屏怎么录屏。 一、电脑视频录…

2023 年第八届数维杯大学生数学建模挑战赛 B 题 节能列车运行控制优化策略

在城市交通电气化进程快速推进的同时&#xff0c;与之相应的能耗增长和负面效应也 在迅速增加。城市轨道交通中的快速增长的能耗给城轨交通的可持续性发展带来 负担。2018 年&#xff0c;北京、上海、广州地铁负荷占全市总负荷的 1.5%-2.5%,成为了 城市电网的最大单体负荷[1]。…

软考A计划-真题-分类精讲汇总-第一章(计算机组成原理与体系结构)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

Java每日一练(20230512) 最大间距、串联子串、最长回文子串

目录 1. 最大间距 &#x1f31f;&#x1f31f;&#x1f31f; 2. 串联所有单词的子串 &#x1f31f;&#x1f31f;&#x1f31f; 3. 最长回文子串 &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 …