A list of activities joined to users wouldn't be a problem for an RDBMS. I'm not sure what you mean by "repeating relations".
> Users have friends, friends have posts, posts have comments and likes, each comment has one commenter and each like has one liker.
I would likely gather all the instances of User id in each context (user, friend, commenter, and liker) and query it separately from the JOIN query. Depends on your data which way works out better on average/worst-cases.