The Problem
After migrating the blog from WordPress to a static site in 2012, I chose Disqus as the comment system. Recently, Disqus ads have become too intrusive, so I urgently need to find a new comment system.
Disqus officially states that removing ads requires a paid subscription.
What if I want to remove Ads? If you’d like to remove Disqus Ads from your integration, you may purchase and ads-free subscription from your Subscription and Billing page. More information on Disqus ads-free subscriptions may be found here.
OK, goodbye Disqus—I’ll find a reliable, free, and easy-to-use comment system. Since I’m looking for a new comment system anyway, and it’s 2023 now, I want this new system to fully leverage the convenience of cloud services, and to be free, reliable, and easy to maintain.
Selection Principles
Before diving in, I outlined my principles and selection criteria:
- Data ownership is the core requirement
- Ensure comment data fully belongs to the blog owner, with no loss of control due to third-party services.
- Deployment and storage are the main challenges
- Considering stability and cost, choose a solution that is easy to deploy and has low storage cost.
- Access speed is a consideration
- Comment system load speed directly affects user experience, so a system that offers fast access is needed.
Functional requirements:
- Email notifications
- Markdown
- Content safety: No Injection
- Comment moderation and deletion
- OAuth login (optional)
Non-functional requirements:
- Low cost: within 12 CNY/year
- System stability
With these principles and requirements clear, we can choose a suitable comment system in a more targeted way. Next, I’ll explore how to select and set up a comment system based on these principles.
Initial Exploration
Now let’s try out some options and explore, to get familiar with the features and quality of common systems today.
utterances
- A comment system often seen in the wild, popular among developers; based on GitHub Issues, so it’s free; requires GitHub account to comment.
- 7.8k stars
- Hosted on GitHub Issues
Twikoo
- A solution from China, built around cloud services; requires a serverless/cloud function environment (most are paid).
- 880 stars
Cusdis
- A solution from China; offers free Cloud service (with limited quota).
- 2.4k stars
- Supports migration
- Manual comment approval
- Moderate activity
I also looked at some external comparison articles:
From this exploration, the deployment model looks roughly like this:
Comparison
Here is a comparison table of features I care about and how each candidate performs. Besides the systems above, I also looked into comment SaaS services commonly used overseas:
| Name | self-host | Official SaaS | SaaS Free | Star | Import Disqus | export data | Comments |
|---|---|---|---|---|---|---|---|
| Utterances | x | v | v | 7.8k | v | Github account required | |
| Cusdis | v | v | v? | 2.3k | v | v? | import from Disqus failed |
| Cactus Comments | v | v | 100 | Matrix Protocol, blocked | |||
| Commento | x | v | $10/month | v | v | ||
| Graph Comment | v | Free to $7 | |||||
| Hyvor Talk | x | v | $12/month | ||||
| IntenseDebate | v | ? | x | too old | |||
| Isso | v | x | 4.8k | v | sqlite storage | ||
| Mutt | v | $16/month | |||||
| Remark42 | v | x | 4.3k | v | v | full featured, one file storage | |
| ReplyBox | v | $5/month | |||||
| Staticman | v | 2.3k | v | using github as storage | |||
| Talkyard | v | €4.5/ month | |||||
| Waline | v | 1.5k | v | v | Multi Storage / Service Provider supported | ||
| Twikoo | v | x | 1.1k | v | v | FaaS / MongoDB |
From this comparison we can draw a few conclusions:
- Traditional overseas comment systems have low data transparency and old-fashioned UIs.
- Official SaaS offerings are mostly paid.
- Self-hosted options require running your own service, with no one-click free cloud path.
Summary
The products that best fit my needs are: Utterances, Cusdis, and Waline.
PoC and Implementation
I eventually chose Utterances and Waline for a PoC. My English blog uses Utterances, and my Chinese blog uses Waline.
Why not Cusdis or Twikoo? Cusdis uses PostgreSQL, while Twikoo relies on Tencent Cloud Functions (limited free tier) or MongoDB. Waline offers more storage options. Among similar solutions, Waline has the most contributors and commits, so the community is more reliable.
Waline Implementation
One funny detail: if the h3 heading here were “Waline”, it would inject the comment widget for this blog right there.
- Pros
- Multi-platform deployment
- Multiple database backends (MongoDB, sqlite, PostgreSQL, MySQL)
- Rich comment features
- Import tools
- Active enough
- Cons
- Feature-heavy, not very minimal (but configurable)
- Product from China
- Integration steps:
- Choose a storage provider (I chose LeanCloud)
- Choose a server provider for deployment (I chose Vercel)
- Choose an email provider (I chose Brevo (formerly SendinBlue))
- Frontend integration (embed in Hugo)
Deployment diagram:
For the actual steps, follow the official docs:
- Quick Start | Waline
- Deploy on Vercel | Waline
- Bind CNAME
- Import data
- Convert with Migration Tool | Waline
- Import at https://console.leancloud.app/apps/yours/storage/import-export
- Page configuration
- Disable some features via client props
- Enable SMTP
- Set
AUTHOR_EMAIL - Set
SENDER_NAME - Set
SENDER_EMAIL
- Set
- Server config: https://waline.js.org/reference/server/config.html#tgtemplate
- Issues I ran into
- Disqus export does not include user emails, so Gravatar avatars don’t show; no workaround
- Email config needs extra env vars, otherwise your personal email can be exposed
Implementation PR (frontend only; backend contains secrets and isn’t shared): feat: comments on waline · alswl/blog.alswl.com@e34e348
Utterances Implementation
Utterances is even simpler to set up—a single PR enables it. feat: comment using utteranc · alswl/en.blog.alswl.com@29028f6 (github.com)
Nothing fancy, just simplicity. Given the low traffic on my English blog, the minimal approach works.
Summary
I ended up with Waline and Utterances as my comment systems; both have zero deployment cost.
I traded some access speed and security for better data control and a self-hosted setup. In terms of stability, although the chain is more complex and a single node can fail, relying on Vercel, LeanCloud, and Brevo keeps overall risk manageable.
After all, it’s just a small comment system—zero cost and “it works” is enough.
Feel free to try leaving a comment below.
Link: How to Build a Blog Comment System with Free Cloud Services | Log4D
3a1ff193cee606bd1e2ea554a16353ee