25
[Meta] The ~~first~~ Lemmy-as-a-blog instance - KaKi's blog
lemmyverse.link# Welcome to the first Lemmy-as-a-blog instance Hello, Fediverse! I’m Tiana,
26yo web developer from 🇫🇷 France, computer enthusiast since forever. ## Some
personal history Ages ago, I got started with my very first blog hosted on
Skyblog [https://en.wikipedia.org/wiki/Skyrock_(social_network_site)], back when
I was still a kid who didn’t (but definitely pretended to) know much about
computers. 🧑💻 Then, I went hopping between other free providers, until it got
serious with WordPress.com [http://WordPress.com], which I eventually migrated
to a self-hosted WordPress.org [http://WordPress.org] instance (I also got my
first Linux VPS later on). I eventually dropped blogging and never picked it up
again though, and for a while I couldn’t figure out why… Until I became somewhat
more active social media, and realized : since self-hosting, I missed
interacting. People sign up on social media knowing they will experience regular
interactions, but not necessarily with the same people, therefore they won’t
sign up on every single blog they visit, for possibly commenting just once.
Nevertheless, I didn’t want to go back to free hosts with subdomains and ads, so
I gave up. ### Discovering the Fediverse I first joined the Fediverse on
Mastodon (@ KaKi87@mamot.fr [https://mamot.fr/@KaKi87]), and quickly realized
how awesome decentralized social media is : the independence that comes with
self-hosting, combined with the interaction potential brought by federation. 😍
But, Mastodon is microblogging, not blogging, and I love blogging. So, I looked
up federated blogging solutions, and found one : Plume
[https://github.com/Plume-org/Plume]. I was excited! Until I noticed its lots of
bugs, missing features, and spam issues… There are other notable options like
the ActivityPub plugin for WordPress
[https://wordpress.org/plugins/activitypub/], or the WriteFreely
[https://writefreely.org/] platform, but they’re all incomplete, gluing
federation on platforms that weren’t designed for it. Seeing how attractive the
modern Ghost [https://ghost.org/] CMS is, people (me included) wished for it to
join the Fediverse, which I learned while writing this article that they’re
apparently working on it [https://activitypub.ghost.org/] (but Soon™, paid early
access, and enthusiastic about federating with Meta’s Threads platform).
Finally, here comes Lemmy. ## “Lemmy as a blog” This is mentioned once
[https://github.com/LemmyNet/lemmy-docs/blob/0ae7fa494e402357244ecfc4b10760be62c91775/src/users/06-other-features.md#lemmy-as-a-blog]
in the documentation (and nowhere else) : > Lemmy can also function as a
blogging platform. Doing this is as simple as creating a community and enabling
the option “Only moderators can post to this community”. Now only you and other
people that you invite can create posts, while everyone else can comment. Like
any Lemmy community, it is also possible to follow from other Fediverse
platforms and over RSS. For advanced usage, it is even possible to use the API
and create a different frontend which looks more blog-like. ### The first Lemmy
as a blog? That is indeed what I’m doing here and now, but actually, I started
looking into this a long time ago (my fist public question about it
[https://sh.itjust.works/comment/1087812] is 2 years old), and as this and all
following inquiries I made on this subject remained unanswered, I believed that
I was gonna have to be the first one to do it. But… No! As the documentation
says, Lemmy isn’t blog-like, so making a blog-like frontend for it would be a
good idea, but I don’t wanna make the UI components, so I asked around about
whether there is a UI-only framework for blogs somewhere, and I was told “no,
but someone made a frontend [https://martijn.sh/] for their Lemmy-as-a-blog
instance [https://jlai.lu/c/self@0d.gs] over there”, and I was like, what? I’ve
been looking for this for a while and never found anything… Well, turns out it’s
a very new project [https://github.com/kernelle/BlogOnLemmy]. I will not be
reusing their frontend though, because that’s not really the kind of design I’m
looking for. ### The second Lemmy as a blog. So, I welcome you on the second
Lemmy-as-a-blog instance. See you in the comments!


What am I looking for in the logs though ? All I see is “InboxTimeout”…
/inbox is the endpoint for federation with ActivityPub, so definitely on the right track. Try increasing verbosity to get a full stack traceback to where in the code it’s bugging.
InboxTimeout means your server is taking too long to process API calls to /inbox, I’ve had them before too due to misconfiguration of the reverse proxy. Make sure you’re passing on the right headers, especially the IP headers so they aren’t rate limited and the Accept header so your server knows to send json when requested.
Troubleshooting federation gives many options for testing and checking your configuration, running through them might give your more insight.
So, here’s the full error :
lemmy-1 | 2025-07-14T00:34:32.098630Z DEBUG HTTP request{http.method=POST http.scheme="https" http.host=blog.kaki87.net http.target=/inbox otel.kind="server" request_id=a9c359f6-eb9d-4888-9ac2-55c1f5bb8e43}: actix_web::middleware::logger: Error in response: LemmyError { message: InboxTimeout, inner: InboxTimeout, context: SpanTrace [{ target: "lemmy_server::root_span_builder", name: "HTTP request", fields: "http.method=POST http.scheme=\"https\" http.host=blog.kaki87.net http.target=/inbox otel.kind=\"server\" request_id=a9c359f6-eb9d-4888-9ac2-55c1f5bb8e43", file: "src/root_span_builder.rs", line: 16 }] } lemmy-1 | 2025-07-14T00:34:32.098834Z WARN Error encountered while processing the incoming HTTP request: lemmy_server::root_span_builder: InboxTimeout: InboxTimeoutI’ve also been seeing this one :
lemmy-1 | 2025-07-14T00:41:00.407762Z DEBUG HTTP request{http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=9aab8319-3f3b-4f4e-8530-3b3633afe2f1}: actix_web::extract: Error for Option extractor: IncorrectLogin: IncorrectLogin lemmy-1 | 2025-07-14T00:41:00.427630Z DEBUG HTTP request{http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/post/list otel.kind="server" request_id=ef746ac7-b9a3-4615-bb37-4c12f0ed0827}: actix_web::extract: Error for Option extractor: IncorrectLogin: IncorrectLoginAs for the reverse proxy, I’m using Caddy with the configuration provided here, and it’s supposed to pass those headers by default.
The suggested
curlrequests work.I wish there was a tool that could just tell what’s wrong, like https://federationtester.matrix.org/ for Matrix…
Hmmm, some InboxTimeouts are to be expected. The second one could be the result of a scraper or bot. It’s still strange your federation list is empty. I’d take a look at the database, clearing the federation queue (public.federation_queue_state) is a good idea. ‘public.instance’ should be populated with servers (mine has 2836). Peaking into the log files of the database could give some more insight as well.
A successfully federated incoming action will look like this:
2025-07-14T22:40:54.321151Z INFO HTTP request{http.method=POST http.scheme="http" http.host=0d.gs http.target=/inbox otel.kind="server" request_id=61bf0ea2-8df3-42ff-a433-3bec8b37047c}: actix_web::middleware::logger: 10.10.0.1 'POST /inbox HTTP/1.1' 200 0 '-' 'Lemmy/0.19.12; +https://lemmy.ml/' 0.158242Your outgoing federation seems to be fine now on my end, this is how my server sees yours:
id 2794; ;domain "blog.kaki87.net"; published "2025-06-30T11:35:32.398830Z" ;updated "2025-07-14T00:42:32.758669Z" ;software "lemmy" ;version "0.19.11" ;federation_state: ;instance_id 2794 ;last_successful_id 46037 ;last_successful_published_time "2025-07-14T21:12:27.481507Z" ;fail_count 0You could try updating or reinstalling your back-end as well, lemmy is at 0.19.12.