Deploy Waline

Self-hosted Waline blog comments on Postgres, admin created at deploy

Deploy Waline

/var/lib/postgresql/data

Just deployed

Deploy and Host Waline on Railway

Waline is an open-source comment system for static sites and blogs. You add a small JavaScript client to your pages, and a Node.js server stores comments, pageview counts and reactions. It supports Markdown, emoji, nested replies, comment moderation, e-mail notifications and an admin dashboard for managing comments and users.

About Hosting Waline

Hosting Waline means running its Node.js server next to a database and giving the server a public HTTPS address that your blog's pages can call. This template runs the official lizheming/waline image (1.43.6, pinned by digest) with Railway Postgres on a volume. On first start it creates the database tables and an administrator account from your e-mail and a generated password, so nobody else can claim the admin role by registering first. JWT signing uses a generated secret. After deploying, point the Waline client on your site at the Railway domain, and optionally set your blog's domain so other sites can't use your server.

Common Use Cases

  • Comments on Hugo, Hexo, Jekyll, Astro, VuePress or other static sites
  • Pageview counters and emoji reactions on blog posts and docs
  • A self-hosted, ad-free replacement for Disqus with your own moderation

Dependencies for Waline Hosting

  • Waline server (lizheming/waline, Node.js)
  • PostgreSQL database (Railway Postgres)

Deployment Dependencies

Implementation Details

First login. Open https:///ui and sign in with WALINE_ADMIN_EMAIL and the generated WALINE_ADMIN_PASSWORD, which you'll find in the Waline service's Variables tab. Change the password in the dashboard afterwards. Visitors who register later get normal (guest) accounts.

Add Waline to your site:


<div id="waline"></div>

Lock it to your blog. Set SECURE_DOMAINS to your blog's domain (comma-separated, e.g. blog.example.com) so that only your site can read and post comments. The template adds the Waline domain itself so the dashboard keeps working. Notifications. To get e-mail (or Telegram, Discord, …) notifications, add Waline's standard variables to the Waline service: SMTP_* and AUTHOR_EMAIL, plus SITE_NAME and SITE_URL (your blog's name and URL, used for the links in notifications). Other options such as COMMENT_AUDIT work the same way.

Good to know. The Waline server asks https://oauth.lithub.cc for the list of social login providers on every request, as upstream does, so it needs outbound internet access. The time zone defaults to UTC; set TZ to change it.

Why Deploy Waline on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Waline on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.


Template Content

More templates in this category

View Template
Pixelfed
Explore + Share beautiful photos and videos on the Fediverse

Evan Boehs
30
View Template
Hexo
Hexo — fast static blog framework with admin editor and S3 media storage

INAPP
2
View Template
Castopod
Self-hosted podcast hosting with Fediverse support

INAPP
1