Social-Relay version 1.4.0 released

This release adds compatibility with the latest #Diaspora #protocol changes. Also now Social-Relay will verify received payloads to ensure receivers get payloads from only resolvable valid senders.


What is the relay system?

The #relay system handles distribution of public content using the #Diaspora protocol. This helps new nodes get into the network and allows subscribing to hashtags from around the network. This is an unofficial network addition not directly related to the Diaspora protocol or project itself.

If as a #podmin you want to hook up to the relay system, do as follows:

  • Enable your outbound/inbound relay configuration in your Diaspora pod settings or for #Friendica / #Hubzilla check your own settings/documentation on how to do it.
  • Ensure your node is registered at The-Federation.info. The relay system polls this list for nodes to check.
  • Profit within one hour!

Discuss and improve

Let me know if you have ideas for improving the relay system or just questions about it. Contact me here, GitHub issues or via IRC.



  • Accept new style Diaspora public payloads without xml=payload form data.
  • Add profile model. Store remote profile handle + public key for later use, since we don't want to always fetch them.
  • Start validating signatures in sent payloads. This requires fetching remote profiles. Closes #31.

Ping @{David Morley; davidmorley@diasp.org}

social-relay - Public post relay for the Diaspora federated social network protocol

Jason Robinson

Disabled #relay system comment/like relaying until I fix an issue later today hopefully. It looks like due to a mistake in forwarding relayable related content something like 20K payloads of one comment have been queued to the relay network. 10K of those got sent out before I noticed it and disabled the sending. Sorry for any #admins noticing a bit more load on their server than usual. Since all the payloads were just one comment with the same guid, you shouldn't actually have any duplicates.

Ps, periodic reminder at the same time for #podmins. The relay system allows your node to subscribe to public content from around #TheFederation and also distribute your content to subscribers. If you want more content to your node, register your node at The-Federation.info and then enable the relay outbound and/or inbound in your node settings (for example Diaspora).

Any help improving the relay system code or design would be welcome. Get in touch :) The relay system server code is here.

Jason Robinson

f8: Facebook schreibt React neu, aktualisiert Relay und stellt UI-Framework für Android vor
<https: www.heise.de="" newsticker="" meldung="" f8-facebook-schreibt-react-neu-aktualisiert-relay-und-stellt-ui-framework-fuer-android-vor-3687814.html="">
#Facebook #Facebookf8 #JavaScript #React #Relay #litho #reactfibre #reactvr #relaymodern

heise online (inoffiziell)

Test for #Relay

Socialhome HQ

Test for #relay

Socialhome HQ



Also, testing #relay :P

Jason Robinson

Social-Relay version 1.3.2 released

#diaspora #relay #thefederation

This is a bugfix release which makes content delivery more reliable.



  • Add a longer worker timeout for sending. Seems default 180 seconds is not enough in cases where post will be delivered to a lot of hosts. Allow setting a long timeout, defaulting to 1080 seconds.
  • Refactor sending to not send payload multiple times in the case that multiple entities are found in the payload. In reality this should never happen, since Diaspora payloads have one top level entity only.

Ping @{David Morley ; davidmorley@diasp.org}

social-relay - Public post relay for the Diaspora federated social network protocol

Jason Robinson

Improve #federation on #Diaspora with relay servers

It is not easy to enter federation with a small pod (with only few users), because your pod only receives posts from followed users and your post are sent only on pods where someone follows your pod users.

To improve exchange between your pod and others and I recommend to activate relay server in your config/diaspora.yml. It permits to receive posts from other pods even if you are not following any user on these pods (based on tags). It also publishes all your posts to the relay. To avoid to receive all posts, a good choice is to grab posts with pod user followed tags (see scope parameter).

Bigger pods are encouraged to publish their posts on relays to help small pods (outbound: send: true)

Just share this post with your #podmin to be sure #relay server is enabled on your #pod.

Here is a configuration sample extract from config/diaspora.yml :

  ## Settings related to relays
  relay: ## Section

    ## Relays are applications that exist to push public posts around to
    ## pods which want to subscribe to them but would not otherwise
    ## receive them due to not having direct contact with the remote pods.
    ## See more regarding relays: https://wiki.diasporafoundation.org/Relay_servers_for_public_posts

    outbound: ## Section
      ## Enable this setting to send out public posts from this pod to a relay
      send: true
      ## Change default remote relay url used for sending out here
      url: 'https://relay.iliketoast.net/receive/public'

    inbound: ## Section
      ## Enable this to receive public posts from relays
      subscribe: true

      ## Scope is either 'all' or 'tags' (default).
      ## - 'all', means this pod wants to receive all public posts from a relay
      ## - 'tags', means this pod wants only posts tagged with certain tags
      scope: tags

      ## If scope is 'tags', should we include tags that users on this pod follow?
      ## These are added in addition to 'pod_tags', if set.
      include_user_tags: true

      ## If scope is 'tags', a comma separated list of tags here can be set.
      ## For example "linux,diaspora", to receive posts related to these tags
      pod_tags: "diaspora, podmin"

Some clearer explanation here : https://wiki.diasporafoundation.org/Relay_servers_for_public_posts

Jean-Pierre Morfin

Looks like #diaspora changed the timestamp format of their posts in version, causing the #relay system not to be able to parse the messages (to determine where to send them).

A fix is coming, currently at least on my relay it looks like about 70% of messages are failing to get through. Would be nice if backwards compatible changes in the protocol were mentioned in the changelog when shipping out new versions, sigh.


Jason Robinson

Social-relay 1.3.0 released

Social-relay is a server application to act as a relay for public content using the #Diaspora protocol. The idea is simple. Social nodes utilizing this protocol expose their subscription preferences, nodes send content to the relays and the relays push the content they receive onwards to subscribing nodes as per their subscriptions. Subscriptions can be a list of hashtags or "all". Read more about the relay system here.

Want to hook on to the relay system as a node admin? Diaspora pods can enable outbound and/or inbound relay settings in their diaspora.yml configuration file. #Friendica and #Hubzilla nodes can do the same (please check respective server documentation for how to do this).

Recently, since Diaspora version 0.6 was released, the relay system (composed of 3 relays at the moment) has seen a big increase in traffic, going to an average ~2500 public posts per day pushed around to ~75 subscribing servers. This meant that some performance related changes were needed.

Version 1.3.0 brings the following performance related changes:

  • Since more than one worker is now needed to process the traffic, SQLite doesn't cut it as a database. With this release, the options are now PostgreSQL and MySQL/MariaDB, with support for SQLite removed.
  • To make it easier to run a relay, the need to separately run scheduled jobs and RQ workers has been removed. A Circus configuration file has been provided which will run 1 scheduled jobs process and X amount of workers. This allows easily scaling to any amount of workers necessary (at ~35MB RAM each you can afford some!) to handle increasing relay traffic.

See full changelog: https://github.com/jaywink/social-relay/releases/tag/1.3.0

#relay #federation #thefederation

social-relay - Public post relay for the Diaspora federated social network protocol

Jason Robinson

Social-Relay version 1.2.0

New version of the public content #relay server software. This version brings support for passing through also #Diaspora protocol Retraction messages (ie deletions of content). This is important since otherwise a post later deleted that the relay originally delivered would not be delivered. Issues exist in #Diaspora, #Friendica and #Hubzilla issue trackers to get retractions to be sent to the relays.


Next for the relay system I intend to separate the relay system documentation to it's own repository, since it's not really a part of Social-Relay which is just the server implementing it. Would love to get some opinions on various subjects there then, regarding how to proceed with things like decentralizing the relays and getting rid of the reliance on the-federation.info as a way to bootstrap lists of nodes. Preferably opinions from project admins since the decision on how to decentralize the relays has to be done the way the projects are fine implementing it.

Ping @{Davìd M ; davidmorley@diasp.org} and @{Jeremy Pope ; jpope@pod.jpope.org}. Additionally please note the change in the requirement files. I simplified them a bit, changelog has details.


[1.2.0] - 2016-10-25


  • Expose NodeInfo to allow registering relays to pod lists. Unfortunately, NodeInfo schema doesn't contain the relay software key so this NodeInfo document cannot be validated by consumers.
  • Network calls now use a custom user agent Social-Relay/<version> - https://github.com/jaywink/social-relay. Thanks @bmanojlovic for the patch.
  • Relay also Diaspora retraction and photo entities. The former follows the same way like and comment entities are relayed, ie the targets are the same as where the status_message or photo were relayed. photo follows same rules as status_message entities, ie according to subscriber wishes.


  • Replaced custom payload sending with the new helper from federation. This will not try to deliver to http targets at all. This means nodes that are not using https will not get deliveries. Really, these days, there is no reason to run a public website with http.


  • Removed suggestion to use pip-tools and convert requirements files to standard Python project requirements files. Didn't dig the workflow after all. To install dev dependencies use requirements/development.txt. For production, use requirements/production.txt, which also contains uWSGI. If you don't deploy using uWSGI, you can just use requirements/requirements.txt.
Jason Robinson

Box Relay läßt Anwender Arbeitsabläufe gestalten

#anwender #arbeitsabla #box #gestalten #relay #ufe

heise online Newsticker (inoffiziell)

Hmmm wip work on public stream for #Socialhome. Looks ugly due to posts not formatted correctly and only #markdown embedded images are shown - but hey, it's forward and #federated public posts are now dropping in via the #relay with real remote profiles fetched too (though not shown in the stream, yet).

Stream(s) will have load-more-as-you-scroll but also put ground work in for pushing posts to the top (or at least pre-loading them in) using #websockets (Django Channels). Fun stuff :)


Jason Robinson