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

Waline,一款开源博客-评论系统

一、背景

最新迁移博客至Halo,发现一款不错的评论系统,Waline

二、Waline介绍

Waline是一款快速、简洁且高效的无后端评论系统,支持多种博客程序,如Hexo、Jekyll、Typecho、Hugo和Ghost等。它基于LeanCloud,用户可以通过邮箱注册并创建Valine应用,获取App ID和App Key来进行使用。配置简单,仅需加入一些JavaScript代码。支持邮件通知和安全验证码。支持Markdown语法和多级回复。具有强大的自由度。可以设置黑名单和访客记录等功能,保证评论系统更加安全。

三、部署Waline

3.1 部署条件

  • 一台有公网 IP 的服务器【1C2g 即可】
  • 部署 docker-compose 环境
  • 需要 nginx 反向代理

3.2 部署Waline后端服务

官网:https://waline.js.org/guide/deploy/vps.html#docker-%E9%83%A8%E7%BD%B2

本次部署采用 SQLite 单文件数据库,需要准备 SQLite 数据库文件。官方下载链接

image-20240203214440821

image-20240203214417509

docker-compose.yml 官网示例:

本博客优化后配置
在环境变量中,参考自己此前在 Velcel 中的配置,搬运过来即可,详细配置项可参考官方文档。

version: "3"services:waline:container_name: walineimage: lizheming/waline:latestrestart: alwaysports:- 8360:8360volumes:- ${PWD}/data:/app/dataenvironment:TZ: "Asia/Shanghai"SQLITE_PATH: "/app/data"JWT_TOKEN: "xxxxxxxxxx" # 自行设置SITE_NAME: '运维小弟'   #站点名称SITE_URL: 'https://srebro.cn'SECURE_DOMAINS: "srebro.cn" # 安全站点,限制访问权限DISABLE_REGION: "false" # 是否禁用IP归属地DISABLE_USERAGENT: "false" # 是否禁用浏览器标识COMMENT_AUDIT: "false" #评论发布审核开关。开启后评论需要经过管理员审核后才能显示# 以下是邮件通知的变量,参考官方邮件SMTP_SERVICE: 'QQ'SMTP_USER: '12345678@qq.com'SMTP_PASS: 'xxx' #邮箱授权码SMTP_SECURE: 'true' #是否使用 sslAUTHOR_EMAIL: '12345678@qq.com'

在当前目录下创建 data文件夹,并将此前下载的 waline.sqlite文件复制到其下。

最终目录结构如下:

|waline|--docker-compose.yml|--data|--waline.sqlite

采用以下命令,拉起 Waline服务

docker-compose up -d

查看 waline 运行状态

[root@web waline]# docker-compose ps
NAME                COMMAND                  SERVICE             STATUS              PORTS
waline              "docker-entrypoint.s…"   waline              running             0.0.0.0:8360->8360/tcp, :::8360->8360/tcp

3.3 部署Nginx 反向代理服务

官网配置: https://waline.js.org/guide/deploy/vps.html#nginx-%E9%85%8D%E7%BD%AE

  • docker跑起来后是运行在本地 8360端口,需要反向代理到自己配置的域名。
  • 如果不配置 SSL 可以注释掉 ssl 相关配置,以及 rewrite重定向内容
server
{listen 80;listen 443 ssl http2;server_name your.domain.server.name;root /www/wwwroot/your.domain.server.name;if ($server_port !~ 443){rewrite ^(/.*)$ https://$host$1 permanent;}# SSL settingssl_certificate fullchain.pem;ssl_certificate_key privkey.pem;ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;ssl_prefer_server_ciphers on;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;add_header Strict-Transport-Security "max-age=31536000";# proxy to 8360location / {proxy_pass http://127.0.0.1:8360;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header REMOTE-HOST $remote_addr;add_header X-Cache $upstream_cache_status;# cacheadd_header Cache-Control no-cache;expires 12h;}
}

3.4 访问控制台

地址后面跟上/ui进入管理页面,首次需要注册个账号默认为管理员

https://your.domain.server.name/ui/

image-20240203222422534

可后台管理评论

image-20240203222451919

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 用Cri-O,Sealos CLI,Kubeadm方式部署K8s高可用集群
  • 【MySQL】MySQL常用的数据类型——表的操作
  • Linux下构建Docker镜像
  • mac 安装redis
  • 如何使用微软的Copilot AI工具将Word文档转换为PowerPoint
  • [深度学习][LLM]:浮点数怎么表示,什么是混合精度训练?
  • 算法:判断一个整数是不是2的阶次方
  • Go语言基础语法 20240904更新
  • C/C++ 网络聊天室在线聊天系统(整理重传)
  • 速通GPT-3:Language Models are Few-Shot Learners全文解读
  • 单片机上搭配的SPI NOR FLASH容量告急!扩容新选择
  • python网络爬虫(五)——爬取天气预报
  • NineData云原生智能数据管理平台新功能发布|2024年8月版​​
  • 绿色能源在日常生活中的革新应用
  • 利用msf生成木马控制win7
  • 2017届校招提前批面试回顾
  • AngularJS指令开发(1)——参数详解
  • docker-consul
  • HTML中设置input等文本框为不可操作
  • Java 23种设计模式 之单例模式 7种实现方式
  • linux安装openssl、swoole等扩展的具体步骤
  • Mac转Windows的拯救指南
  • 初探 Vue 生命周期和钩子函数
  • 对JS继承的一点思考
  • 坑!为什么View.startAnimation不起作用?
  • 聊聊hikari连接池的leakDetectionThreshold
  • 码农张的Bug人生 - 见面之礼
  • 实现菜单下拉伸展折叠效果demo
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (11)MSP430F5529 定时器B
  • (13)DroneCAN 适配器节点(一)
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (5)STL算法之复制
  • (55)MOS管专题--->(10)MOS管的封装
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (六)vue-router+UI组件库
  • (十八)三元表达式和列表解析
  • (十三)Flink SQL
  • (一)为什么要选择C++
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • .NET Core 通过 Ef Core 操作 Mysql
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .NET导入Excel数据
  • .net通过类组装数据转换为json并且传递给对方接口
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • [2010-8-30]
  • [3D基础]理解计算机3D图形学中的坐标系变换
  • [BUG]Datax写入数据到psql报不能序列化特殊字符