index
NOTE: this is a personal todo list, the gsky.ln4.net domain does not exist, it's all under /etc/hosts
and mkcert
so i can be sure about what urls i would have to create in the future without having to go back and forth with a dns provider, letsencrypt, etc.
"independent appview" here means that i can run the entire FOSS bluesky stack (from did:plc to appview functionality) without any dependence on bluesky pbc infrastructure
the current versions of my scripts are in https://github.com/lun-4/atproto/tree/luna.gluesky/luna
- another note: social-app patches aren't easy, i likely want to PR something and then expose an easy configuration rather than maintaining a diff against social-app main branch.
from How to self-host all of Bluesky (except the AppView (for now)), we need:
[x]
PDS (Done at 2024-11-10)- straightforward
- localhost:2583
- https://pds.gsky.ln4.net
[x]
Relay (Done at 2024-11-10)- somewhat straightforward, but it runs
- localhost:2470
- https://relay.gsky.ln4.net
[x]
spin tls for everything (Done at 2024-11-11)[ ]
Jetstream- no need for it. optional infra
[x]
PLC (Done at 2024-11-09)- very easy, spin up postgres and use https://github.com/did-method-plc/did-method-plc
- localhost:2582
- https://plc.gsky.ln4.net
[x]
social-app (bskyweb) (Done at 2024-11-12)[x]
make initial patches etc (Done at 2024-11-10)
[ ]
social-app: can i hook api urls and did configs as env vars on frontend build time?[x]
appview service (Done at 2024-11-12)- no dms for now: https://bsky.app/profile/danabra.mov/post/3l7yye5epjl2n
- "direct messages service code (it’s not currently integrated into protocol and is just a side thing), some code for sending push notifications (too hacky), and our dataplane layer (it’s tied to our infra and likely not very useful outside of that — we do provide a reference impl in postgres instead)"
- "it’s possible we’ll open source these in the future too but it’s also possible you’d just want to write your own versions of those that work differently if you’re running a whole new product"
- https://bsky.app/profile/danabra.mov/post/3l7yweupx4z2d
- "(2) going under means that if you go to bsky.app, there will be no app there. getting that up and running will require someone to step up and do it. it’s not very easy right now (we want to make it easier) but it’s obviously not as hard as creating a product from scratch :) most code is open source"
[x]
dataplane (Done at 2024-11-10)- localhost:2671
- https://bsky.app/profile/pfrazee.com/post/3l7bqizwfch25
- "dataplane -- that part SHOULD have a fully working alternative in foss that just uses postgres the rest, I need to talk through w/the team and sort out the logic. No matter what there needs to be a boxed up full cloneable version of the system"
- https://bsky.app/profile/bnewbold.net/post/3l7ekxffthg24
- https://bsky.app/profile/pfrazee.com/post/3l7btv2f4wh2s
- https://bsky.app/profile/jaz.bsky.social/post/3l7bwhna7i62t
- https://bsky.app/profile/pfrazee.com/post/3l7bqfcxhlc24
- "Yeah all that's valid. To move at the pace we needed, we decided we have to trust our future selves to 1) help get other full providers online, and 2) migrate all the systems onto the protocol. So I guess we're asking yall to trust us on that too."
[x]
spin something up??? (Done at 2024-11-10)
[ ]
bsync- optional
- "mute" and "notif" operations?
[ ]
Ozone- https://bsky.app/profile/jaz.bsky.social/post/3l6vfbhdmjq2f
- moderation service requires persistent did, can't use dev-env
[ ]
get a successful user search[x]
fix tls (Done at 2024-11-12)[N]
configure entryway? https://docs.bsky.app/docs/advanced-guides/entryway (Left at 2024-11-14)- seems to be a reverse proxy built into the protocol, but it has a did?? maybe pds service identity? is that a thing?
- https://docs.bsky.app/docs/advanced-guides/service-auth
- no need for that it seems, user search works
%at=2024-11-15T01:34:58.189Z
- no dms for now: https://bsky.app/profile/danabra.mov/post/3l7yye5epjl2n
[x]
feedgens (Done at 2024-11-15)- that's not open source lol, thanks bluesky pbc
- dev-env provides fake feedgens, one that selects posts at random, and another that's just a mock user's likes.
- can i just provide the entire firehose as a default feedgen? akin to Pleroma's public timeline view?
- https://github.com/bluesky-social/feed-generator
random notes before i started making an actual todo list to get into a fully independent system:
PDS is simple, i got scripts that spun up my own and a PDS can be easily shared between multiple users
i need a basic relay service but i don't need to hold the entire network in my server
jetstream seems.. optional? definitely has instructions tho
for my experiments a localhost PLC would be welcome, no need to sync either
social-app is... easy to build, but seems like it hardcodes api.bsky.app
a lot, you need lots of places to do patches
appview is... ???? i'm trying to understand the dependencies from social-app to the appview
- it seems to speak some XRPC, same as pds
- XRPC following the app.bsky namespace
social-app immediately calls:
<h1 id="returns-country-code">returns country code <a href="#returns-country-code">#</a></h1>
https://bsky.app/ipcc
<h1 id="hardcoded-did:">hardcoded did: <a href="#hardcoded-did:">#</a></h1>
<h1 id="did:plc:z72i7hdynmk6r22z27h6tvur---provides-all-the-feeds">did:plc:z72i7hdynmk6r22z27h6tvur - provides all the feeds <a href="#did:plc:z72i7hdynmk6r22z27h6tvur---provides-all-the-feeds">#</a></h1>
https://api.bsky.app/xrpc/app.bsky.feed.getFeed?feed=at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/whats-hot&limit=30&lang=en
<h1 id="hardcoded-dids">hardcoded dids <a href="#hardcoded-dids">#</a></h1>
<h1 id="did:plc:ekitcvx7uwnauoqy5oest3hm---br-moderation">did:plc:ekitcvx7uwnauoqy5oest3hm - BR Moderation <a href="#did:plc:ekitcvx7uwnauoqy5oest3hm---br-moderation">#</a></h1>
<h1 id="did:plc:r55ow3tocux5kafs5dq445fy---de-moderation">did:plc:r55ow3tocux5kafs5dq445fy - DE Moderation <a href="#did:plc:r55ow3tocux5kafs5dq445fy---de-moderation">#</a></h1>
<h1 id="did:plc:0ar7c4by46qjdydhdevvrndac---global-bluesky-moderation-(doesn't-seem-hardcoded?)">did:plc:0ar7c4by46qjdydhdevvrndac - Global Bluesky Moderation (doesn't seem hardcoded?) <a href="#did:plc:0ar7c4by46qjdydhdevvrndac---global-bluesky-moderation-(doesn't-seem-hardcoded?)">#</a></h1>
https://public.api.bsky.app/xrpc/app.bsky.labeler.getServices?dids=did:plc:0ar7c4by46qjdydhdevvrndac&dids=did:plc:ekitcvx7uwnauoqy5oest3hm&dids=did:plc:r55ow3tocux5kafs5dq445fy&detailed=true
https://api.bsky.app/xrpc/app.bsky.feed.getFeed?feed=at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/whats-hot&limit=30&lang=en
https://api.bsky.app/xrpc/app.bsky.feed.getFeed?feed=at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/whats-hot&cursor=eyJvIjoiMjAyNC0xMS0wOFQxMzo0MjowMS4yODAzOTczNDdaIiwibiI6IjIwMjQtMTEtMDlUMDE6NDI6MDEuMjgwMzk3MzQ3WiIsImYiOjAsImMiOjAsInAiOjAsInRzIjowLCJwZyI6MCwicyI6WzExODQ0OTIwMTcsMTE4NjE0NTg1NiwxMTg2MDg4OTc2LDExODU2MTU3NjcsMTE4NjA3MDYxMSwxMTg2MTczODg4LDExODUyMjYzODUsMTE4NTE1OTMxMCwxMTg1ODIxMTA4LDExODU4NzQ5NjIsMTE4NTQ2MTk3NCwxMTg1MjIwODMwLDExODU2MzQ0NzksMTE4NTE3MzI2MSwxMTg1Nzg5Mzk3LDExODU4MjE1OTQsMTE4NjA3NjkxNywxMTg0OTYwMzIzLDExODYwMDI3MTUsMTE4NTk0NTc3OCwxMTg1NzM5MDc4LDExODU4MzcwODUsMTE4NTg2MjM5NywxMTg1NDE0MjQ4LDExODM2MzgyODQsMTE4NTM2ODkxOCwxMTg1NDMzNDM4LDExODQ4MzE0MDAsMTE4NTc4MTcyOSwxMTg2MDA3ODAwXX0=&limit=30&lang=en
https://public.api.bsky.app/xrpc/app.bsky.feed.getFeed?feed=at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/whats-hot&limit=1