1
0
Fork
You've already forked onne
0
No description
  • Rust 85.1%
  • CSS 8.9%
  • Fluent 5.8%
  • Shell 0.2%
2026年05月06日 18:24:32 +02:00
contrib get a git 2026年05月06日 18:24:32 +02:00
locales get a git 2026年05月06日 18:24:32 +02:00
src get a git 2026年05月06日 18:24:32 +02:00
build.rs get a git 2026年05月06日 18:24:32 +02:00
Cargo.toml get a git 2026年05月06日 18:24:32 +02:00
LICENSE get a git 2026年05月06日 18:24:32 +02:00
README.md get a git 2026年05月06日 18:24:32 +02:00

onne

A smol, no-JS fediverse client.

Onne is a server-side Mastodon client. It speaks the Mastodon API, renders plain HTML, and ships as a self-contained static binary. Put a reverse proxy in front and off you go.

Status

Early. The basics work; login, timelines (home / local / federated / hashtag / list), composing (with media, polls, content warnings, visibility), notifications, search, profiles, RSS, settings, reports. Expect rough edges.

Build

Requires a recent stable Rust toolchain.

cargo build --release

For a fully static musl build:

rustup target add x86_64-unknown-linux-musl
cargo build --release --target x86_64-unknown-linux-musl

The resulting binary at target/release/onne (or target/x86_64-unknown-linux-musl/release/onne) is self-contained; scp it to a server and run it.

Run

ONNE_PORT=9000 ONNE_DB_PATH=./onne.db ONNE_BASE_URL=https://onne.example.org ./onne
Variable Default Notes
ONNE_PORT 9000 Bind port. Listens on 0.0.0.0.
ONNE_DB_PATH onne.db redb database for OAuth app credentials and encrypted sessions.
ONNE_BASE_URL http://localhost:$PORT Public origin used for OAuth redirect_uri. Must match what users hit.

Put it behind nginx/Caddy/your TLS terminator of choice.

Deployment

contrib/ contains service units; systemd is best-effort:

  • contrib/systemd/onne.service
  • contrib/openrc/onne

Data at rest

OAuth app credentials are stored in plaintext (they're not user secrets; they identify onne itself to the upstream Mastodon instance). Sessions — which include access tokens — are stored encrypted: the session cookie is the only credential, and from it the database row's index and its AEAD key are derived via SHA-256 with distinct domain tags.

Localisation

Strings are in locales/*.ftl (Fluent). PRs for more locales welcome.

License

onne is licensed under the GNU Affero General Public License v3.0 or later. See LICENSE.

The bundled Lexend variable font is licensed under the SIL Open Font License v1.1; see src/views/Lexend-OFL.txt.