I’ve been thinking of self hosting a mastodon (gotosocial, more specifically) + a matrix server on an old computer I have, but sometimes I might need to turn it off for 2 days or more (not to mention some energy or internet outages that might happen here)

I suppose with the mastodon part the server will properly sync and download whatever’s been missing, but I’m not entirely sure that’ll be the case with matrix. If anyone sent me a DM on there while my server was down, would it get through after it was back up?

  • F04118F@feddit.nl
    link
    fedilink
    English
    arrow-up
    50
    ·
    edit-2
    18 hours ago

    Took a look at the specification, this is what I found:

    For federated servers performing delivery to a third party server, delivery SHOULD be performed asynchronously, and SHOULD additionally retry delivery to recipients if it fails due to network error.

    So they should retry. Note that should is not the same as must. So there is no obligation. There is no timeline in the spec about for how long or how often retries should be done. The wording says network error.

    My interpretation: the spec leaves a lot of room for implementations to differ. Network problems don’t normally last for days though. I’d guess that if your server is down for 5 minutes, you’ll still receive most or everything you’d normally receive. I wouldn’t trust on that if your server is offline for more than a day.

  • Chewy@discuss.tchncs.de
    link
    fedilink
    English
    arrow-up
    11
    ·
    edit-2
    15 hours ago

    Matrix won’t necessarily download all state/messages automatically, but if your client requests a non-available message your matrix server will query other matrix servers for it (backfilling).

    E.g. if you scroll up to older messages, it might take a a few seconds but your client should eventually show them.

    Matrix server use a back-off for servers sending messages, so if your server is offline for many hours, it might take a day for your servers to get messages pushed to by other servers again.

  • roofuskit@lemmy.world
    link
    fedilink
    English
    arrow-up
    10
    arrow-down
    1
    ·
    18 hours ago

    No. There’s nothing for people to connect to when it’s shutdown. And requests or submissions would just get bounced back by the server not existing.

  • just_another_person@lemmy.world
    link
    fedilink
    English
    arrow-up
    4
    ·
    17 hours ago

    You’re talking about syncing and downloading content from external services, which makes me think you’re just imagining these as being a client versus an “instance”. In that case, just use a client because neither of these services inherently do what you’re asking, that’s what a client of these services does.

    • I Cast Fist@programming.devOP
      link
      fedilink
      English
      arrow-up
      3
      ·
      17 hours ago

      My dummy understanding is that each instance could be considered a “client”, in the sense that they’re always on the lookout for data from other instances whenever the latter generates new content. Either that or, when one connected user checks what’s on a different instance, it downloads to the local cache, ie: if I, from programming.dev, am the first to check this thread, a copy gets saved locally (cache) in the programming.dev server, which might check back on the original source in the case of any edits.

      • just_another_person@lemmy.world
        link
        fedilink
        English
        arrow-up
        6
        ·
        17 hours ago

        Sort of, but not really. It’s a pub/sub ecosystem, so if your services are offline, they aren’t going to be pulling the delta of missed data beyond a threshold. That’s why clients are clients, because they are built to do this for this purpose.

        It wouldn’t make sense for a deployment acting as an active instance to act like a client in the way you’re describing, because the services are configured and tuned to NOT act that way, but ingest data available at time of publish to the endpoints they are subscribed to.

      • Possibly linux
        link
        fedilink
        English
        arrow-up
        2
        ·
        15 hours ago

        Matrix works like email. It used a push model where a server pushes a message to another server that stores it. The message might be stored on the server of origin or it may not.