A simple comment system with backend support.

Overview

Waline

Author License qq telegram

npm version npm bundle size (scoped) downloads jsDelivr hits

npm version

A simple comment system with backend support.


中文 README

Documatation

English | 简体中文

Feature

  • Fast
  • Really Safe
  • Support full markdown syntax
  • Simple and lightweight
  • Deploy free!
  • Multiple deployment and storage service support, at least 84 deployment choice!
Waline
Client Server Storage
@waline/client Vercel LeanCloud
MiniValine Deta CloudBase
CloudBase MongoDB
Railway MySQL
Render SQLite
Docker PostgreSQL
self host GitHub
Deta Base

Todo

  • Email notification
  • Wechat notification
  • QQ notification
  • Telegram notification
  • Akismet
  • Article counter
  • i18n
  • Custom language
  • Login support
  • Comment management
  • Support delete comment
  • More database support
  • Limit the frequency of comments posted by IP
  • Comment keyword restrictions
  • IP disallow list
  • Duplicate content check
  • CloudBase deploy support
  • Social account login
  • Sitcky Comment
  • Comment Like
  • AWS, GCP, Azure deploy support

We really welcome you to contribute to waline!

Contact

You can contact me through discussions. Join our telegram group or scan QQ group qrcode to communicate about waline!

License

GPL-2.0

Comments
  • [Bug]: 按照官网,无法在vercel部署成功 500错误

    [Bug]: 按照官网,无法在vercel部署成功 500错误

    问题描述 | Describe the bug

    image

    按照官网,无法在vercel部署成功 500错误

    问题网站 | Website URL

    https://waline-vercel-self.vercel.app/

    服务部署在哪里? | Where your waline deploy?

    Vercel (Default)

    数据存储在哪里?| Where your comment data store?

    LeanCloud(https://leancloud.cn)

    bug 
    opened by hxer520 26
  • 非登录评论添加验证码

    非登录评论添加验证码

    问题描述 | Describe the bug

    就今天被一直刷乱码评论,一秒一个,反垃圾过滤根本招架不住。以后是否有计划添加验证码功能? 问题网站 | Website URL

    部署方式 | Deploy Type

    • 服务部署在哪里? | Where your waline deploy?
      • [ ] Vercel
      • [ ] CloudBase
      • [ ] Docker
      • [ *] VPS, Virtual Host
      • [ ] Other
    • 数据存储在哪里?| Where your comment data store?
      • [* ] LeanCloud(https://leancloud.app)
      • [ ] LeanCloud(https://leancloud.cn)
      • [ ] CloudBase
      • [ ] MongoDB
      • [ ] MySQL
      • [ ] SQLite
      • [ ] PostgreSQL
      • [ ] GitHub
    enhancement help wanted Inactive 
    opened by hydrogenoxide-user 25
  • [BUG] 手机版上点击“回复”图标无反应

    [BUG] 手机版上点击“回复”图标无反应

    手机版上点击 “回复” 图标无反应

    1、一级评论,如果是访客发布,则可以回复;如果是网站博主发布,则不可回复; 2、二级评论,如果是访客发布的也不一定可以回复;如果是网站博主发布,则不可回复;

    问题网站 https://risehere.net/friends/ 注意:这不是我的网站,我随便找了一个。

    我的环境: PC端: mac OS 11.6 Safari Version 15.0 (16612.1.29.41.4, 16612)

    手机: 三星S9,自带的三星浏览器,Version 15.0.5.10

    waiting for response 
    opened by ghost 23
  • 评论无法自动刷新及评论通知问题

    评论无法自动刷新及评论通知问题

    12.17 22:58 更新:问题的可能原因/解决方法/其他有用信息

    • 评论通知的变量没有正确设置,或者涉及到密码的变量类型更改成了 secret,而不是默认的 Plaintext
    • 如果 serverURL 后面配了/ 的话可以去了试一下
    • Vercel 的评论通知配置成功后可以关闭 Leancloud 这边的 valine-admin 云引擎
    • 目前 Waline 文档没有写出的,但是 Valine 有的变量如MAIL_TEMPLATE,依旧可以使用
    • 若配置的是 Yandex 邮箱出错,请看这里

    以下为问题原文:

    安装好以后评论无法实时显示,只能刷新页面看,于是查看了控制台。

    Access to fetch at 'https://example.vercel.app/comment' from origin 'https://example.com' has been blocked by CORS policy: 
    No 'Access-Control-Allow-Origin' header is present on the requested resource. 
    If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
    Waline.min.js:40 POST https://example.vercel.app/comment net::ERR_FAILED
    

    请问是正常的吗?

    opened by dyxang 23
  • [BUG]1.0.0-beta2和3,首页报Option 'el' is invalid!错误

    [BUG]1.0.0-beta2和3,首页报Option 'el' is invalid!错误

    问题描述 | Describe the bug

    使用最新的1.0.0-beta3,在首页js报错,提示Option 'el' is invalid! 使用0.17.0没有问题,印象中使用1.0.0-beta0和1好像也是正常的 在文章详情页面一切正常 Snipaste_2021-05-27_17-43-00

    问题网站 | Website URL

    jayshao.com

    部署方式 | Deploy Type

    • 服务部署在哪里? | Where your waline deploy?

      • [ ] Docker
    • 数据存储在哪里?| Where your comment data store?

      • [ ] LeanCloud(https://leancloud.cn)
    bug 
    opened by tyadan 22
  • [BUG]头像问题

    [BUG]头像问题

    应该为https://sdn.geekzu.org/avatar/565ada82edc2f01e7cf2bd95b31f19fd ,而不是https://sdn.geekzu.org/avatar/#https://sdn.geekzu.org/avatar/565ada82edc2f01e7cf2bd95b31f19fd

    invalid 
    opened by Fgaoxing 21
  • 后台管理无法登录

    后台管理无法登录

    我部署了最新到 waline+MiniValine 之后遇到一个新问题:后台管理无法登录,也无法重新注册账号(不论是 LeanCloud 还是 CloudBase 都是如此),隐私模式下浏览器控制台日志如下

    admin:54 GET https://waline.dlzhang.com/token 403
    (anonymous) @ admin:54
    c @ admin:15
    (anonymous) @ admin:15
    (anonymous) @ admin:15
    n @ admin:5
    l @ admin:5
    (anonymous) @ admin:5
    (anonymous) @ admin:5
    Ne @ admin:54
    Pe @ admin:54
    (anonymous) @ admin:54
    c @ admin:15
    (anonymous) @ admin:15
    (anonymous) @ admin:15
    n @ admin:5
    l @ admin:5
    (anonymous) @ admin:5
    (anonymous) @ admin:5
    Ie @ admin:54
    ze @ admin:54
    (anonymous) @ admin:54
    c @ admin:15
    (anonymous) @ admin:15
    (anonymous) @ admin:15
    n @ admin:5
    l @ admin:5
    (anonymous) @ admin:5
    (anonymous) @ admin:5
    loadUserInfo @ admin:54
    (anonymous) @ admin:10
    (anonymous) @ admin:10
    (anonymous) @ admin:10
    a @ admin:10
    Promise.then (async)
    u @ admin:10
    (anonymous) @ admin:10
    o @ admin:10
    (anonymous) @ admin:10
    dispatch @ admin:10
    (anonymous) @ admin:54
    c @ admin:15
    (anonymous) @ admin:15
    (anonymous) @ admin:15
    n @ admin:5
    l @ admin:5
    (anonymous) @ admin:5
    (anonymous) @ admin:5
    wt @ admin:54
    (anonymous) @ admin:54
    (anonymous) @ admin:54
    n @ admin:5
    (anonymous) @ admin:5
    (anonymous) @ admin:5
    Show 3 more frames from Library code
    admin:54 Error: 获取用户信息失败
        at admin:54
    (anonymous) @ admin:54
    Promise.catch (async)
    (anonymous) @ admin:54
    c @ admin:15
    (anonymous) @ admin:15
    (anonymous) @ admin:15
    n @ admin:5
    l @ admin:5
    (anonymous) @ admin:5
    (anonymous) @ admin:5
    wt @ admin:54
    (anonymous) @ admin:54
    (anonymous) @ admin:54
    n @ admin:5
    (anonymous) @ admin:5
    (anonymous) @ admin:5
    admin:54 POST https://waline.dlzhang.com/token 403
    (anonymous) @ admin:54
    c @ admin:15
    (anonymous) @ admin:15
    (anonymous) @ admin:15
    n @ admin:5
    l @ admin:5
    (anonymous) @ admin:5
    (anonymous) @ admin:5
    Pe @ admin:54
    (anonymous) @ admin:54
    c @ admin:15
    (anonymous) @ admin:15
    (anonymous) @ admin:15
    n @ admin:5
    l @ admin:5
    (anonymous) @ admin:5
    (anonymous) @ admin:5
    Re @ admin:54
    je @ admin:54
    (anonymous) @ admin:54
    c @ admin:15
    (anonymous) @ admin:15
    (anonymous) @ admin:15
    n @ admin:5
    l @ admin:5
    (anonymous) @ admin:5
    (anonymous) @ admin:5
    login @ admin:54
    (anonymous) @ admin:10
    (anonymous) @ admin:10
    (anonymous) @ admin:10
    a @ admin:10
    Promise.then (async)
    u @ admin:10
    (anonymous) @ admin:10
    o @ admin:10
    (anonymous) @ admin:10
    dispatch @ admin:10
    (anonymous) @ admin:10
    (anonymous) @ admin:10
    (anonymous) @ admin:10
    (anonymous) @ admin:10
    o @ admin:10
    (anonymous) @ admin:10
    (anonymous) @ admin:54
    c @ admin:15
    (anonymous) @ admin:15
    (anonymous) @ admin:15
    n @ admin:5
    l @ admin:5
    (anonymous) @ admin:5
    (anonymous) @ admin:5
    (anonymous) @ admin:54
    l @ admin:31
    f @ admin:31
    (anonymous) @ admin:31
    b @ admin:31
    at @ admin:31
    ot @ admin:31
    lt @ admin:31
    ft @ admin:31
    U @ admin:31
    Q @ admin:31
    Xt @ admin:31
    Yt @ admin:31
    t.unstable_runWithPriority @ admin:39
    Bo @ admin:31
    R @ admin:31
    Jt @ admin:31
    Show 38 more frames from Library code
    
    bug 
    opened by leirock 20
  • [BUG] IPQPS 不起作用

    [BUG] IPQPS 不起作用

    问题描述 | Describe the bug

    Vercel 环境配置 IPQPS 值为 "0", 依旧提示评论过快 image

    image

    问题网站 | Website URL

    https://comment.cxplay.org/

    部署方式 | Deploy Type

    • 服务部署在哪里? | Where your waline deploy?
      • [x] Vercel
      • [ ] CloudBase
      • [ ] Docker
      • [ ] VPS, Virtual Host
      • [ ] Other
    • 数据存储在哪里?| Where your comment data store?
      • [ ] LeanCloud(https://leancloud.app)
      • [ ] LeanCloud(https://leancloud.cn)
      • [ ] CloudBase
      • [ ] MongoDB
      • [x] MySQL
      • [ ] SQLite
      • [ ] PostgreSQL
      • [ ] GitHub
    good first issue 
    opened by cxplay 18
  • [优化] 最新版Waline客户端存在CSS样式问题

    [优化] 最新版Waline客户端存在CSS样式问题

    问题描述 | Describe the bug

    问题一:用户登录后,头像显示的不是圆形头像

    image

    问题二:在文章页面的最底部回复评论时,表情包区域会出现显示不全的问题,使用的主题是 NexT 8.4

    image

    部署方式 | Deploy Type

    • 服务部署在哪里? | Where your waline deploy?
      • [ ] Vercel
      • [ ] CloudBase
      • [x] Docker
      • [ ] VPS, Virtual Host
      • [ ] Other
    • 数据存储在哪里?| Where your comment data store?
      • [ ] LeanCloud(https://leancloud.app)
      • [ ] LeanCloud(https://leancloud.cn)
      • [ ] CloudBase
      • [ ] MongoDB
      • [x] MySQL
      • [ ] SQLite
      • [ ] PostgreSQL
      • [ ] GitHub
    bug 
    opened by rqh656418510 17
  • [Feature]: 增加site uv 计数

    [Feature]: 增加site uv 计数

    功能概述 | Describe the feature

    目前用的 不算子计数稳定性太差了。 时常报错,获取不到数据。

    希望waline 可以增加访问人数计数。

    看着不算子是用的cookies来实现区分pv计数和uv计数的。

    waline如果要实现这个uv计数,也可以使用cookies,或者其它技术

    enhancement discussion 
    opened by appotry 14
  • 建议

    建议

    1. 希望在评论里可以增加类似“管理员”、“新朋友”、“小伙伴”这样的标签 2
    2. 希望可以对深色模式加以优化,或者增加深色模式选项,亦或者设置成跟随系统也行
    3. 希望可以增加根据ip获取定位的功能 3
    4. 希望增加取消显示评论数的按钮,且把“Waline”显示为“评论数”
    5. 希望可以增加qq登录评论的功能(类似于使用Github登录一样),然后评论头像显示为qq头像,亦或直接根据qq邮箱获取qq头像
    6. 自定义表情目前配置的时候略显麻烦,能否通过只添加cdn就可以实现自定义表情?可以参考minivaline
    enhancement 
    opened by suyin-long 14
  • chore(deps): update dependency vuepress-theme-hope to v2.0.0-beta.151

    chore(deps): update dependency vuepress-theme-hope to v2.0.0-beta.151

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | vuepress-theme-hope (source) | 2.0.0-beta.150 -> 2.0.0-beta.151 | age | adoption | passing | confidence |


    Release Notes

    vuepress-theme-hope/vuepress-theme-hope

    v2.0.0-beta.151

    Compare Source

    Features
    • create: add new command add (8c34064)
    • search-pro: improve search button a11y (8629ee5)
    • theme: improve home features (f853aa4)
    • theme: rebuild home page related components (3f76b8d)
    Bug Fixes
    Performance Improvements

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • chore(deps): update dependency @babel/core to v7.20.12

    chore(deps): update dependency @babel/core to v7.20.12

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | @babel/core (source) | 7.20.7 -> 7.20.12 | age | adoption | passing | confidence |


    Release Notes

    babel/babel

    v7.20.12

    Compare Source

    :bug: Bug Fix
    • babel-traverse
    • babel-helper-create-class-features-plugin, babel-plugin-proposal-class-properties
    :nail_care: Polish

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • chore(deps): update commitlint monorepo to v17.4.0

    chore(deps): update commitlint monorepo to v17.4.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | @commitlint/cli (source) | 17.3.0 -> 17.4.0 | age | adoption | passing | confidence | | @commitlint/config-conventional (source) | 17.3.0 -> 17.4.0 | age | adoption | passing | confidence |


    Release Notes

    conventional-changelog/commitlint (@​commitlint/cli)

    v17.4.0

    Compare Source

    Bug Fixes
    conventional-changelog/commitlint (@​commitlint/config-conventional)

    v17.4.0

    Compare Source

    Note: Version bump only for package @​commitlint/config-conventional


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about these updates again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • [Bug]: ip2region 默认采用的 IP 数据库偏老

    [Bug]: ip2region 默认采用的 IP 数据库偏老

    问题描述 | Describe the bug

    图片 图片

    • 很多比较新的 IP 段不能准确识别,尤其是移动的
    • 官方宣称不再支持 IPV6 —— 这意味着 IPV6 无法识别

    问题网站 | Website URL

    https://i.a632079.me/posts/youre-not-late-youre-not-early/

    服务部署在哪里? | Where your waline deploy?

    Docker

    数据存储在哪里?| Where your comment data store?

    MySQL

    opened by greenhat616 2
  • fix(deps): update dependency think-model-sqlite to v1.3.1

    fix(deps): update dependency think-model-sqlite to v1.3.1

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | think-model-sqlite | 1.3.0 -> 1.3.1 | age | adoption | passing | confidence |


    Release Notes

    thinkjs/think-model-sqlite

    v1.3.1

    Compare Source


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
Owner
Waline
A Simple, Safe Comment System
Waline
Realtime database backend based on Operational Transformation (OT)

This README is for [email protected]. For [email protected], see the 1.x-beta branch. To upgrade, see the upgrade guide. ShareDB ShareDB is a realtime databa

ShareJS 5.5k Dec 29, 2022
📠 The backend of the Fairfield Programming Association website.

Backend Server Features Duck Generator We didn't want to use people's faces for the profile pictures. This was for three reasons: we didn't want to pa

Fairfield Programming Association 25 Nov 23, 2022
Auth model created by Using nodeJs for backend & reactJs for frontend with the help of TailwindCss in styling

The Universal Auth System Using The MERN Stack Including Mysql --> The project is divded to two separte projects 1- The Client side -> containing the

m.bebars 1 Aug 22, 2022
Ecommerce-backend-nestjs - Ecommerce app with Nestjs + Prisma ORM + GraphQL + SQLite

ECOMMERCE BACKEND NESTJS APP Nestjs + Prisma ORM + GraphQL + SQLite USER Create Account Login Product Create Product Get Products Get Product Search P

Rui Paulo Calei 5 Apr 6, 2022
The Firma Project - Backend

Firma About This is a backend for Firma Project. The Firma project is another corporate piece of software to engage employees to collaborate with othe

Firma 8 Feb 5, 2022
Simple key-value storage with support for multiple backends

Simple key-value storage with support for multiple backends Keyv provides a consistent interface for key-value storage across multiple backends via st

Luke Childs 2k Jan 7, 2023
An adapter-based ORM for Node.js with support for mysql, mongo, postgres, mssql (SQL Server), and more

Waterline is a next-generation storage and retrieval engine, and the default ORM used in the Sails framework. It provides a uniform API for accessing

Balderdash 5.4k Jan 4, 2023
A MongoDB-like database built on top of Hyperbee with support for indexing

hyperbeedeebee A MongoDB-like database built on top of Hyperbee with support for indexing WIP: There may be breaking changes in the indexing before th

null 35 Dec 12, 2022
WebAssembly SQLite with experimental support for browser storage extensions

wa-sqlite This is a WebAssembly build of SQLite with experimental support for writing SQLite virtual filesystems and virtual table modules completely

Roy Hashimoto 260 Jan 1, 2023
A typescript data mapping tool. To support mutual transforming between domain model and orm entity.

ts-data-mapper A typescript mapping tool supports mutual transforming between domain model and orm entity. In most case, domain model is not fully com

zed 8 Mar 26, 2022
Run SPARQL/SQL queries directly on Virtuoso database with connection pool support.

?? virtuoso-connector Package that allows you to create a direct connection to the Virtuoso database and run queries on it. Connection can be used to

Tomáš Dvořák 6 Nov 15, 2022
A node.js locks library with support of Redis and MongoDB

locco A small and simple library to deal with race conditions in distributed systems by applying locks on resources. Currently, supports locking via R

Bohdan 5 Dec 13, 2022
【毕业设计】基于Spring Boot的宿舍管理系统(Dormitory Management System)。以MySQL为数据库,在Spring Boot + SpringMVC + MyBatis + Layui框架下基于B/S架构设计开发而成。

SpringBootDMS 【毕业设计】基于Spring Boot的宿舍管理系统(Dormitory Management System)。以MySQL为数据库,在Spring Boot + SpringMVC + MyBatis + Layui框架下基于B/S架构设计开发而成。 文件夹介绍: da

Linda Silk 9 Dec 14, 2021
Bounty/Lootbox system for incentivizing donations of celebrity ENS names.

ENS Lootbox Quick hack inspired by Mike's tweet about celebrity ENS domain donations. Run locally First, update ETH RPC url in hardhat.config.js and t

Anish Agnihotri 20 Oct 16, 2022
The Blog system developed by nest.js based on node.js and the database orm used typeorm, the development language used TypeScript

考拉的 Nest 实战学习系列 readme 中有很多要说的,今天刚开源还没来及更新,晚些慢慢写,其实本人最近半年多没怎么写后端代码,主要在做低代码和中台么内容,操作的也不是原生数据库而是元数据Meta,文中的原生数据库操作也当作复习下,数据库的操作为了同时适合前端和Node开发小伙伴,所以并不是很

程序员成长指北 148 Dec 22, 2022
A simple Node.js ORM for PostgreSQL, MySQL and SQLite3 built on top of Knex.js

bookshelf.js Bookshelf is a JavaScript ORM for Node.js, built on the Knex SQL query builder. It features both Promise-based and traditional callback i

Bookshelf.js 6.3k Jan 2, 2023
A simple url shorter API built with nodejs running on Kubernetes in Google Cloud, using PostgreSQL for storage and cloud sql proxy.

Simple URL Shorter - Google Cloud - Kubernetes A simple url shorter API built with nodejs running on Kubernetes in Google Cloud, using PostgreSQL for

null 3 Nov 25, 2021
This is very simple game catch word with JavaScript and Jquery

Catch-Word-js This is very simple game catch word with JavaScript and Jquery install and run guide! download project zip! extract zip file on any dire

Jortsoft 14 Nov 26, 2022
This is a repository that contains an simple NestJS API about Movies developed at Blue EdTech.

NestJS Movies Technologies and requirements NestJS JavaScript TypeScript Prisma MySQL Project This is a repository that contains an simple NestJS API

Isabella Nunes 2 Sep 28, 2021