The server's VAPID key (PushKeys, made on first need, in Mongo) is the instance API's vapid.public_key and every app's vapid_key. /api/v1/push/subscription (POST, GET, PUT, DELETE) keeps one subscription per access token, so per persona; every notification kept (never a filtered one) is queued as a SendPush job for the subscriptions whose alert and policy admit it, and sent through the `push` client (the safe handler, https only) encrypted as RFC 8291 aes128gcm or the aesgcm draft with an ES256 VAPID JWT. 404/410 delete the subscription, 429/5xx/timeouts retry, other answers drop the push. Subscriptions end with their tokens (revocation, sessions ended, suspension, deletion, a restore); backups hold neither keys nor subscriptions. The walk of every Mastodon 4.3-4.5 client route (docs/MASTODON-API.md) added conversations/:id/unread, domain_blocks/preview, v2 notifications clear and PUT policy, /oauth/userinfo and stubs, so both instance APIs now say 4.5.0 (compatible; PrivaPub <release>). The pasture gets a push sink (pushsink.test) and scenarios/push.sh in batch A. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WpVCoDeM1qUTRp4fXQdfof
219 lines
3.3 KiB
Caddyfile
219 lines
3.3 KiB
Caddyfile
{
|
|
local_certs
|
|
skip_install_trust
|
|
}
|
|
|
|
privapub.test {
|
|
tls internal
|
|
reverse_proxy pasture-privapub:80
|
|
}
|
|
|
|
gts.test {
|
|
tls internal
|
|
reverse_proxy pasture-gts:80
|
|
}
|
|
|
|
mastodon.test {
|
|
tls internal
|
|
reverse_proxy pasture-mastodon:3000
|
|
}
|
|
|
|
misskey.test {
|
|
tls internal
|
|
reverse_proxy pasture-misskey:3000
|
|
}
|
|
|
|
sharkey.test {
|
|
tls internal
|
|
reverse_proxy pasture-sharkey:3000
|
|
}
|
|
|
|
lemmy.test {
|
|
tls internal
|
|
reverse_proxy pasture-lemmy:8536
|
|
}
|
|
|
|
akkoma.test {
|
|
tls internal
|
|
reverse_proxy pasture-akkoma:4000
|
|
}
|
|
|
|
decepub.test {
|
|
tls internal
|
|
reverse_proxy pasture-decepub:80
|
|
}
|
|
|
|
mailpit.test {
|
|
tls internal
|
|
reverse_proxy pasture-mailpit:8025
|
|
}
|
|
|
|
hollo.test {
|
|
tls internal
|
|
reverse_proxy pasture-hollo:3000
|
|
}
|
|
|
|
iceshrimp.test {
|
|
tls internal
|
|
reverse_proxy pasture-iceshrimp:3000
|
|
}
|
|
|
|
pleroma.test {
|
|
tls internal
|
|
reverse_proxy pasture-pleroma:4000
|
|
}
|
|
|
|
peertube.test {
|
|
tls internal
|
|
reverse_proxy pasture-peertube:9000
|
|
}
|
|
|
|
pixelfed.test {
|
|
tls internal
|
|
reverse_proxy pasture-pixelfed:8080
|
|
}
|
|
|
|
wordpress.test {
|
|
tls internal
|
|
reverse_proxy pasture-wordpress:80
|
|
}
|
|
|
|
friendica.test {
|
|
tls internal
|
|
reverse_proxy pasture-friendica:80
|
|
}
|
|
|
|
mobilizon.test {
|
|
tls internal
|
|
reverse_proxy pasture-mobilizon:4000
|
|
}
|
|
|
|
gancio.test {
|
|
tls internal
|
|
reverse_proxy pasture-gancio:13120
|
|
}
|
|
|
|
funkwhale.test {
|
|
tls internal
|
|
reverse_proxy pasture-funkwhale:80
|
|
}
|
|
|
|
piefed.test {
|
|
tls internal
|
|
reverse_proxy pasture-piefed:5000
|
|
}
|
|
|
|
mbin.test {
|
|
tls internal
|
|
reverse_proxy pasture-mbin:80
|
|
}
|
|
|
|
nodebb.test {
|
|
tls internal
|
|
reverse_proxy pasture-nodebb:4567
|
|
}
|
|
|
|
castopod.test {
|
|
tls internal
|
|
reverse_proxy pasture-castopod:8080
|
|
}
|
|
|
|
ktistec.test {
|
|
tls internal
|
|
reverse_proxy pasture-ktistec:3000
|
|
}
|
|
|
|
forte.test {
|
|
tls internal
|
|
reverse_proxy pasture-forte:8080
|
|
}
|
|
|
|
hubzilla.test {
|
|
tls internal
|
|
reverse_proxy pasture-hubzilla:8080
|
|
}
|
|
|
|
vernissage.test {
|
|
tls internal
|
|
reverse_proxy pasture-vernissage:8080
|
|
}
|
|
|
|
bookwyrm.test {
|
|
tls internal
|
|
reverse_proxy pasture-bookwyrm:8000
|
|
}
|
|
|
|
ghost.test {
|
|
tls internal
|
|
handle /.ghost/activitypub/* {
|
|
reverse_proxy pasture-ghost-ap:8080
|
|
}
|
|
handle /.well-known/webfinger {
|
|
reverse_proxy pasture-ghost-ap:8080
|
|
}
|
|
handle /.well-known/nodeinfo {
|
|
reverse_proxy pasture-ghost-ap:8080
|
|
}
|
|
handle {
|
|
reverse_proxy pasture-ghost:2368
|
|
}
|
|
}
|
|
|
|
owncast.test {
|
|
tls internal
|
|
reverse_proxy pasture-owncast:8080
|
|
}
|
|
|
|
writefreely.test {
|
|
tls internal
|
|
reverse_proxy pasture-writefreely:8080
|
|
}
|
|
|
|
snac.test {
|
|
tls internal
|
|
reverse_proxy pasture-snac:8001
|
|
}
|
|
|
|
mitra.test {
|
|
tls internal
|
|
reverse_proxy pasture-mitra:8383
|
|
}
|
|
|
|
aoderelay.test {
|
|
tls internal
|
|
reverse_proxy pasture-aoderelay:8080
|
|
}
|
|
|
|
relay.test {
|
|
tls internal
|
|
reverse_proxy pasture-relay-server:8080
|
|
}
|
|
|
|
smithereen.test {
|
|
tls internal
|
|
handle /i/* {
|
|
reverse_proxy pasture-smithereen-imgproxy:8080
|
|
}
|
|
handle_path /s/* {
|
|
reverse_proxy pasture-smithereen-files:80
|
|
}
|
|
handle {
|
|
reverse_proxy pasture-smithereen:4567
|
|
}
|
|
}
|
|
|
|
lemmy19.test {
|
|
tls internal
|
|
reverse_proxy pasture-lemmy19:8536
|
|
}
|
|
|
|
pushsink.test {
|
|
tls internal
|
|
reverse_proxy pasture-pushsink:8080
|
|
}
|
|
|
|
flood1.test, flood2.test, flood3.test, flood4.test, flood5.test, flood6.test, flood7.test, flood8.test, flood9.test, flood10.test, flood11.test, flood12.test, flood13.test, flood14.test, flood15.test, flood16.test, flood17.test, flood18.test, flood19.test, flood20.test {
|
|
tls internal
|
|
reverse_proxy pasture-flood:8080
|
|
}
|