Documentation

Start here

Documentation is written the way the software is built: one page per job, no page pretending a decision is easier than it is. If something is not certified yet, it says so on the page where it matters.

Guides

The configuration file

One annotated TOML file holds everything. littlefedi init writes a working version of it and comments out what you skipped, so the file doubles as a reference for what you did not enable.

Sections of littlefedi.toml
SectionCovers
top levellocal_domain, web_domain, low_power, background_maintenance
[db]SQLite path or PostgreSQL DSN, pool sizing
[queue], [streaming]Delivery workers, retry behaviour, streaming backend
[http]Listener, proxy_uri, trusted_proxies
[media], [media.s3]Local or S3 storage, size limits, remote cache policy
[instance]Name, descriptions, rules, moderation contact, terms
[federation]Relays, signing options, sign_with_oip
[mesh], [lighthouse], [directory]littleMesh node, relay and directory roles
[web]Public local timeline, catch-up, interface options
[auth], [rate_limits]Registrations, approval, verified email, MFA, limits
[housekeeping], [backup], [cache]Retention sweeps, built-in backups, cache sizing
[blog]Static blog generation
[smtp], [push]Outgoing mail and Web Push
[observability]Metrics, profiler, log detail

Secrets do not belong in the TOML. Put them in a root-owned environment file next to it, with mode 0640:

LITTLEFEDI_AUTH_MFA_ENCRYPTION_KEY=<openssl rand -base64 32>
LITTLEFEDI_MEDIA_PROXY_SECRET=<openssl rand -hex 32>
LITTLEFEDI_SMTP_PASSWORD=<SMTP password>

Every configuration key has an environment-variable equivalent with the LITTLEFEDI_ prefix, which is what makes that split possible.

The command line

The same binary is the server and the administration tool. Run any command with --help for its full option list.

Command groups
CommandWhat it does
littlefediRuns the server with the given --config
initInteractive setup: instance or lighthouse, domains, proxy, littleMesh, instance profile
postPublishes standard input or a Markdown file, with visibility and blog options
adminAccounts, invitations, approval, suspension, domain blocks, relays, media, blogs, audit
backupbackup now and backup restore
meshid, peers, ping, publish
self-destructRetires an instance deliberately, instead of leaving debris on every peer
printf 'Hello\n' | ./littlefedi --config littlefedi.toml post
./littlefedi --config littlefedi.toml post --username alice \
  --markdown --visibility private post.md

./littlefedi --config littlefedi.toml admin create-user --username alice --admin
./littlefedi --config littlefedi.toml admin refresh-actors
./littlefedi --config littlefedi.toml backup now --media

About the source

The repository is not public yet, so there are no clone commands, tarballs or package repositories on this site. The documentation is here first because the decisions it describes are the part worth reviewing before the code lands.

When it is published, this page will carry the repository address, the release archives, the checksums and the signature verification steps. Until then, treat every command on this site as a description of the shipped interface rather than something you can run today.