8000 GitHub - DrChat/bluepds: Alternative Bluesky PDS implementation
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

DrChat/bluepds

Repository files navigation

Bluesky PDS

         __                         __
        /\ \__                     /\ \__
    __  \ \ ,_\  _____   _ __   ___\ \ ,_\   ___
  /'__'\ \ \ \/ /\ '__'\/\''__\/ __'\ \ \/  / __'\
 /\ \L\.\_\ \ \_\ \ \L\ \ \ \//\ \L\ \ \ \_/\ \L\ \
 \ \__/.\_\\ \__\\ \ ,__/\ \_\\ \____/\ \__\ \____/
  \/__/\/_/ \/__/ \ \ \/  \/_/ \/___/  \/__/\/___/
                   \ \_\
                    \/_/

This is an implementation of an ATProto PDS, built with Axum and Atrium. Heavily inspired by David Buchanan's millipds. This implementation forked from the azure-rust-app starter template.

This PDS implementation uses a SQLite database to store private account information and file storage to store canonical user data.

If you want to see this PDS in action, there is a live account hosted by this PDS at @test.justinm.one!

Warning

This PDS is undergoing heavy development. Do NOT use this to host your primary account or any important data!

Quick Start

cargo run

Cost breakdown (on Azure)

This is how much it costs to host the @test.justinm.one account:

  • $20/mo
    • $13/mo: Azure Application Service
    • $5/mo: Azure Container Registry
    • $1/mo: Azure Storage Account

This is without optimizing for costs. The PDS can likely be made much cheaper.

Code map

* migrations/   - SQLite database migrations
* src/
  * endpoints/  - ATProto API endpoints
  * auth.rs     - Authentication primitives
  * config.rs   - Application configuration
  * did.rs      - Decentralized Identifier helpers
  * error.rs    - Axum error helpers
  * firehose.rs - ATProto firehose producer
  * main.rs     - Main entrypoint
  * metrics.rs  - Definitions for telemetry instruments
  * plc.rs      - Functionality to access the Public Ledger of Credentials
  * storage.rs  - Helpers to access user repository storage

To-do

High-level features

  • Authentication
  • Storage backend abstractions
    • Azure blob storage backend
    • Backblaze b2(?)
  • Telemetry
    • Metrics (counters/gauges/etc)
    • Exporters for common backends (Prometheus/etc)

APIs

  • Service proxying
  • UG /xrpc/_health (undocumented, but impl by reference PDS)
  • com.atproto.identity
    • AP /xrpc/com.atproto.identity.updateHandle
    • AP /xrpc/com.atproto.identity.requestPlcOperationSignature
    • AP /xrpc/com.atproto.identity.signPlcOperation
    • UG /xrpc/com.atproto.identity.resolveHandle
  • com.atproto.server
    • UG /xrpc/com.atproto.server.describeServer
    • UP /xrpc/com.atproto.server.createAccount
    • AP /xrpc/com.atproto.server.createInviteCode
    • UP /xrpc/com.atproto.server.createSession
    • AG /xrpc/com.atproto.server.getServiceAuth
    • AG /xrpc/com.atproto.server.getSession
  • com.atproto.repo
    • AP /xrpc/com.atproto.repo.applyWrites
    • AP /xrpc/com.atproto.repo.createRecord
    • AP /xrpc/com.atproto.repo.putRecord
    • AP /xrpc/com.atproto.repo.deleteRecord
    • UG /xrpc/com.atproto.repo.describeRepo
    • UG /xrpc/com.atproto.repo.getRecord
    • UG /xrpc/com.atproto.repo.listRecords
    • AP /xrpc/com.atproto.repo.uploadBlob
  • com.atproto.sync
    • UG /xrpc/com.atproto.sync.getBlob
    • UG /xrpc/com.atproto.sync.getBlocks
    • UG /xrpc/com.atproto.sync.getLatestCommit
    • UG /xrpc/com.atproto.sync.getRecord
    • UG /xrpc/com.atproto.sync.getRepoStatus
    • UG /xrpc/com.atproto.sync.getRepo
    • UG /xrpc/com.atproto.sync.listBlobs
    • UG /xrpc/com.atproto.sync.listRepos
    • UG /xrpc/com.atproto.sync.subscribeRepos

Quick Deployment (Azure CLI)

az group create --name "webapp" --location southcentralus
az deployment group create --resource-group "webapp" --template-file .\deployment.bicep --parameters webAppName=testapp

az acr login --name <insert name of ACR resource here>
docker build -t <ACR>.azurecr.io/testapp:latest .
docker push <ACR>.azurecr.io/testapp:latest

About

Alternative Bluesky PDS implementation

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 
0