I'm no longer updating my Self Hosting experience here on Fediverse but it doesn't mean I'm not working.
I'm currently facing an obstacle I didn't predict: many apps I'd like to try, aren't in the YunoHost catalog but can be installed through Docker container.
I have no full competence on how to set all this stuff up, no idea if YunoHost and Docker can live together, I just heard I should change some ports configuration. Hostinger provider with kvm2 vps, Debian12, YunoHost latest version.
I'd really like to install @fabio 's MadBlog, it attracts me a lot, but I'm afraid to break everything. #blogging #docker #selfhost #selfhosting #yunohost

@elettrona maybe this article can help.

If you need a docker-compose for #Madblog it should be relatively straightforward.

Then, quoting the original article:

Install the Reverse Proxy app YunoHost app store | Reverse Proxy, choose the domain and then in the field Redirect destination path (unix:/file for socket) add the port, in this case 127.0.0.1:8000

How to install apps with Docker on Yunohost (how I did it)

Update 14.2.2024, nearly two years later: As you can see in the comments to my original post (see below), there are far more easier ways to install apps with Docker. First, docker compose makes installation and updating easier, and we have the Redirect and the Reverse Proxy apps! So this how I do it in 2024: Add a new subdomain for Trilium with Let’s Encrypt cert in the Webadmin Create a folder for Trilium mkdir /home/TheNomad11/trilium add a docker compose file: sudo nano docker-compose.yml ...

YunoHost Forum

@fabio Installed the blog, it's empty now - https://madblog.plusbrothers.net

but I noticed a strange thing: the title and authors are set into the docker-compose.yaml as variables, while the config.yaml isn't there. I mean, on madblog/config there is "config.yaml" which is a folder instead of a text file as it should. Damn, I had a lot of errors, thankfully I had Hostinger's automated chat assistance helping me interpret every log.

It's half past one, in the night, and I've finished the docker stuff now; reverse proxy has been correctly installed.

Now the doubt comes: is there a way to create a nav bar, such as an "about" page residing in the header? "social networks" are in the external links section you set up in the yaml.

And categories? You create a folder, or add the category name into yaml configuration file?

I didn't understand the whole activitypub part though, how to check if I have installed the correct python libraries for it.

@[email protected] @[email protected] welcome onboard πŸ™‚

the title and authors are set into the docker-compose.yaml as variables, while the config.yaml isn't there. I mean, on madblog/config there is "config.yaml" which is a folder instead of a text file as it should.

You can set title and authors either through environment variables or config.yaml.

Environment variables way:

services: madblog: # ... environment: - MADBLOG_TITLE="My Blog" - MADBLOG_DESCRIPTION="This is my blog" - MADBLOG_AUTHOR="My Name" - MADBLOG_AUTHOR_URL="https://..." - MADBLOG_AUTHOR_EMAIL="..."

config.yaml:

title: "My Blog" description: "This is my blog" author: "My Name" author_url: "https://..." author_email: "..."

is there a way to create a nav bar, such as an "about" page residing in the header? "social networks" are in the external links section you set up in the yaml.

I'm working on that right now and it should be available in the next Docker release (you can just do a docker pull quay.io/blacklight/madblog when ready and restart your container).

And categories? You create a folder, or add the category name into yaml configuration file?

A list of categories is supported on the config.yaml:

categories: - category1 - category2

But it's purely for SEO purposes - it'll add <meta> links in the home page to help search engines categorize your blog.

Otherwise folders are probably the most straightforward way - folders under markdown/ are rendered on the blog index.

I didn't understand the whole activitypub part though, how to check if I have installed the correct python libraries for it.

The Pubby library is installed by default, but federation is not enabled by default. You need to enable it explicitly with enable_activitypub in the config.yaml (or the MADBLOG_ENABLE_ACTIVITYPUB env var).

enable_activitypub: true # Only set activitypub_link and activitypub_domain if your blog's domain # differs from the domain name you want to expose to ActivityPub, e.g. # your blog is on madblog.plusbrothers.net but you want your Fediverse # domain to be @plusbrothers.net activitypub_link: https://plusbrothers.net activitypub_domain: plusbrothers.net # The username to expose to ActivityPub - in this configuration's case # your user will be @[email protected] activitypub_username: elena # Additional profile fields that you want to add to your ActivityPub profile # when visited on Mastodon (supports verification) activitypub_profile_fields: "Powered by Madblog": https://git.fabiomanganiello.com/madblog "Main Profile": '<a href="https://mastodon.social/@me" rel="me">@[email protected]</a>'

Support for About Me and custom nav links

@[email protected] @[email protected] I've had a bit of time today to put together a new #madblog version πŸ™‚

About Me

Now you can just drop an ABOUT.md in your pages directory. If you provide the right metadata in the #markdown header you also get a nicely rendered semantic h-card as a bonus.

An example from the header of my site's about page (trim the initial spaces, otherwise Madblog interprets these as true headers and messes up this post):

[//]: # (title: My Name) [//]: # (name: My Name) [//]: # (given-name: My) [//]: # (family-name: Name) [//]: # (url: https://example.com) [//]: # (photo: https://example.com/photo.jpg) [//]: # (email: [email protected]) [//]: # (job-title: Cat herder) [//]: # (org: My Company|https://example.com, My Side Project|https://another-example.com) [//]: # (note: Some brief description) [//]: # (key: https://pgp.example.com/key.txt|FINGERPRINT) [//]: # (links: @[email protected]|https://example.social/@me, Github|https://github.com/me, LinkedIn|https://www.linkedin.com/in/me/, XMPP|xmpp://[email protected], Matrix|https://matrix.to/#/@me:example.com)

External Links

You can add them now to your config.yaml.

# rel_me links are only for verification / # Mastodon-double linking purposes, but # they are not rendered on the HTML rel_me: - https://example.social/@me - https://goto.social/@name # External links are automatically rendered # on the about page external_links: - url: https://example.social/@me display_name: Mastodon # nav_links are automatically rendered # on the navigation panel nav_links: - url: https://example.social/@me display_name: Mastodon icon: https://example.social/favicon.ico

Also remember to specify enable_activitypub: true (and also link, or federation may break) if you want to make the blog handle discoverable on Mastodon:

# link is required for Webmentions and ActivityPub link: https://madblog.plusbrothers.net/ enable_activitypub: true # Only set these two if you want to use a different # domain (e.g. plusbrothers.net) for your federated # handles (e.g. @[email protected]). Otherwise # it'll be @[email protected] activitypub_link: https://plusbrothers.net activitypub_domain: plusbrothers.net # The username to expose to ActivityPub - in this configuration's case # your user will be @[email protected] activitypub_username: elena # Additional profile fields that you want to add to your ActivityPub profile # when visited on Mastodon (supports verification) activitypub_profile_fields: "Powered by Madblog": https://git.fabiomanganiello.com/madblog "Main Profile": '<a href="https://mastodon.social/@me" rel="me">@[email protected]</a>'
1774201228-elettrona-poliversity-it-reply

Fabio's Blog

Fabio Manganiello

@fabio I'll look at it; what I'm wondering is how to create the so-called header and footer links which appear on every page. Where you put your project/company/blog's mission explanation, the "support us" links, contacts, and (in case of writers) license, as creative commons and so on.

I also noticed an accessibility issue both in cards and lists mode: post titles aren't semantically marked with h2 headings.
I'd expect main blog's title with h1, then every title in the blog posts list is an h2. See the example in WordPress blogs

@[email protected]

What I'm wondering is how to create the so-called header and footer links which appear on every page. Where you put your project/company/blog's mission explanation, the "support us" links, contacts, and (in case of writers) license, as creative commons and so on.

That's the nav_links configuration πŸ™‚

nav_links: - url: https://example.social/@me display_name: Mastodon icon: https://example.social/favicon.ico - url: https://project.tech display_name: My Project icon: https://project.tech/favicon.ico

If instead you want to have them on the /about page but not in the main page navigation then you can add them as external_links instead.

I also noticed an accessibility issue both in cards and lists mode: post titles aren't semantically marked with h2 headings. I'd expect main blog's title with h1, then every title in the blog posts list is an h2. See the example in WordPress blogs

Thank you for the feedback! I'll tackle this soon - from a style perspective it doesn't matter much the heading level of the titles on the index, but I forgot that it messes up the a11y DOM hierarchy.

@fabio is there a complete documentation of all configuration variables? In the config yaml example I didn't find the nav_links variable.
And about pages: if I want to link to a specific blog's article? I was wondering how it works. If I want to place the guestbook page into the nav bar, should I link the whole http URL or just /guestbook?

Then - on WriteFreely, if I publish a post and pin it, it goes to header's links. As it should. But every markdown post I upload on madblog, gets into the Rss I think, like normal posts, even if it's not a post but a "static" page

@[email protected]

Is there a complete documentation of all configuration variables? In the config yaml example I didn't find the nav_links variable.

It's in the example - but I've added it today, the timing was perfect because I also needed it to migrate my personal website.

A full reference of the configuration parameters is on the README too.

if I want to link to a specific blog's article?

If you link to a blog article from another blog article a Webmention will be automatically sent out, so you can see the comment under the original page.

If you or anyone replies to a post from Mastodon and enable_activitypub is true then the reply will also be rendered automatically under the original page.

If you instead you mean "adding a link to another article in the nav bar", that should be possible always with nav_links:

nav_links: - name: Some Important Post url: /article/some-important-post icon: https://madblog.plusbrothers.net/img/myicon.png

If I want to place the guestbook page into the nav bar, should I link the whole http URL or just /guestbook?

Both should work. But you don't need to explicitly add the guestbook to the nav bar - it's automatically added if either Webmentions or ActivityPub are enabled and enable_guestbook is not set to false.

Then - on WriteFreely, if I publish a post and pin it, it goes to header's links.

Proper support for pinned collections hasn't yet been implemented (it requires implementing ActivityPub collections on Pubby too).

The workaround for now is simply to add links to nav_links.

But every markdown post I upload on madblog, gets into the Rss I think, like normal posts, even if it's not a post but a "static" page

Everything #markdown file you put under markdown on #madblog is also included in the RSS feed - unless you set default_visibility to non-public in the configuration or set e.g. [//]: # (visibility: unlisted) (or followers, direct or draft) in the Markdown headers.

madblog/config.example.yaml at main

madblog - A minimal, general-purpose Markdown-based CMS.

Platypush Git
@fabio This platform seems very interesting. It has a bigger learning curve than WordPress but, as far as I understood, I have no longer to worry about themes and stuff - except for the logo if needed, maybe I should set dimension manually (no idea of how sighted folks need it to be!)