This repo includes everything you need to run the Bluesky appview. It also serves a self-hosted PLC mirror and an instance of the web app.
You'll need:
- A domain
- With the default settings, you'll want A records for
your.domain,bsky.your.domain,plc.your.domain, andsearch.your.domain, as well as, optionally,api.your.domainandpublic.api.your.domain.
- With the default settings, you'll want A records for
- Docker,
yq
- Copy
env.exampleto.envand fill in the values.- You can run
scripts/gen-secrets.shto generate the various passwords you'll need.
- You can run
- Run
scripts/build.shto build the Docker images. - Deploy with
docker compose up -d.
After you've got the appview running, check out backfill-bsky if you'd like to fill in historical data.
You'll be running the following services:
| Service | Description |
|---|---|
| bsky | The appview |
| bsky-indexer | Indexes events from a relay into the appview database |
| labelmuncher | Indexes labels from labelers into the appview |
| zplc-server | A PLC directory mirror (not strictly necessary, but decent odds you'll get rate limited trying to use plc.directory) |
| zplc-ingest | Exports logs from plc.directory for the mirror to serve |
| database | The Postgres database used by the appview (this is a custom build that includes pg_repack; can be useful to run after backfilling) |
| redis | Redis, used by the appview and bsky-indexer |
| pgbouncer | A connection pool for the database |
| caddy | Reverse proxy |
| social-app | An instance of the Bluesky web app |
| opensearch | An OpenSearch instance for search functionality |
| palomar | Bluesky's backend for OpenSearch, handling indexing and querying |
Credit to itaru2622 for the original repo that this is based on.