Hey, thanks ! Just to clarify : Brid.gy works with it, but its not mandatory, you can simply cross post to bluesky/mastodon and have reactions to these syndicated posts fetched back to your own blog using webmentions
rmdes
Posts
-
Indiekit for Cloudron - IndieWeb Publishing Server -
Indiekit for Cloudron - IndieWeb Publishing ServerBlog post on how to deploy this : https://rmendes.net/content/articles/2026-01-24-deploy-your-own-indieweb-site/
-
Indiekit for Cloudron - IndieWeb Publishing Server@girish this is my first ever cloudron package, I don't know exactly what's the procedure to include this in the store but I would love to see this package available for anyone

-
Indiekit for Cloudron - IndieWeb Publishing Server- Title: Indiekit on Cloudron - Your own Indieweb powered blog on Cloudron
- Main Page: https://getindiekit.com/
- Git: https://github.com/rmdes/indiekit-cloudron
- Licence: MIT
- Dockerfile: Yes
- Demo: https://rmendes.net
- Summary:
Indiekit for Cloudron - IndieWeb Publishing Server
Repository: https://github.com/rmdes/indiekit-cloudron
Overview
A Cloudron-packaged https://getindiekit.com deployment that combines an IndieWeb publishing server with an Eleventy static site generator. This package lets you own your content on your domain while still
syndicating to social networks.Live Example: https://rmendes.net
What is Indiekit?
Indiekit is a Node.js server that implements IndieWeb standards - Micropub for posting, IndieAuth for authentication, and webmentions for cross-site interactions. Think of it as a self-hosted publishing
backend that works with any Micropub client (Quill, Indigenous, iA Writer, etc.).Architecture
nginx (port 3000) ā Static files from Eleventy
ā Proxy /admin, /micropub to Indiekit (port 8080)Eleventy (watcher) ā Rebuilds site when content changes
Indiekit ā Handles Micropub, auth, syndication
MongoDB ā Stores sessions, statisticsFeatures
IndieWeb Standards:
- Micropub - Post from any compatible client
- IndieAuth - Sign in with your domain
- Webmentions - Display likes, replies, reposts from other sites
- Microformats2 - Proper h-entry, h-card, h-feed markup
- POSSE - Syndicate to Mastodon and Bluesky via Bridgy
Post Types: Articles, notes, photos, bookmarks, likes, replies, reposts, events, RSVPs, jams, audio, video
Theme (indiekit-eleventy-theme):
- Responsive design with dark mode
- Tailwind CSS styling
- RSS and JSON feeds
- Image optimization
- Social embeds (YouTube, Mastodon, Bluesky)
- Reply context display with h-cite microformats
Custom Indiekit Plugins
I've developed four endpoint plugins that extend Indiekit with activity displays. All are published to npm under @rmdes/:
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā Plugin ā npm ā Description ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā indiekit-endpoint-github ā https://www.npmjs.com/package/@rmdes/indiekit-endpoint-github ā Display GitHub commits, stars, PRs, issues, and featured repositories ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā indiekit-endpoint-funkwhale ā https://www.npmjs.com/package/@rmdes/indiekit-endpoint-funkwhale ā Funkwhale listening history, favorites, now playing, and statistics ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā indiekit-endpoint-lastfm ā https://www.npmjs.com/package/@rmdes/indiekit-endpoint-lastfm ā Last.fm scrobbles, loved tracks, now playing, and listening stats ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā indiekit-endpoint-youtube ā https://www.npmjs.com/package/@rmdes/indiekit-endpoint-youtube ā YouTube channel videos, live streaming status, upcoming streams ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Each plugin provides:- Admin dashboard views in Indiekit's UI
- Public JSON API endpoints for static site integration
- Background sync to MongoDB
- Smart caching to respect API rate limits
Related Repositories
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā Repository ā Description ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā https://github.com/rmdes/indiekit-cloudron ā Main Cloudron package ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā https://github.com/rmdes/indiekit-eleventy-theme ā Eleventy theme (submodule) ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā https://github.com/rmdes/indiekit-endpoint-github ā GitHub activity plugin ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā https://github.com/rmdes/indiekit-endpoint-funkwhale ā Funkwhale plugin ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā https://github.com/rmdes/indiekit-endpoint-lastfm ā Last.fm plugin ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā https://github.com/rmdes/indiekit-endpoint-youtube ā YouTube plugin ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Installationgit clone https://github.com/rmdes/indiekit-cloudron.git
cd indiekit-cloudron
cloudron build
cloudron install --app yourdomain.comThen configure /app/data/config/env.sh with your API tokens.
Credits
- https://getindiekit.com by Paul Robert Lloyd
- https://www.11ty.dev static site generator
- https://indieweb.org community
- Notes: I have been using it as my daily blog engine for over a week now and I'm pretty happy with the result
- Alternative to Wordpress
-
What's coming in Cloudron 9Impressive UI redesign, loving it !!
-
After updating BaseRow to 1.29.2 The login screen asks me to create a new user and No databases exist.Odd, but got it working in the end
even after restarting the postgres service I could not get a success restore
hence Until I rebooted, i was not able to clone from an existing backup and get the clone of the app to show me the usual login screen after a success dump.
After rebooting, backup restore from a clone went just fine.
-
After updating BaseRow to 1.29.2 The login screen asks me to create a new user and No databases exist.I'm starting to think the problem may have happened even before, and that I have been making empty backups

I'm not sure how I can confirm this tho, but no matter what I restore, all I get is an empty Baserow -
After updating BaseRow to 1.29.2 The login screen asks me to create a new user and No databases exist.If I clone from a previous backup, any backup, I end up in the same first admin creation screen

-
After updating BaseRow to 1.29.2 The login screen asks me to create a new user and No databases exist.Similar issue here, but my logs are a bit different , I have tried to restore from previous backup but havent managed to connect with my existing user of recovered any of my databases. Honestly a bit worried because one of these were a journalist project about to launch
trying a restore now with a postgres service restart

same situation

-
Listmonk Bounce settingsI'm trying to use the bounce feature of listmonk
- I have setup the From email from the cloudron dashbord UI, this is now visible in the listmonk UI
- I have set the bounce POP account, the same account that I used in the From
- I can test a send mail from the SMTP view and I get the email
But
What I see in the log is :
2025/01/14 error scanning bounce mailbox: unknown charset: unknown charset: charset "ns_4551-2": htmlindex: invalid encoding nameSecond error :
2025/01/14 bounced subscriber ( / ) not foundthe from inbox I used contains plenty of bounce to check and process, but I'm not sure I'm actually logged in the in box at all.
Any idea how I can debug this further ?
-
ElasticsearchStill dreaming about that...

-
@muench-dev/n8n-nodes-blueskyI managed to install by it by removing some un-used community nodes, not sure which one was causing this but by cleaning up I got it to install
-
Bluesky Personal Data ServerMost people would be more interested to run their own PDS than a Relay I think, it's probably going to be bit by bit, i'm not expecting Bluesky to be born in a desired state of perfection because nothing on the internet is ever born that way but I do hope that over time more and more parts of Bluesky will able to be run by users if they choose so
-
Bluesky Personal Data ServerWhat about this approach : https://github.com/itaru2622/bluesky-selfhost-env
-
@muench-dev/n8n-nodes-blueskyI'm trying to install the n8n bluesky node
but I get strange errors in some N8N deployments, also referenced here

N8N install is 1.71.2 (upstream version) and v3.60.0 cloudron version
I'v managed to install it just fine on another cloudron, but one is still refusing me to install

Any idea what could be done here ?
-
No explicit error when existing DNS record exist for a domainJust to be clear, moving the box MAIL domain and MY (dashboard) worked seamlessly
and the PTR record on the VPS side is also already in place.but attempting to associate an existing or a new web app to this naked domain is broken for some reason, and it makes no sense since both the A record MY and the MX record MAIL were created just fine.
-
No explicit error when existing DNS record exist for a domainLogs from when attempting to associate a container/app to the naked domain
ec 01 16:39:17 box:dns/porkbun get: in zone infinitespace.click of type CNAME Dec 01 16:39:18 box:dns/porkbun get: in zone infinitespace.click of type A Dec 01 16:39:19 box:dns upsertDNSRecord: location on domain infinitespace.click of type A with values ["147.78.130.44"] Dec 01 16:39:19 box:dns/porkbun upsert: in zone infinitespace.click of type A with values ["147.78.130.44"] Dec 01 16:39:22 box:dns Attempt 80 failed. Will retry: Porkbun DNS error 400 {"status":"ERROR","message":"Create error: We were unable to create the DNS record."} Dec 01 16:39:22 box:dns registerLocation: Upsert error. retryable: true. Porkbun DNS error 400 {"status":"ERROR","message":"Create error: We were unable to create the DNS record."} Dec 01 16:39:27 box:dns/porkbun get: in zone infinitespace.click of type CNAME Dec 01 16:39:28 box:dns/porkbun get: in zone infinitespace.click of type A Dec 01 16:39:29 box:dns upsertDNSRecord: location on domain infinitespace.click of type A with values ["147.78.130.44"] Dec 01 16:39:29 box:dns/porkbun upsert: in zone infinitespace.click of type A with values ["147.78.130.44"] Dec 01 16:39:31 box:dns registerLocation: Upsert error. retryable: true. Porkbun DNS error 400 {"status":"ERROR","message":"Create error: We were unable to create the DNS record."} Dec 01 16:39:31 box:dns Attempt 81 failed. Will retry: Porkbun DNS error 400 {"status":"ERROR","message":"Create error: We were unable to create the DNS record."} Dec 01 16:39:36 box:dns/porkbun get: in zone infinitespace.click of type CNAME Dec 01 16:39:37 box:dns/porkbun get: in zone infinitespace.click of type A Dec 01 16:39:39 box:dns upsertDNSRecord: location on domain infinitespace.click of type A with values ["147.78.130.44"] Dec 01 16:39:39 box:dns/porkbun upsert: in zone infinitespace.click of type A with values ["147.78.130.44"] Dec 01 16:39:42 box:dns registerLocation: Upsert error. retryable: true. Porkbun DNS error 400 {"status":"ERROR","message":"Create error: We were unable to create the DNS record."} Dec 01 16:39:42 box:dns Attempt 82 failed. Will retry: Porkbun DNS error 400 {"status":"ERROR","message":"Create error: We were unable to create the DNS record."} Dec 01 16:39:47 box:dns/porkbun get: in zone infinitespace.click of type CNAME Dec 01 16:39:48 box:dns/porkbun get: in zone infinitespace.click of type A Dec 01 16:39:49 box:dns upsertDNSRecord: location on domain infinitespace.click of type A with values ["147.78.130.44"] Dec 01 16:39:49 box:dns/porkbun upsert: in zone infinitespace.click of type A with values ["147.78.130.44"] Dec 01 16:39:51 box:dns registerLocation: Upsert error. retryable: true. Porkbun DNS error 400 {"status":"ERROR","message":"Create error: We were unable to create the DNS record."} Dec 01 16:39:51 box:dns Attempt 83 failed. Will retry: Porkbun DNS error 400 {"status":"ERROR","message":"Create error: We were unable to create the DNS record."} Dec 01 16:39:56 box:dns/porkbun get: in zone infinitespace.click of type CNAME Dec 01 16:39:58 box:dns/porkbun get: in zone infinitespace.click of type A Dec 01 16:40:00 box:dns upsertDNSRecord: location on domain infinitespace.click of type A with values ["147.78.130.44"] Dec 01 16:40:00 box:dns/porkbun upsert: in zone infinitespace.click of type A with values ["147.78.130.44"] -
Customize well-knownHere an example of how it could be interesting to be able to add a custom value
use case, self-verification in Nostr : https://wedistribute.org/2024/05/nostr-nip-05/ -
[Intranet] Install cloudron in a corporate network environmentIndeed I'm aware of this, my goal was more the access to app-store and smooth app upgrades and of course : Active Directory support to enable easy SSO in my context.
And because we have our self-signed certificate deployed across our entire Windows Desktop park, I was thinking that would have been enough to sign my "cloudron.intranet.domain" with our root certificate and then enable anyone in the IT dept to access a set of applications.
-
[Intranet] Install cloudron in a corporate network environmenthuh okay, but does this mean I'm the only one having deployed (more or less) cloudron in this context ?