altq.net (PDS)'s Avatar

altq.net (PDS)

@altq.net.bsky.social

Hi ๐Ÿ‘‹, welcome to my self-hosted PDS. Website: ๐ŸŒ https://altq.net Contact: ๐Ÿง‘โ€๐Ÿ’ป @fry69.dev Code: โ„น๏ธ https://repo.altq.net/ Discord: ๐Ÿ’ฌ https://discord.altq.net/ (ask there or DM me for an invite code)

58 Followers  |  36 Following  |  188 Posts  |  Joined: 01.11.2024  |  2.5504

Latest posts by altq.net on Bluesky

Hi there! ๐Ÿ‘‹

01.12.2025 07:17 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

If you use PDS Gatekeeper you will want to make this change manually to your /pds/composer.yaml instead of using pdsadmin update. Using pdsadmin update clears out your current compose with the one from the PDS repo. Should be a oneliner change

18.11.2025 18:32 โ€” ๐Ÿ‘ 25    ๐Ÿ” 6    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Preview
@baileytownsend.dev/pds-gatekeeper Microservice to bring 2FA to self hosted PDSes

This PDS server now supports two factor authentication via email. You can now activate 2FA in your account settings.

Thanks to tangled.org/@baileytowns... by @baileytownsend.dev

Hint for other PDS admins: When using Postfix as your mail server add ?tls=required at the end of the SMTP URL.

15.11.2025 11:50 โ€” ๐Ÿ‘ 26    ๐Ÿ” 3    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 3

FYI #atproto: To use this new goat tool on the PDS server, create a shell alias like this:

$ alias goat="docker exec -it pds goat"

$ goat --version
goat version v0.1.2-rev-c43d54a

$ goat account --help
NAME:
goat account - commands for auth session and account management
[...]

15.11.2025 02:38 โ€” ๐Ÿ‘ 8    ๐Ÿ” 2    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 1

The fact that the Bluesky PBC retroactively modifies the PLC directory should be given greater importance. Even if it is only a technical formality. #atproto ๐Ÿšจ

12.11.2025 07:24 โ€” ๐Ÿ‘ 26    ๐Ÿ” 6    ๐Ÿ’ฌ 4    ๐Ÿ“Œ 0
Screenshot of the properly escaped and non-functional attempt to trigger an alert via <script> tag.

Screenshot of the properly escaped and non-functional attempt to trigger an alert via <script> tag.

It does not work, as in this does not trigger an alert box in this "guestbook" on altq.net ->

09.11.2025 04:53 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Script test:

<script>alert('This should not work.')</script>

09.11.2025 04:48 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

A tiny scriptlet or web component will do the trick, see the "guestbook" on the altq.net page for inspiration -> github.com/fry69/altq.n...

08.11.2025 20:30 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Grafana dashboard showing billions of records written to the database

Grafana dashboard showing billions of records written to the database

Diagram of backfill process

Diagram of backfill process

FTR the app-view is up and has been for a few weeks.
Ingesting terabytes of social media data is not trivial.
I've worked to re-implement some experimental work by Divy into rsky-ingester, rsky-backfiller, and rsky-indexer

When it's production ready, it'll move off of staging.blacksky.community

04.11.2025 00:02 โ€” ๐Ÿ‘ 258    ๐Ÿ” 48    ๐Ÿ’ฌ 6    ๐Ÿ“Œ 5

๐Ÿซก

02.11.2025 22:47 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

I'm still in Nuremberg, Germany ๐Ÿ“

Good to know that my datacenter has not moved.

02.11.2025 22:28 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 1

AT service operators and moderation thinkers: I put together an early proposal around infra abuse notices across organizational boundaries.

really looking for feedback on this one, it is bait for counter-proposals and references to prior work!

02.11.2025 19:41 โ€” ๐Ÿ‘ 89    ๐Ÿ” 23    ๐Ÿ’ฌ 5    ๐Ÿ“Œ 1

FYI: Lexicon names are reverse DNS:

The lexicon app.mbdio.uk schema gets looked up via DNS as uk.mbdio.app

Details are here ->

26.10.2025 16:39 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

The moment self-hosted PDS with exploitable plugins will become popular, the HTTP request log on servers will gain a few new entries in the top 20 -> fry69.dev/_php_log

26.10.2025 13:30 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Anyone can run a WordPress server, but few can maintain it and most will choose a managed solution for this reason (incl. "trusted" plugins through the hoster/service provider/etc).

26.10.2025 13:25 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Well, I think you cited WordPress as an example in another thread part.

That is fitting in a way, as click & install plugins without further maintenance will lead to similar problems. E.g. compromising PDS and accounts through highjacked or intentionally malicious plugins.

26.10.2025 13:25 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Also stability requirements are high with a PDS. This goes a bit counter to the idea of plugins.

There are not many PDS blacklisted yet, but I guess that will change when those start to become unreliable or malicious on significant scale.

That is probably when "DNSBLs" for PDS will become a thing.

26.10.2025 13:01 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

A great idea If this does not lead to unfulfillable expectations.

While resource requirements for running a PDS are almost negligible, availability requirements are those of a web server (with graceful caching through relays/AppViews).

There is a reason why the mentioned status page exists.

26.10.2025 12:43 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0
Preview
Notes for estimating an atproto CAR file size | fry69 โ€ข Findings The PDS serves repository exports only through com.atproto.sync.getRepo, which opens the actorโ€™s SQLite DB, instantiates a SqlRepoReader, and streams the CAR via writeCarStream (packages/p...

Here is a gist with how this estimate works -> whtwnd.com/fry69.dev/3m...

25.10.2025 16:20 โ€” ๐Ÿ‘ 3    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
Notes for estimating an atproto CAR file size | fry69 โ€ข Findings The PDS serves repository exports only through com.atproto.sync.getRepo, which opens the actorโ€™s SQLite DB, instantiates a SqlRepoReader, and streams the CAR via writeCarStream (packages/p...

Here is a gist with how this estimate works -> whtwnd.com/fry69.dev/3m...

25.10.2025 16:20 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Upon popular request, the status page -> altq.net/status.html now shows an estimate for the CAR file size when requesting an archive.

See also this ๐Ÿงต -> bsky.app/profile/altq...

25.10.2025 15:55 โ€” ๐Ÿ‘ 4    ๐Ÿ” 1    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Preview
altq.net/bin/generate-status.py at main ยท fry69/altq.net PDS modification for altq.net. Contribute to fry69/altq.net development by creating an account on GitHub.

OpenAI Codex was so nice to analyze the PDS source, come up with a proper/plausible algorithm for a CAR estimate and integrate it into the status script.

It's live -> altq.net/status.html

Code is here -> github.com/fry69/altq.n...

25.10.2025 15:52 โ€” ๐Ÿ‘ 4    ๐Ÿ” 1    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 1

If I'd show the file size of the SQLite it would give a false impression IMHO.

The blob size is pretty much accurate.

25.10.2025 15:01 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Preview
GitHub - fry69/altq.net: PDS modification for altq.net PDS modification for altq.net. Contribute to fry69/altq.net development by creating an account on GitHub.

The CAR file size is hard to estimate/compute as the data on disk is a SQLite file, which bloats everything with indexes and is obviously not compressed/optimized.

Otherwise, the code is here -> github.com/fry69/altq.net

25.10.2025 14:59 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Server Status

๐Ÿ‘‹ from Germany -> altq.net/status.html

25.10.2025 14:35 โ€” ๐Ÿ‘ 4    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Preview
GitHub - fry69/aqfile: Upload files to AT Protocol PDS with metadata and checksums Upload files to AT Protocol PDS with metadata and checksums - fry69/aqfile

See here for more details about "net.altq.aqfile" -> github.com/fry69/aqfile

25.10.2025 10:14 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Screenshot of a working "net.altq.file" lexicon schema resolution.

URI: at://did:plc:3zxgigfubnv4f47ftmqdsbal/net.altq.aqfile/3m35ufa3rm62d

Screenshot of a working "net.altq.file" lexicon schema resolution. URI: at://did:plc:3zxgigfubnv4f47ftmqdsbal/net.altq.aqfile/3m35ufa3rm62d

You must own the mbdscribe.app domain for this to work.

I don't think it is registered yet?

See here for a working custom lexicon schema resolution -> pdsls.dev/at://did:plc...

25.10.2025 03:17 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Preview
Publishing ATProto Lexicons - Nick the Sick's blog. Writings, projects and ideas. Publishing ATProto Lexicons Created: 2025_05_07 07:53 Tags: ATProto ATProto has recently updated their specs to include a way to publish Lexicons in a similar way to their handle resolution. This is โ€ฆ

This might help -> nickthesick.com/blog/Publish...

25.10.2025 03:07 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 1
Screenshot of an atproto "app.mbdscribe.record" collection record, which lexicon could not be resolved. Likely due to not being published correctly.

URI: at://did:plc:l37td5yhxl2irrzrgvei4qay/app.mbdscribe.record/3m3yciud6y72u

Screenshot of an atproto "app.mbdscribe.record" collection record, which lexicon could not be resolved. Likely due to not being published correctly. URI: at://did:plc:l37td5yhxl2irrzrgvei4qay/app.mbdscribe.record/3m3yciud6y72u

Almost there -> pdsls.dev/at://did:plc...

25.10.2025 03:07 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

put out a new 'goat' release (v0.1.2) with basic support for PDS administration ('goat pds admin ...').

if you run it from a PDS instance it should find admin auth info automatically.

hope to have this replace the 'pdsadmin' shell script over time

22.10.2025 04:49 โ€” ๐Ÿ‘ 111    ๐Ÿ” 12    ๐Ÿ’ฌ 4    ๐Ÿ“Œ 4

@altq.net is following 18 prominent accounts