Security-first Rust forum platform for serious communities.
API-first. Moderation-aware. Built for SurrealDB, rootless containers, Fluxheim, and WASM extension boundaries.
Mythenheim is a security-first forum platform written in Rust. It aims to cover the durable workflows expected from mature forum communities while keeping a stricter execution boundary: Rust core, SurrealDB storage, rootless Podman operation, and sandboxed extension points.
The compiled Mythenheim binary targets Linux, macOS, and Windows. Linux remains the container and rootless Podman target, while direct binary deployments should stay portable across the supported operating-system families. BSD is kept as a best-effort source portability goal, not a release-blocking target.
The project started at 0.10.0 and is currently 0.12.0. Releases before
1.0.0 are incubator releases: every version has tests and docs, but public
APIs and database schema can still change. 1.0.0 is the first stable
production forum core.
Production origin: https://mythenheim.eu.
Local development origin on this machine, when DNS/proxying is needed:
https://dev.mythenheim.eu.
- Rust
1.96.0, edition2024. - Axum health service.
- TOML config loader and validator.
- Safe Markdown preview renderer backed by
pulldown-cmarkandammonia. - Capability string validator for the RBAC/ABAC permission plan.
- Preview RBAC/ABAC permission resolver and role store with trust-level grants, scoped roles, ownership checks, and role-assignment escalation prevention.
- Password hashing, opaque session-token primitives, preview auth routes, and login lockout hooks.
- Preview category/topic/post API with nested category reads, private categories, direct post reads, edit revisions, soft deletes, pagination, and sanitized Markdown rendering.
- Versioned SurrealDB schema migrations for identity, roles, sessions, categories, topics, posts, moderation, audit logs, and graph edges.
- Migration validation CLI and rootless SurrealDB migration smoke test.
- Fluxheim-inspired checks: format, clippy, tests, release metadata, doc links.
- Rootless Podman helper that starts SurrealDB on a random local port for tests.
- Fluxheim Wolfi reverse-proxy smoke fixture.
- Binary portability CI for Linux, Windows, and macOS.
- Versioned roadmap from
0.10.0through1.0.0and later1.x.
Mythenheim is API-first and deployment-conscious:
- Axum and Tokio for HTTP service code.
- SurrealDB for document and graph storage.
- Opaque server-side sessions instead of primary stateless session tokens.
- Server-side content parsing and sanitization.
- Capability-based permissions with contextual ownership checks.
- Rootless Podman and direct compiled-binary deployment.
- Direct binary portability across Linux, macOS, and Windows.
- Fluxheim reverse-proxy compatibility for
mythenheim.euanddev.mythenheim.eu. - OpenTelemetry and Prometheus planned before
1.0.0. - WebAssembly plugins and theme/template safety after the stable forum core.
cargo run -- --check-config --config examples/mythenheim.toml
scripts/checks.shRun the development HTTP service:
cargo run -- --config examples/mythenheim.tomlDefault example listener: 127.0.0.1:37171.
Start a rootless SurrealDB test container on a random host port:
scripts/start_surrealdb_test.shThe script prints a MYTHENHEIM_DATABASE_ENDPOINT=... line that can be used by
future integration tests.
Validate and print the SurrealDB schema migrations:
cargo run -- --check-migrations
cargo run -- --print-migrationsBuild a local validation release binary from the current checkout:
python3 scripts/build_release_binary.py linux --repo . --ref HEAD --allow-untaggedExercise the preview auth API while the local service is running:
curl -sSf -X POST http://127.0.0.1:37171/api/v1/auth/register \
-H 'content-type: application/json' \
-d '{"username":"Member","email":"member@example.test","password":"correct horse battery staple"}'Apply the generated migrations twice against a temporary rootless SurrealDB container:
scripts/smoke_surrealdb_migrations.shRun the Fluxheim Wolfi reverse-proxy smoke:
scripts/smoke_fluxheim_wolfi.shThis builds or reuses a Fluxheim Wolfi image and verifies both mythenheim.eu
and dev.mythenheim.eu through the proxy.
- Architecture plan
- Forum feature investigation
- Version plan
- Build and test guide
- Authentication and session plan
- Forum core preview
- Permissions preview
- Platform support
- Release binary builds
- Rootless SurrealDB testing
- Fluxheim proxy deployment
- Observability plan
- Release checklist
- Security policy
- Contributing guide
- Pull requests use .github/PULL_REQUEST_TEMPLATE.md.
- Public issues use structured templates under
.github/ISSUE_TEMPLATE. - Dependabot checks Rust and GitHub Actions weekly.
- CI runs formatting, release metadata validation, doc link checks, clippy, tests, reduced feature builds, local smoke, binary portability checks, dependency policy, and advisory checks.
- Container image builds are handled by
.github/workflows/container.yml. - The expensive Fluxheim Wolfi proxy smoke is manual through
.github/workflows/fluxheim-wolfi-smoke.yml.
Mythenheim is licensed under the European Union Public Licence 1.2. See
LICENSE and NOTICE.
