
Dave Swift
Posts
-
OpnForm - Build beautiful forms in seconds -
Cap - The open source alternative to Loom -
YouTube Tutorial on Email HostingHey Cloudron Community...
I made a video to help spread the word about Cloudron on my YouTube channel. Figured some people here might enjoy it as well:
Not trying to promote anything, so if this isn't allowed feel free to remove.
-
[Package] Typesense Search Engine - Fast, Typo-Tolerant SearchHi Cloudron community!
I've created a Typesense Cloudron package that provides lightning-fast, typo-tolerant search functionality. Typesense is an open-source alternative to Algolia and an easier-to-use alternative to ElasticSearch.
Installation
You'll need the Cloudron CLI to install this. Here's the command:
# Clone the repository from source https://github.com/clientamp/typesense-cloudron git clone https://github.com/clientamp/typesense-cloudron.git && cd typesense-cloudron # Install Typesense Search Engine with dockerhub image clientamp/typesense-cloudron:29.0.0 # change $YOUR_CUSTOM_LOCATION to e.g. typesense cloudron install --image clientamp/typesense-cloudron:29.0.0 --location $YOUR_CUSTOM_LOCATION
What You Get
- Fast search with sub-second response times
- Typo tolerance - finds results even with spelling mistakes
- Auto-generated API keys with secure defaults
- CORS support for web application integration
- Health checks and monitoring for production use
- Automatic backups through Cloudron
Perfect For
E-commerce sites, documentation, content management, user directories - basically any application that needs fast, intelligent search.
I'm using it on my Ghost website now, see it in action: daveswift.com (it's a big upgrade over Ghost's native search!)
Requirements
- Cloudron 7.0.0 or higher
- Minimum 512MB RAM (1GB+ recommended for production)
How It Works
The package automatically generates secure API keys, sets up data directories, and configures everything needed for production use. You can then create search collections via REST API and integrate with any programming language.
Why Typesense?
It's simpler than ElasticSearch to set up and use, provides an open-source alternative to Algolia with no vendor lock-in, and includes real-time updates and typo tolerance out of the box.
Getting Started
Once installed, check out the Typesense API documentation for examples of creating collections, adding documents, and performing searches.
Docker Hub
Repository: https://hub.docker.com/r/clientamp/typesense-cloudron
Image:clientamp/typesense-cloudron:29.0.0
GitHub
Repository: https://github.com/clientamp/typesense-cloudron
This package has been tested and as I mentioned, is currently running in production on my Cloudron instance.
-
[Package] Typesense Search Engine - Fast, Typo-Tolerant SearchMore details:
My integration focuses on two main parts: (1) setting up webhooks in Ghost to trigger real-time sync via n8n to Typesense, and (2) embedding the search UI directly in the Ghost theme for the frontend.
Ghost Webhook Setup (for Real-Time Sync)
In Ghost Admin (yourblog.com/ghost/#/integrations), I created a Custom Integration called "Typesense n8n Integration." This gives you a Content API key (used in n8n to fetch full post/page data).
Then, add webhooks for key events (publish, update, unpublish, delete). Each points to an n8n webhook URL:
-
Post published or Post updated:
https://n8n.yourdomain.com/webhook/ghost-typesense
(n8n workflow: Receives minimal payload with post ID, fetches full data via Ghost Content API/posts/{id}?key=CONTENT_API_KEY&include=tags,authors
, transforms to Typesense schema, upserts.) -
Post unpublished or Post deleted:
https://n8n.yourdomain.com/webhook/ghost-typesense-delete
(n8n: Extracts ID, sends DELETE to Typesense/collections/ghost/documents/{id}
.)
Ghost webhooks send limited data (e.g., just ID/slug), so n8n always fetches the full object. This keeps Typesense updated in near real-time (n8n adds ~30-60s delay, but it's seamless for users).
For initial bulk sync: Separate n8n workflows paginate Ghost API (
/posts/?key=CONTENT_API_KEY&limit=100&page=N&filter=status:published
), transform to NDJSON, and bulk import to Typesense withaction=upsert
.Frontend UI Integration in Ghost Theme
I used the official Typesense InstantSearch Adapter. In your custom theme's
default.hbs
(head section):<script src="https://cdn.jsdelivr.net/npm/typesense-instantsearch-adapter@2/dist/typesense-instantsearch-adapter.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/instantsearch.js@4"></script> <script src="{{asset 'js/search.js'}}"></script> <!-- Custom init script --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.css@8/themes/reset-min.css"> <link rel="stylesheet" href="{{asset 'css/search.css'}}"> <!-- Custom styles -->
In
assets/js/search.js
, initialize InstantSearch with your search-only Typesense key, query params (e.g.,query_by: 'title,excerpt,plaintext,tags.name,authors.name'
), and a custom hit template to display tags/authors:// Simplified excerpt const search = instantsearch({ indexName: 'ghost', searchClient: typesenseInstantsearchAdapter.searchClient }); search.addWidgets([ instantsearch.widgets.searchBox({ container: '.js-search-input' }), instantsearch.widgets.hits({ container: '.js-search-results', templates: { item: hit => ` <article> <h2><a href="${hit.url}">${hit.title}</a></h2> <p>${hit.excerpt}</p> <div>By ${hit.authors?.map(a => a.name).join(', ') || 'Unknown'}</div> <div>${hit.tags?.map(t => `<span class="tag">#${t.name}</span>`).join(' ') || ''}</div> </article> ` } }), // Add refinementList for facets (tags, authors, type) ]); search.start(); // Bind to theme's search button/modal
Styles in
search.css
for cards, facets sidebar, etc. Trigger the modal via a button in your header partial (e.g.,<button class="js-search-button">Search</button>
).This gives full control—e.g., facets for filtering by tags.
After making changes, Zip your theme and upload it in Ghost Admin and restart Ghost.
Hope this helps as an example!
-
-
ActivePieces - nocode alternative to Zapier, Make, n8n etc@marcusquinn I was just learning about Cloudron when I made this video, and really didn't highlight some of its best features.
I will revisit sometime in 2024 with a better video.
-
ActivePieces - nocode alternative to Zapier, Make, n8n etc@shrey fundamentally n8n is positioned as "Workflow automation for technical people" and Activepieces more like Zapier, although not as deep at this point.
Activepieces can get "technical". Just throw in a code piece, but overall it's not as daunting for average users.
n8n has been around longer and has more integrations (750+ vs ~150).
-
Once.com37signals (Basecamp, Hey) is going to offer self-hosted software soon.
If you haven't heard, their new line of products is going to be for sale on once.com and will be completely self hosted.
It would be cool if Cloudron had a way for software like this or other "script" software to be listed in the app store (I'm thinking of things like Perfex, AltumCode, and Sendy).
I know they can be installed with a custom app, but the appeal of Cloudron is the app store!
What do you think of the concept of once.com? Personally, I'm excited to see what they do.
-
[Package] Typesense Search Engine - Fast, Typo-Tolerant SearchHi @girish, @nebulon, and team,
I've updated the Typesense package to address the backup roadblock from the docs (https://typesense.org/docs/guide/backups.html#backup-steps). This should make it compatible with Cloudron's strategy for database-like apps.
Key changes in v29.0.1:
- Added "localstorage" addon for persistent /app/data (includes DB files and snapshots).
- Defaulted data-dir to /app/data in start.sh.
- Added backup.sh to trigger a full server snapshot via /operations/snapshot API, saving to snapshots/latest.tar (relative to /app/data). It backs up all collections automatically and checks for success.
- Added restore.sh to untar latest.tar on startup if present, ensuring consistent restores.
- Improved logging for the API key in start.sh.
Tested on my live install (search.daveswift.com with existing collections)—backup creates the snapshot file, and restore loads it on restart without issues. The snapshot is a complete dump of all data, per Typesense docs.
Repo: https://github.com/clientamp/typesense-cloudron (changes on main, see CHANGELOG.md). Latest image: clientamp/typesense-cloudron:29.0.1 (or timestamped builds like 20250929-111100).
For integration, Cloudron could run backup.sh via a hook before filesystem backup, then ignore raw DB files. Happy to add more (e.g., compression).
Thanks!
-
ActivePieces - nocode alternative to Zapier, Make, n8n etc@marcusquinn hey I know that guy! Thanks for sharing.
-
Typesense - Fast, typo tolerant, fuzzy search engine for building delightful search experiencesI have Typesense up and running on my Cloudron and integrated with my Ghost site. Happy to share if anyone is interested.
-
Typesense - Fast, typo tolerant, fuzzy search engine for building delightful search experiences -
Paperspace VPS Provider - with GPU PricesPaperspace has been around a long time, I have used them for years. The nice thing about their droplets is when you're not using them they shutoff. So if you just need a Windows Desktop for a few minutes a day, you can use Paperspace.
I don't think I'd use them for Cloudron, it would be very expensive to keep them on all the time.
-
OpnForm - Build beautiful forms in secondsI took a deeper look at OpnForm from the user perspective.
-
PHP8.0 is supported for Mautic 4.4.10Mautic v5 is scheduled for general availability on January 9th and supports PHP 8.1.
-
Mautic MigrationI was able to get two Mautic sites migrated to Cloudron today.
I don't have phpMyAdmin on my DO droplets, and the dump commands that I was running from the command line kept having compatibility errors no matter what flags I tried.
What helped me was using TablePlus (free version, or included Setapp if you're a user). I'm not quite sure why, but the backup feature in that app gave me a mysql backup that worked right away.
Like dsp76, my email settings also didn't copy over, despite adding them in the config. No big deal.
I'm happy to have these on Cloudron now as they were running Ubuntu 18.0.4 and needed an upgrade anyway!
-
PHP8.0 is supported for Mautic 4.4.10Mautic v5 was released "on-time"!
I say "on-time" because it was originally scheduled for release over a year ago. But it's out now! It looks like it is a lot more performant.
-
Is Cloudron AMI No Longer in AWS?Came here to find out what the deal was after receiving this email:
Hello,
Thank you for subscribing to "Cloudron".
We are writing to inform you that, as of December 29, 2023, Cloudron UG will no longer offer "Cloudron" to new subscribers on AWS Marketplace. As a current subscriber, your use and subscription to Cloudron is unaffected; you can continue to create new instances, and any running instances will not be affected in any way.
If you have any questions or concerns please feel free to contact Cloudron UG directly at support@cloudron.io.
Sincerely,
Amazon Web Services -
Arranging AppsIs there any way to arrange apps?
(Maybe I'm missing something obvious, it wouldn't be the first time!)
As far as I can tell, they don't show up with any logical order that I can deduce. They're not listed alphabetically, last created, last updated, etc.
I'd love to be able to group them together such as Websites, Utilities, External Links.
Thanks for any insight!
-
App Link BugCan anyone confirm this bug for me?
Started with Cloudron v7.7.0+
App Links don't work properly. The link cuts off the slug and the destination is set to the root URL.
Example:
App Link settings has the destination is set to mydomain.com/mypage
On the My Apps list screen, the link actually just goes to mydomain.com