feat: multi-actor ActivityPub support

Each registered user now has their own ActivityPub actor:
- Generate RSA keys per user on registration
- Webfinger resolves any registered user (@user@domain)
- Actor endpoints work for any registered user
- Each user has their own outbox (filtered activities)
- Activities signed with the publishing user's keys
- Objects attributed to the asset owner

Removed:
- ARTDAG_USER config (no longer single-actor)
- L1_SERVER config (comes with each request)

Added:
- /ui/users page listing all registered users
- user_exists() helper function

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
gilesb
2026-01-07 19:54:11 +00:00
parent 58a125de1a
commit 4155427f03
4 changed files with 121 additions and 57 deletions

View File

@@ -3,10 +3,9 @@
# Domain for this ActivityPub server
ARTDAG_DOMAIN=artdag.rose-ash.com
# Default username (for actor endpoints)
ARTDAG_USER=giles
# JWT secret for token signing (generate with: openssl rand -hex 32)
JWT_SECRET=your-secret-here-generate-with-openssl-rand-hex-32
# Note: ARTDAG_L1 is no longer needed - L1 server URL is sent with each request
# Notes:
# - ARTDAG_USER removed - now multi-actor, each registered user is their own actor
# - ARTDAG_L1 removed - L1 server URL is sent with each request