Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

NodeBB

  1. Home
  2. Technical Discussion
  3. Started laying out a rough plan for implementing FEP-ef61: Portable Objects in #Fedify—server-independent #ActivityPub identities backed by #DIDs, multi-server replication, and client-side signing.

Started laying out a rough plan for implementing FEP-ef61: Portable Objects in #Fedify—server-independent #ActivityPub identities backed by #DIDs, multi-server replication, and client-side signing.

Scheduled Pinned Locked Moved Technical Discussion
didsfedifyfedidevfediverseactivitypub
1 Cross-posts 16 Posts 6 Posters 1 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • trwnh@mastodon.socialT This user is from outside of this forum
    trwnh@mastodon.socialT This user is from outside of this forum
    trwnh@mastodon.social
    wrote last edited by
    #7

    @hongminhee

    > more modest goal: server-independent object identifiers that survive a server disappearing

    does fedify support binding a base uri or fqdn to each individual actor? the most basic path to this starts with identifiers that outlive their servers, so instead of using the service's dns name, you can let actors bring their their own dns name.

    you can imagine me not as mastodon.social/@trwnh but as mastodon.trwnh.com or trwnh.com/mastodon/ instead.

    hongminhee@hollo.socialH 1 Reply Last reply
    0
    • trwnh@mastodon.socialT trwnh@mastodon.social

      @hongminhee

      > more modest goal: server-independent object identifiers that survive a server disappearing

      does fedify support binding a base uri or fqdn to each individual actor? the most basic path to this starts with identifiers that outlive their servers, so instead of using the service's dns name, you can let actors bring their their own dns name.

      you can imagine me not as mastodon.social/@trwnh but as mastodon.trwnh.com or trwnh.com/mastodon/ instead.

      hongminhee@hollo.socialH This user is from outside of this forum
      hongminhee@hollo.socialH This user is from outside of this forum
      hongminhee@hollo.social
      wrote last edited by
      #8

      @trwnh@mastodon.social Fedify currently doesn't support binding a custom domain to individual actors—all actors share the server's domain. Honestly, I'm not sure how that would work in practice either; it would need some kind of indirection or delegation mechanism at the HTTP level, and I'm not aware of an established spec for it. Do you have something specific in mind, or perhaps an approach you've been thinking about?

      1 Reply Last reply
      0
      • trwnh@mastodon.socialT This user is from outside of this forum
        trwnh@mastodon.socialT This user is from outside of this forum
        trwnh@mastodon.social
        wrote last edited by
        #9

        @hongminhee you can use HTTP 3xx redirects but that's not strictly necessary because you can use DNS A/AAAA/CNAME as well (and have the HTTP server respond to those names in conjunction with TLS SNI)

        the idea is that multiple server names can be responded to by the same Fedify software instance. in nginx it's doable with the http.server.server_name directive. https://nginx.org/en/docs/http/server_names.html

        SNI: https://datatracker.ietf.org/doc/html/rfc6066#section-3

        does fedify expect to run behind a reverse proxy? if so, it can route requests.

        hongminhee@hollo.socialH 1 Reply Last reply
        0
        • trwnh@mastodon.socialT trwnh@mastodon.social

          @hongminhee you can use HTTP 3xx redirects but that's not strictly necessary because you can use DNS A/AAAA/CNAME as well (and have the HTTP server respond to those names in conjunction with TLS SNI)

          the idea is that multiple server names can be responded to by the same Fedify software instance. in nginx it's doable with the http.server.server_name directive. https://nginx.org/en/docs/http/server_names.html

          SNI: https://datatracker.ietf.org/doc/html/rfc6066#section-3

          does fedify expect to run behind a reverse proxy? if so, it can route requests.

          hongminhee@hollo.socialH This user is from outside of this forum
          hongminhee@hollo.socialH This user is from outside of this forum
          hongminhee@hollo.social
          wrote last edited by
          #10

          @trwnh@mastodon.social Fedify does run well behind a reverse proxy, and it doesn't actually require a fixed base URL—it can derive the base URL from the incoming request. Ghost takes advantage of exactly this to implement virtual hosting on top of Fedify, so in principle the kind of per-actor custom domain you're describing should already be achievable without changes to Fedify itself.

          1 Reply Last reply
          0
          • trwnh@mastodon.socialT This user is from outside of this forum
            trwnh@mastodon.socialT This user is from outside of this forum
            trwnh@mastodon.social
            wrote last edited by
            #11

            @hongminhee i think the only support from fedify needed is basically like an environment variable or property for wherever identifiers are assigned or dereferenced

            so for example if the service is mastodon.social it would assign identifiers using trwnh.com/mastodon/ as a base uri

            it only needs to know which uris are already used, so it doesn't assign an id that's already in use.

            hongminhee@hollo.socialH 1 Reply Last reply
            0
            • trwnh@mastodon.socialT trwnh@mastodon.social

              @hongminhee i think the only support from fedify needed is basically like an environment variable or property for wherever identifiers are assigned or dereferenced

              so for example if the service is mastodon.social it would assign identifiers using trwnh.com/mastodon/ as a base uri

              it only needs to know which uris are already used, so it doesn't assign an id that's already in use.

              hongminhee@hollo.socialH This user is from outside of this forum
              hongminhee@hollo.socialH This user is from outside of this forum
              hongminhee@hollo.social
              wrote last edited by
              #12

              @trwnh@mastodon.social Actually, Fedify already supports this quite well. The actor dispatcher gives you full control over the actor's id—you can set it to any URL, including one on a custom domain. And since Fedify 1.4.0, there's a mapAlias() method that lets you handle WebFinger lookups for those custom URLs too. So running Fedify behind a reverse proxy that routes multiple hostnames, and assigning per-actor custom domain identifiers, should be achievable without any changes to Fedify itself.

              1 Reply Last reply
              0
              • trwnh@mastodon.socialT This user is from outside of this forum
                trwnh@mastodon.socialT This user is from outside of this forum
                trwnh@mastodon.social
                wrote last edited by
                #13

                @hongminhee so are object ids handled outside of fedify? the application written around fedify would have to keep track of which ids are already used/assigned?

                hongminhee@hollo.socialH 1 Reply Last reply
                0
                • trwnh@mastodon.socialT trwnh@mastodon.social

                  @hongminhee so are object ids handled outside of fedify? the application written around fedify would have to keep track of which ids are already used/assigned?

                  hongminhee@hollo.socialH This user is from outside of this forum
                  hongminhee@hollo.socialH This user is from outside of this forum
                  hongminhee@hollo.social
                  wrote last edited by
                  #14

                  @trwnh@mastodon.social Yes—Fedify is database-agnostic, so tracking which IDs are already in use is the application's responsibility. Fedify handles the federation layer, but the data model and storage are entirely up to the application built on top of it.

                  1 Reply Last reply
                  0
                  • thisismissem@activitypub.spaceT This user is from outside of this forum
                    thisismissem@activitypub.spaceT This user is from outside of this forum
                    thisismissem@activitypub.space
                    wrote last edited by
                    #15

                    @hongminhee@hollo.social nice! though I'd encourage using a root identity that's an actual DID document (not just did:key), and points to the service(s) through which it works. Whether that's did:web/vh or did:plc or some other did method, the properties of a full DID document are very useful.

                    1 Reply Last reply
                    0
                    • trwnh@mastodon.socialT This user is from outside of this forum
                      trwnh@mastodon.socialT This user is from outside of this forum
                      trwnh@mastodon.social
                      wrote last edited by
                      #16

                      @thisismissem @hongminhee imo the value of a did document is overstated -- did can be a useful framework for how to interact with identities that *can* be operated on and *can* have keys and *can* link out to other services, but none of those things are actually required and a lot depends on the actual did method to fill in that framework. in the case of did:key, the "key" method is just a thin wrapper around a key (for when that key is the identity). this makes the key valid for *any* purpose.

                      1 Reply Last reply
                      0

                      Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                      Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                      With your input, this post could be even better 💗

                      Register Login
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      Powered by NodeBB Contributors
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups