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 (Cyborg)
  • No Skin
Collapse
Brand Logo

CIRCLE WITH A DOT

  1. Home
  2. Uncategorized
  3. **#ActivityPub support in #Madblog**

**#ActivityPub support in #Madblog**

Scheduled Pinned Locked Moved Uncategorized
activitypubfediversemadblogplatypushpubby
1 Cross-posts 44 Posts 12 Posters 3 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.
  • ? Guest

    @julian Yes, to backfill a profile. It is a manual action.

    I don't know who else does that, but @jonny is working on adding automatic profile backfill to Mastodon: https://github.com/mastodon/mastodon/pull/34597

    julian@fietkau.socialJ This user is from outside of this forum
    julian@fietkau.socialJ This user is from outside of this forum
    julian@fietkau.social
    wrote last edited by
    #24

    @silverpill @julian@activitypub.space I believe @hollo does it as well.

    @general

    1 Reply Last reply
    1
    0
    • fabio@manganiello.euF fabio@manganiello.eu

      #ActivityPub support in #Madblog

      I am glad to announce that Madblog has now officially joined the #Fediverse family.

      Madblog has already supported #Webmentions for the past couple of weeks, allowing your blog posts to be mentioned by other sites with Webmentions support (WordPress, Lemmy, HackerNews...) and get those mentions directly rendered on your page.

      It now adds ActivityPub support too, using #Pubby, another little Python library that I've put together myself (just like Webmentions) as a mean to quickly plug ActivityPub support to any Python Web app.

      Webmentions and Pubby follow similar principles and implement a similar API, and you can easily use them to add federation support to your existing Web applications - a single bind_webmentions or bind_activitypub call to your existing Flask/FastAPI/Tornado application should suffice for most of the cases.

      Madblog may have now become the easiest way to publish a federated blog - and perhaps the only way that doesn't require a database, everything is based on plain Markdown files.

      If you have a registered domain and a certificate, then hosting your federated blog is now just a matter of:

      mkdir -p ~/madblog/markdown
      cat <<EOF > ~/madblog/markdown/hello-world.md
      
      This is my first post on [Madblog](https://git.fabiomanganiello.com/madblog)!
      EOF
      
      docker run -it \
        -p 8000:8000 \
        -v "$HOME/madblog:/data" \
        quay.io/blacklight/madblog
      

      And Markdown files can be hosted wherever you like - a Git folder, an Obsidian Vault, a Nextcloud Notes installation, a folder on your phone synchronized over SyncThing...

      Federation support is also at a quite advanced state compared to e.g. #WriteFreely. It currently supports:

      • Interactions rendered on the articles: if you like, boost, quote or reply to an article, all interactions are rendered directly at the bottom of the article (interactions with WriteFreely through federated accounts were kind of lost in the void instead)

      • Guestbook support (optional): mentions to the federated Madblog handle that are not in response to articles are now rendered on a separate /guestbook route

      • Email notifications: all interactions can have email notifications

      • Support for quotes, also on Mastodon

      • Support for mentions, just drop a @joe@example.com in your Markdown file and Joe will get a notification

      • Support for hashtag federation

      • Support for split-domain configurations, you can host your blog on blog.example.com but have a Fediverse handle like @blog@example.com. Search by direct post URL on Mastodon will work with both cases

      • Support for custom profile fields, all rendered on Mastodon, with verification support

      • Support for moderation, either through blocklist or allowlist, with support for rules on handles/usernames, URLs, domains or regular expressions

      • A partial (but comprehensive for the provided features) implementation of the Mastodon API

      If you want you can follow both the profiles of my blogs - they are now both federated:

      • My personal blog: @fabio@manganiello.blog (it used to run WriteFreely before, so if you followed it you may need to unfollow it and re-follow it)

      • The #Platypush blog: @blog@platypush.tech

      Link Preview Image
      Madblog: A Markdown Folder That Federates Everywhere

      Fabio's Blog

      favicon

      Fabio Manganiello (blog.fabiomanganiello.com)

      akavel@merveilles.townA This user is from outside of this forum
      akavel@merveilles.townA This user is from outside of this forum
      akavel@merveilles.town
      wrote last edited by
      #25

      @fabio I really, really love it!! I wanted to do the same for quite a long time - but I didn't; and now maybe I can eventually steal your code and RIIR in glorious AGPL!

      That said, unfortunately at the moment it's not working for me, I can't open it either in my client, or through my instance's search 😒 FWIW, through my instance I'm seeing some "503 Remote SSL certificate could not be verified", while the client just spins a throbber endlessly. No idea where the fault lies, but I do remember reading many times that Mastodon is a flustercluck and a fishy citizen in ActivityPub 😞...

      Anyway, huge applause from me regardless, and hopefully one day I can get to fave the actual post on the blog!

      fabio@manganiello.euF 1 Reply Last reply
      0
      • fabio@manganiello.euF fabio@manganiello.eu

        #ActivityPub support in #Madblog

        I am glad to announce that Madblog has now officially joined the #Fediverse family.

        Madblog has already supported #Webmentions for the past couple of weeks, allowing your blog posts to be mentioned by other sites with Webmentions support (WordPress, Lemmy, HackerNews...) and get those mentions directly rendered on your page.

        It now adds ActivityPub support too, using #Pubby, another little Python library that I've put together myself (just like Webmentions) as a mean to quickly plug ActivityPub support to any Python Web app.

        Webmentions and Pubby follow similar principles and implement a similar API, and you can easily use them to add federation support to your existing Web applications - a single bind_webmentions or bind_activitypub call to your existing Flask/FastAPI/Tornado application should suffice for most of the cases.

        Madblog may have now become the easiest way to publish a federated blog - and perhaps the only way that doesn't require a database, everything is based on plain Markdown files.

        If you have a registered domain and a certificate, then hosting your federated blog is now just a matter of:

        mkdir -p ~/madblog/markdown
        cat <<EOF > ~/madblog/markdown/hello-world.md
        
        This is my first post on [Madblog](https://git.fabiomanganiello.com/madblog)!
        EOF
        
        docker run -it \
          -p 8000:8000 \
          -v "$HOME/madblog:/data" \
          quay.io/blacklight/madblog
        

        And Markdown files can be hosted wherever you like - a Git folder, an Obsidian Vault, a Nextcloud Notes installation, a folder on your phone synchronized over SyncThing...

        Federation support is also at a quite advanced state compared to e.g. #WriteFreely. It currently supports:

        • Interactions rendered on the articles: if you like, boost, quote or reply to an article, all interactions are rendered directly at the bottom of the article (interactions with WriteFreely through federated accounts were kind of lost in the void instead)

        • Guestbook support (optional): mentions to the federated Madblog handle that are not in response to articles are now rendered on a separate /guestbook route

        • Email notifications: all interactions can have email notifications

        • Support for quotes, also on Mastodon

        • Support for mentions, just drop a @joe@example.com in your Markdown file and Joe will get a notification

        • Support for hashtag federation

        • Support for split-domain configurations, you can host your blog on blog.example.com but have a Fediverse handle like @blog@example.com. Search by direct post URL on Mastodon will work with both cases

        • Support for custom profile fields, all rendered on Mastodon, with verification support

        • Support for moderation, either through blocklist or allowlist, with support for rules on handles/usernames, URLs, domains or regular expressions

        • A partial (but comprehensive for the provided features) implementation of the Mastodon API

        If you want you can follow both the profiles of my blogs - they are now both federated:

        • My personal blog: @fabio@manganiello.blog (it used to run WriteFreely before, so if you followed it you may need to unfollow it and re-follow it)

        • The #Platypush blog: @blog@platypush.tech

        Link Preview Image
        Madblog: A Markdown Folder That Federates Everywhere

        Fabio's Blog

        favicon

        Fabio Manganiello (blog.fabiomanganiello.com)

        jonny@neuromatch.socialJ This user is from outside of this forum
        jonny@neuromatch.socialJ This user is from outside of this forum
        jonny@neuromatch.social
        wrote last edited by
        #26

        @fabio@manganiello.eu @fabio@manganiello.blog @blog omg thank you for the python lib. i was getting ready to write one but extremely good to see i can draw from (credit/depend on/etc.) prior art. adding to the inspo docs!!!

        1 Reply Last reply
        0
        • ? Guest

          @julian Yes, to backfill a profile. It is a manual action.

          I don't know who else does that, but @jonny is working on adding automatic profile backfill to Mastodon: https://github.com/mastodon/mastodon/pull/34597

          jonny@neuromatch.socialJ This user is from outside of this forum
          jonny@neuromatch.socialJ This user is from outside of this forum
          jonny@neuromatch.social
          wrote last edited by
          #27

          @silverpill @julian @general Collections are one of the best parts of activitypub/streams and i have no idea why nobody uses them or works on them. like if we embraced the underlying graph structure of the data and used the canonicalization algos that have been developed in the meantime we get all the good parts of atproto (mostly efficient updating, the pds system) basically for free

          jonny@neuromatch.socialJ 1 Reply Last reply
          0
          • jonny@neuromatch.socialJ jonny@neuromatch.social

            @silverpill @julian @general Collections are one of the best parts of activitypub/streams and i have no idea why nobody uses them or works on them. like if we embraced the underlying graph structure of the data and used the canonicalization algos that have been developed in the meantime we get all the good parts of atproto (mostly efficient updating, the pds system) basically for free

            jonny@neuromatch.socialJ This user is from outside of this forum
            jonny@neuromatch.socialJ This user is from outside of this forum
            jonny@neuromatch.social
            wrote last edited by
            #28

            @silverpill @julian @general account backfilling is issue number THIRTY FOUR in mastodon and has >700 thumbs, >200 comments hemming and hawing about how possible it would be for TEN YEARS.

            the solution is just "enumerate the outbox" and it's 200 lines.

            like we already have a mechanism for reply controls: the reply collection.
            for fine-grained post visibility: access control on the outbox collection.
            broadcasting feeds and posts between instances: collections
            migrations: collections
            store and forward, offline-focused AP: collections

            and so on.

            1 Reply Last reply
            0
            • django@social.coopD This user is from outside of this forum
              django@social.coopD This user is from outside of this forum
              django@social.coop
              wrote last edited by
              #29

              @julian @silverpill ActivityPub API clients dont need their server to backfill thanks to proxyURL, but Actors will look like they haven’t posted 😒

              julian@activitypub.spaceJ 1 Reply Last reply
              0
              • django@social.coopD django@social.coop

                @julian @silverpill ActivityPub API clients dont need their server to backfill thanks to proxyURL, but Actors will look like they haven’t posted 😒

                julian@activitypub.spaceJ This user is from outside of this forum
                julian@activitypub.spaceJ This user is from outside of this forum
                julian@activitypub.space
                wrote last edited by
                #30

                @django@social.coop sounds like I'll have to implement it sooner rather than later!

                1 Reply Last reply
                1
                0
                • akavel@merveilles.townA akavel@merveilles.town

                  @fabio I really, really love it!! I wanted to do the same for quite a long time - but I didn't; and now maybe I can eventually steal your code and RIIR in glorious AGPL!

                  That said, unfortunately at the moment it's not working for me, I can't open it either in my client, or through my instance's search 😒 FWIW, through my instance I'm seeing some "503 Remote SSL certificate could not be verified", while the client just spins a throbber endlessly. No idea where the fault lies, but I do remember reading many times that Mastodon is a flustercluck and a fishy citizen in ActivityPub 😞...

                  Anyway, huge applause from me regardless, and hopefully one day I can get to fave the actual post on the blog!

                  fabio@manganiello.euF This user is from outside of this forum
                  fabio@manganiello.euF This user is from outside of this forum
                  fabio@manganiello.eu
                  wrote last edited by
                  #31

                  @akavel@merveilles.town thanks for your response πŸ™‚

                  Did you manage to get to the bottom of it? From the description of the error it sounds like your certificate may be broken? Can you access the blog index from a normal browser? Do you perhaps have a split-domain situation (link != activitypub_link) but the certificate only applies to one?

                  akavel@merveilles.townA 1 Reply Last reply
                  0
                  • julian@fietkau.socialJ julian@fietkau.social

                    @fabio @liaizon Oh excellent! Please let me know when the new version is live on your blog and I'll test again. πŸ™‚

                    fabio@manganiello.euF This user is from outside of this forum
                    fabio@manganiello.euF This user is from outside of this forum
                    fabio@manganiello.eu
                    wrote last edited by
                    #32

                    @julian@fietkau.social @liaizon@wake.st it's all live, let me know if it works πŸ™‚

                    julian@fietkau.socialJ 1 Reply Last reply
                    0
                    • stefano@mastodon.bsd.cafeS stefano@mastodon.bsd.cafe shared this topic
                    • fabio@manganiello.euF fabio@manganiello.eu

                      @julian@fietkau.social @liaizon@wake.st it's all live, let me know if it works πŸ™‚

                      julian@fietkau.socialJ This user is from outside of this forum
                      julian@fietkau.socialJ This user is from outside of this forum
                      julian@fietkau.social
                      wrote last edited by
                      #33

                      @fabio @liaizon New quote test, wooo!

                      Link Preview Image
                      Madblog: A Markdown Folder That Federates Everywhere

                      Fabio's Blog

                      favicon

                      Fabio Manganiello (blog.fabiomanganiello.com)

                      Edit: Yep, looks to be working! πŸ˜€

                      fabio@manganiello.blogF 1 Reply Last reply
                      0
                      • fabio@manganiello.euF fabio@manganiello.eu

                        @akavel@merveilles.town thanks for your response πŸ™‚

                        Did you manage to get to the bottom of it? From the description of the error it sounds like your certificate may be broken? Can you access the blog index from a normal browser? Do you perhaps have a split-domain situation (link != activitypub_link) but the certificate only applies to one?

                        akavel@merveilles.townA This user is from outside of this forum
                        akavel@merveilles.townA This user is from outside of this forum
                        akavel@merveilles.town
                        wrote last edited by
                        #34

                        @fabio I didn't investigate further as I had no idea how.

                        Which link specifically do you mean by "blog index"?

                        As to domain/instance I mean this one I'm writing from - I don't control it, sorry I see I wrote it in a confusing way, I'm just a plain citizen here.

                        Seeing you mention certs I will try on a laptop then, not on phone, to compare. Or could it be that the instance I'm on has some certs problems internally? πŸ€”

                        fabio@manganiello.euF 1 Reply Last reply
                        0
                        • akavel@merveilles.townA akavel@merveilles.town

                          @fabio I didn't investigate further as I had no idea how.

                          Which link specifically do you mean by "blog index"?

                          As to domain/instance I mean this one I'm writing from - I don't control it, sorry I see I wrote it in a confusing way, I'm just a plain citizen here.

                          Seeing you mention certs I will try on a laptop then, not on phone, to compare. Or could it be that the instance I'm on has some certs problems internally? πŸ€”

                          fabio@manganiello.euF This user is from outside of this forum
                          fabio@manganiello.euF This user is from outside of this forum
                          fabio@manganiello.eu
                          wrote last edited by
                          #35

                          @akavel@merveilles.town I mean if you open the home page of your blog from a normal browser (any browser, mobile or desktop) do you still see the certificate error? If that's not the case and you have a split domain configuration (so your blog is on a URL and your federated domain is on another) then double-check that both the certificates are valid.

                          akavel@merveilles.townA 1 Reply Last reply
                          3
                          0
                          • fabio@manganiello.euF fabio@manganiello.eu

                            @akavel@merveilles.town I mean if you open the home page of your blog from a normal browser (any browser, mobile or desktop) do you still see the certificate error? If that's not the case and you have a split domain configuration (so your blog is on a URL and your federated domain is on another) then double-check that both the certificates are valid.

                            akavel@merveilles.townA This user is from outside of this forum
                            akavel@merveilles.townA This user is from outside of this forum
                            akavel@merveilles.town
                            wrote last edited by
                            #36

                            @fabio Oh I didn't install your blog on my host yet! For now I wanted to comment/fave in _your_ blog and I couldn't do that - this is my problem...

                            fabio@manganiello.euF 1 Reply Last reply
                            0
                            • akavel@merveilles.townA akavel@merveilles.town

                              @fabio Oh I didn't install your blog on my host yet! For now I wanted to comment/fave in _your_ blog and I couldn't do that - this is my problem...

                              fabio@manganiello.euF This user is from outside of this forum
                              fabio@manganiello.euF This user is from outside of this forum
                              fabio@manganiello.eu
                              wrote last edited by
                              #37

                              @akavel@merveilles.town oh I see, that sounds weird though, many other people could interact already...could it be that you're in a MITM configuration with some corporate or private VPN injecting SSL certificates at runtime? I have similar issues when I browse from my corporate VPN domains that my VPN hasn't whitelisted yet - then it'll try to inject an invalid certificate

                              1 Reply Last reply
                              2
                              0
                              • fabio@manganiello.blogF fabio@manganiello.blog

                                @julian@fietkau.social @liaizon@social.wake.st and now with support for #markdown based replies too πŸ™‚

                                liaizon@social.wake.stL This user is from outside of this forum
                                liaizon@social.wake.stL This user is from outside of this forum
                                liaizon@social.wake.st
                                wrote last edited by
                                #38

                                @fabio @julian I noticed I can't quote this reply, was that intentional?

                                fabio@manganiello.blogF 1 Reply Last reply
                                0
                                • fabio@manganiello.blogF fabio@manganiello.blog

                                  @liaizon@wake.st good catch!

                                  It wasn't intentional, I had simply forgotten to apply to replies the same quote policy I implemented for articles.

                                  It should be working now - thanks for the heads up πŸ™‚

                                  liaizon@social.wake.stL This user is from outside of this forum
                                  liaizon@social.wake.stL This user is from outside of this forum
                                  liaizon@social.wake.st
                                  wrote last edited by
                                  #39

                                  @fabio yay it looks like it works now!

                                  another tiny bug I will note: the way you are adding my mention in your reply is causing mastodon to make a link preview for it. while I don't know what you need to do technically to disable it, I know its able to be done since they only show up like this for certain server softwares

                                  Link Preview Image
                                  julian@fietkau.socialJ liaizon@social.wake.stL 2 Replies Last reply
                                  1
                                  0
                                  • liaizon@social.wake.stL liaizon@social.wake.st

                                    @fabio @julian I noticed I can't quote this reply, was that intentional?

                                    fabio@manganiello.blogF This user is from outside of this forum
                                    fabio@manganiello.blogF This user is from outside of this forum
                                    fabio@manganiello.blog
                                    wrote last edited by
                                    #40

                                    @liaizon@wake.st good catch!

                                    It wasn't intentional, I had simply forgotten to apply to replies the same quote policy I implemented for articles.

                                    It should be working now - thanks for the heads up πŸ™‚

                                    liaizon@social.wake.stL 1 Reply Last reply
                                    0
                                    • julian@fietkau.socialJ julian@fietkau.social

                                      @fabio @liaizon New quote test, wooo!

                                      Link Preview Image
                                      Madblog: A Markdown Folder That Federates Everywhere

                                      Fabio's Blog

                                      favicon

                                      Fabio Manganiello (blog.fabiomanganiello.com)

                                      Edit: Yep, looks to be working! πŸ˜€

                                      fabio@manganiello.blogF This user is from outside of this forum
                                      fabio@manganiello.blogF This user is from outside of this forum
                                      fabio@manganiello.blog
                                      wrote last edited by
                                      #41

                                      @julian@fietkau.social @liaizon@social.wake.st and now with support for #markdown based replies too πŸ™‚

                                      liaizon@social.wake.stL 1 Reply Last reply
                                      0
                                      • liaizon@social.wake.stL liaizon@social.wake.st

                                        @fabio yay it looks like it works now!

                                        another tiny bug I will note: the way you are adding my mention in your reply is causing mastodon to make a link preview for it. while I don't know what you need to do technically to disable it, I know its able to be done since they only show up like this for certain server softwares

                                        Link Preview Image
                                        julian@fietkau.socialJ This user is from outside of this forum
                                        julian@fietkau.socialJ This user is from outside of this forum
                                        julian@fietkau.social
                                        wrote last edited by
                                        #42

                                        @liaizon @fabio That one's a microformat mismatch, Mastodon looks for the class "mention" to skip the link preview and open the profile locally. https://docs.joinmastodon.org/spec/microformats/#mastodon

                                        liaizon@social.wake.stL 1 Reply Last reply
                                        0
                                        • julian@fietkau.socialJ julian@fietkau.social

                                          @liaizon @fabio That one's a microformat mismatch, Mastodon looks for the class "mention" to skip the link preview and open the profile locally. https://docs.joinmastodon.org/spec/microformats/#mastodon

                                          liaizon@social.wake.stL This user is from outside of this forum
                                          liaizon@social.wake.stL This user is from outside of this forum
                                          liaizon@social.wake.st
                                          wrote last edited by
                                          #43

                                          @julian @fabio oh interesting! this seems like something there should be a FEP for huh

                                          1 Reply Last reply
                                          1
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

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