Is it possible to change lemmy’s domain after I have already started it once and produced some content? I am thinking of moving to a subdomain but I’m not sure if it will go smoothly

  • terribleplan@lemmy.nrd.li
    link
    fedilink
    English
    arrow-up
    17
    ·
    1 year ago

    Basically, no:

    It can cause some wackiness… basically you will need to maintain that old domain forever and everything will still refer to that old domain.

    For example, your post looks like this from an ActivityPub/federation perspective:

    {
        [...]
        "id": "https://atosoul.zapto.org/post/24325",
        "attributedTo": "https://atosoul.zapto.org/u/Soullioness",
        [...]
        "content": "<p>I'm curious if I can migrate my instance (a single user) to a different domain? Right now I'm on a free DNS from no-ip but I might get a prettier paid domain name sometime.</p>\n",
    }
    

    The post itself has an ID that references your domain, and the the attributedTo points to your user which also references your domain. AFAIK there is no reasonable way to update/change this. IDs are forever.

    It would also break all of the subscriptions for an existing instance, as the subscriptions are all set to deliver to that old domain.

    IMO your best bet would be to start a new instance on the new domain, update your profile on the old one saying that your user is now @Soullioness@newinstance.whatever and maintain that old server in a read-only manner for as long as you can bear.

    • TheHolm@aussie.zone
      link
      fedilink
      English
      arrow-up
      4
      ·
      1 year ago

      Yeh, It is big fault in ActivityPub design that IDs are linked to domain name. Should not be a case. Some UUID + public keys will make it way more flexible and resilient.

      • terribleplan@lemmy.nrd.li
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 year ago

        Having a “source of truth” makes many things easier but less resilient. One place to go get the latest version of something mutable. The fediverse/ActivityPub needs to get on board with some form of DID or something similar before worrying about improving the ID system (and the ID system is inherently tied to JSON-LD, so AP would need to stop using that or there would need to be a new version of it) IMO.

  • koper@feddit.nl
    link
    fedilink
    English
    arrow-up
    14
    ·
    1 year ago

    You can, but other servers will not recognize it as the same server.

    There are however ways to run your server on a subdomain and make it appear as if it’s still the original domain. Is that what you’re looking for?

      • stown@sedd.it
        link
        fedilink
        English
        arrow-up
        7
        ·
        1 year ago

        /well-known/webfinger. If you use a reverse proxy on your main domain (example.com), you have it forward traffic from example.com/well-known/webfinger to subdomain.example.com/well-known/webfinger

    • baduhai
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 year ago

      run your server on a subdomain and make it appear as if it’s still the original domain.

      Do you mean make it look like the top level domain? Cause if so, do you have a link I can read a little about? I’m thinking of deploying my own lemmy instance.

      • eh@nerdbin.social
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        It’s possible by having the webfinger endpoints at the “root” while keeping the rest of Lemmy on a subdomain. The main thing that determines the domain in your username is webfinger.

        No clue if Lemmy or kbin support this config though, but quite a bit of the microblog-only parts of fedi do, and it’s a widely used thing.

      • koper@feddit.nl
        link
        fedilink
        English
        arrow-up
        2
        ·
        1 year ago

        Yes, that was what I was referring to. However, this is assuming that Lemmy has properly implemented webfinger and doesn’t store direct links (which I haven’t checked).

        Alternatively, you could proxy all requests with application/activity+json in the Accept or Content-type headers.