See Casnode in production: Casbin Forum, with hundreds of real questions about Casbin, Casdoor, OpenAgent and Casvisor. Visit →
M

Most of our members won't open the forum every day. An email when someone replies to them or mentions them would bring them back to the discussion.

C

Every topic, category, tag and profile page is rendered on the server, so the full text is in the HTML. On top of that:

  • canonical URLs, Open Graph tags and DiscussionForumPosting structured data on topics
  • /sitemap.xml, and RSS at /latest.rss and /top.rss
  • robots.txt that keeps private pages out
  • ?page= links on lists and long topics that crawlers can follow
  • a topic URL with an old slug redirects to the current one

Set site_url on the Site Settings page, so that canonical URLs and the sitemap use your domain.

C

Casnode sends https://<the address in the browser>/callback, so that exact URL has to be in the application's Redirect URLs in Casdoor. http vs https and www vs no www count as different addresses.

Also check casdoorOrganization and casdoorApplication: only users of that organization can sign in.

C

conf/app.local.conf: same format as conf/app.conf, ignored by git, and every item in it overrides app.conf. Pulling a new version never conflicts with it.

Every item can also be set as an environment variable of the same name (clientSecret=...), which is what the Docker example does.

C

Put this in conf/app.local.conf:

driverName = postgres
dataSourceName = user=casnode password=secret host=localhost port=5432 sslmode=disable
dbName = casnode

On the first start Casnode creates the database if it's missing, then the tables. For MySQL it's driverName = mysql with dataSourceName = casnode:secret@tcp(localhost:3306)/, and mssql works for SQL Server.

Casnode doesn't move the data of the SQLite file into the new database, so either start fresh or copy it over with your own tools.