Running a public Xudanu server: terms to consider

Notes for operators. Not legal advice — adapt to your jurisdiction and situation.

Your server, your rules

The software ships without terms of use because it doesn't get to decide them — you do. If your server is private (you and a few collaborators), you may need nothing formal at all. If it is public, a short terms-of-use page is worth having before strangers arrive. The demo server's terms are one example: xudanu.com terms of use.

The three things every public server should state

Things worth stating that are specific to this system

Your data, your responsibility

All data lives in your container volume or data directory — nothing leaves your machine, and the Xudanu project has no access to, control over, or responsibility for servers it does not operate. Back up your data directory; the snapshot format and backup/restore steps are in the documentation.

Defaults that help

edit_policy: owner-only (set via admin console) network/external links: off by default content filter: on (1 MB text cap)

Review these in the admin console before going public. The server directory, federation, and cross-server features are all opt-in — leave them off until you mean them.

Identity models — your choice per server

Identities are created in-app by default: no email, no external accounts, pseudonymous by design. If you want externally accountable identities instead (or as well), enable OAuth sign-in — per provider, by setting credentials at startup:

The app detects what your server has configured (via /health) and shows exactly those buttons. Callback URLs: https://your-host/auth/github/callback and https://your-host/auth/google/callback. Setting credentials is the toggle — remove them and restart to disable.

Getting GitHub credentials (5 minutes)

Getting Google credentials (10 minutes)

Wiring it in

Set the four environment variables on the server process (Docker: an env_file beside your compose file works well) and restart. Verify with /health — it reports oauth_providers — and check the sign-in buttons appear. New users create an identity on first sign-in; the local in-app identity path remains available regardless.

Worth knowing