跳转到主要内容

Introduction

Casnode is an open-source forum with the look and features of Discourse. The backend is a single Go binary; the pages are rendered by a Next.js server that the Go process starts and proxies to. It keeps the familiar Discourse interface (topic lists, the timeline beside a topic, the composer docked at the bottom, notifications and badges) without Ruby, PostgreSQL or Redis.

The project is developed by the Casbin community and used as its official forum at forum.casbin.com. A demo anyone can post in runs at demo.casnode.com. The code is at github.com/casnode/casnode, under the Apache-2.0 license.

How it fits together​

browser ──> Go backend (httpport, 16900 by default) ──> /api, /uploads, RSS, sitemap
│
└──> Next.js server (httpport + 1) ──> server-rendered pages
  • The Go process owns the database, uploads, sessions, notifications, email, search and the HTTP API.
  • The Next.js server renders every page on the server, so crawlers get the full HTML. The Go process forwards page requests to it.
  • The default database is SQLite. MySQL, PostgreSQL and SQL Server are supported.
  • Members can sign up with an email and a password, log in through any OpenID Connect or OAuth 2.0 provider, or use Casdoor.

What you need​

  • A Linux, macOS or Windows machine.
  • Node.js 20 or newer. The frontend server is a Node process, started by the Go binary.
  • Go 1.25 or newer only if you build from source.

Casnode 2.x is a rewrite​

2.0 is a new code base with a new database schema. A 1.x forum cannot be upgraded in place: keep the old forum running and set up 2.x as a separate site. The old V2EX-style code is kept at casnode/casnode-old and is no longer maintained.

Next steps​