selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

rsky logo

Self-host rsky

AT Protocol in Rust for self-governed communities

AlphaOpen SourceApache-2.0
Updated4 months ago
LanguageRust
Setup difficultyAdvanced
Stars
717
Ports
2583 (PDS HTTP server), 9000 (Relay WebSocket/HTTP), 4100 (PDS Router HTTP), 4101 (PDS Router metrics), 9090 (Wintermute metrics)
Requires
SQLite
Blacksky website screenshot showing the intercommunal net interface

What is rsky?

rsky is a comprehensive Rust implementation of the AT Protocol providing multiple services for decentralized social networking. The core service is rsky-pds, a Personal Data Server that hosts user accounts and their repositories using SQLite for storage with optional S3-compatible blob storage. Additional services include rsky-relay for crawling the network and emitting a firehose stream, rsky-feedgen for custom feed algorithms, rsky-labeler for content moderation labeling, and rsky-wintermute as a monolithic indexer writing to PostgreSQL for app-view compatibility. The project includes an OAuth provider core (rsky-oauth) supporting DPoP, and primitives for permissioned spaces (rsky-space). Communities can self-host their own infrastructure to govern their data and moderate independently. The PDS supports SMTP or Mailgun for email, and optional Redis for distributed rate limiting. The project is pre-1.0 with explicit warnings about instability and no stability guarantees until 1.0.0.

Should you self-host rsky?

rsky scores 49/100 on selfhost.directory (how scoring works) and ranks #48 of 69 in Social Networks & Forums. It has 717 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is advanced: plan for several services and some ongoing maintenance. It is Apache-2.0-licensed and written mostly in Rust.

Its closest alternative on selfhost.directory is Discourse (83/100, 48 023 stars). It scores higher overall, so compare the two before you pick. See rsky vs Discourse side by side.

Features

  • AT Protocol implementationPre-1.0, no stability guarantees
  • Cryptographic primitives
  • DID and handle resolution
  • Feed Generator
  • Firehose consumer
  • Indexer (Wintermute)
  • Labeler
  • Lexicon schema types
  • OAuth provider core
  • PDS Router
  • Permissioned spaces
  • Personal Data Server (PDS)
  • Relay
  • Repository storage with MST
  • Video Processing

rsky README

How to configure rsky

  • DATABASE_URLPostgreSQL connection string for wintermute

    PostgreSQL connection string for wintermute

  • PDS_ADMIN_PASSAdmin password for admin endpoints

    Admin password for admin endpoints

  • PDS_BLOBSTORE_DISK_LOCATIONDisk blobstore directory

    Disk blobstore directory

  • PDS_BLOBSTORE_S3_BUCKETS3 bucket for blobs (mutually exclusive with disk)

    S3 bucket for blobs (mutually exclusive with disk)

  • PDS_BLOBSTORE_S3_ENDPOINTS3-compatible endpoint URL (AWS_ENDPOINT is honoured as well)

    S3-compatible endpoint URL (AWS_ENDPOINT is honoured as well)

  • PDS_BLOBSTORE_S3_REGIONBucket region

    Bucket region

  • PDS_DATA_DIRECTORYBase directory for all SQLite databases and actor stores

    Base directory for all SQLite databases and actor stores

  • PDS_DEV_MODEEnable development mode; also lets outbound requests reach private and plain-http addresses

    Enable development mode; also lets outbound requests reach private and plain-http addresses

  • PDS_DPOP_SECRET32-byte hex secret for OAuth DPoP nonce rotation

    32-byte hex secret for OAuth DPoP nonce rotation

  • PDS_EMAIL_FROM_ADDRESSFrom address for account mail

    From address for account mail

  • PDS_EMAIL_SMTP_URLSMTP URL for sending account mail (smtps:// for implicit TLS, smtp:// for STARTTLS)

    SMTP URL for sending account mail (smtps:// for implicit TLS, smtp:// for STARTTLS)

  • PDS_HOSTNAMElocalhostPublic hostname (default localhost)

    Public hostname (default localhost)

  • PDS_JWT_KEY_K256_PRIVATE_KEY_HEXJWT signing key (K-256 private key in hex)

    JWT signing key (K-256 private key in hex)

  • PDS_MAILGUN_API_KEYMailgun API key for sending mail

    Mailgun API key for sending mail

  • PDS_MAILGUN_DOMAINMailgun domain

    Mailgun domain

  • PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEXPLC rotation key (K-256 private key in hex)

    PLC rotation key (K-256 private key in hex)

  • PDS_PORT2583Listen port (default 2583)

    Listen port (default 2583)

  • PDS_RATE_LIMITS_ENABLEDfalseApply the reference PDS's request limits (default false)

    Apply the reference PDS's request limits (default false)

  • PDS_READ_ONLYServe reads only

    Serve reads only

  • PDS_REDIS_SCRATCH_ADDRESShost:port of a redis used to track DPoP proof replay across processes

    host:port of a redis used to track DPoP proof replay across processes

  • PDS_REPO_SIGNING_KEY_K256_PRIVATE_KEY_HEXRepo signing key (K-256 private key in hex)

    Repo signing key (K-256 private key in hex)

  • PDS_SERVICE_DIDdid:web:{hostname}Service DID (default did:web:{hostname})

    Service DID (default did:web:{hostname})

  • RELAY_HOSTSComma-separated relay hostnames for wintermute

    Comma-separated relay hostnames for wintermute

More in Social Networks & Forums

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…