Cloudron makes it easy to run web apps like WordPress, Nextcloud, GitLab on your server. Find out more or install now.


Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Bookmarks
  • Search
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 (No Skin)
  • No Skin
Collapse
Brand Logo

Cloudron Forum

Apps | Demo | Docs | Install
Dave SwiftD

Dave Swift

@Dave Swift
About
Posts
112
Topics
24
Shares
0
Groups
0
Followers
0
Following
0

Posts

Recent Best Controversial

  • YouTube Tutorial on Email Hosting
    Dave SwiftD Dave Swift

    Hey 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.

    Discuss

  • [Package] Typesense Search Engine - Fast, Typo-Tolerant Search
    Dave SwiftD Dave Swift

    Hi @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!

    App Packaging & Development

  • [Package] Typesense Search Engine - Fast, Typo-Tolerant Search
    Dave SwiftD Dave Swift

    Thanks James -- I'm confused though as both of those files were included.

    App Packaging & Development

  • [Package] Typesense Search Engine - Fast, Typo-Tolerant Search
    Dave SwiftD Dave Swift

    More 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 with action=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!

    App Packaging & Development

  • [Package] Typesense Search Engine - Fast, Typo-Tolerant Search
    Dave SwiftD Dave Swift

    Will share more later, if you’d like more detail.

    App Packaging & Development

  • [Package] Typesense Search Engine - Fast, Typo-Tolerant Search
    Dave SwiftD Dave Swift

    Sure, i’m using webhooks from Ghost (Settings >Integrations > Custom) to n8n when a post is created, updated, unpublished, or deleted and then n8n updates Typesense.

    App Packaging & Development

  • Typesense - Fast, typo tolerant, fuzzy search engine for building delightful search experiences
    Dave SwiftD Dave Swift

    Here is the package: https://forum.cloudron.io/topic/14252/package-typesense-search-engine-fast-typo-tolerant-search

    App Wishlist

  • [Package] Typesense Search Engine - Fast, Typo-Tolerant Search
    Dave SwiftD Dave Swift

    Hi 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.

    App Packaging & Development

  • Typesense - Fast, typo tolerant, fuzzy search engine for building delightful search experiences
    Dave SwiftD Dave Swift

    I have Typesense up and running on my Cloudron and integrated with my Ghost site. Happy to share if anyone is interested.

    App Wishlist

  • Hetzner PTR Record Invalid
    Dave SwiftD Dave Swift

    Something weird definitely happened when upgrading to 8.2.1. It looks like it is not the PTR record, but rather DKIM fails (even though the records are correctly added to my DNS).

    My bounce messages from Google all specified PTR so that is why I made this post.

    I switched to a mailgun relay for the holiday break as I didn't have time to try and troubleshoot this.

    DKIM is still out.

    As I saw someone else posted in the Freescout, Freescout also stopped being able to check for mail.

    Support hetzner ptr

  • Connection could not be established with host mail.domain.com [Connection timed out #110]
    Dave SwiftD Dave Swift

    Any update on this? I'm having the same issue.

    FreeScout

  • Hetzner PTR Record Invalid
    Dave SwiftD Dave Swift

    Never mentioned Cloudron changing it.

    Mail is failing after last update. PTR record is in tact and correct.

    Support hetzner ptr

  • Hetzner PTR Record Invalid
    Dave SwiftD Dave Swift

    Of note -- The only thing that did change Cloudron related, is updating to v8.2.0 and, just now v8.2.1, which I know included some updates to Haraka.

    Support hetzner ptr

  • Hetzner PTR Record Invalid
    Dave SwiftD Dave Swift

    Hello,

    I’m running Cloudron on a Hetzner server and have been using it as a mail server for about a year with no issues.

    Starting yesterday, my PTR record began showing as invalid on tools like MXToolbox and WhatsMyDNS. Since then, all outgoing mail has been rejected by recipients, with the failure message indicating that the PTR record is not configured correctly.

    Everything appears fine in the Cloudron dashboard (green checkmark next to the PTR record), and nothing has changed on my Hetzner server configuration.

    I’ve already opened a ticket with Hetzner to investigate, but I’m curious if anyone else is experiencing this issue or has insights into what might be causing it.

    Thanks for any help you can provide!

    Support hetzner ptr

  • error while backing up
    Dave SwiftD Dave Swift

    It was happening across multiple servers at the same time yesterday. Looks to be resolved now.

    Support hetzner backups

  • error while backing up
    Dave SwiftD Dave Swift

    Also happening for me -- Falkenstein (FSN1).

    Support hetzner backups

  • Change Access Control?
    Dave SwiftD Dave Swift

    I see now this is related to the recent change to the WordPress app.

    This adds a button to my login page, I don't want that.

    Can I disable somehow?

    WordPress (Developer)

  • Change Access Control?
    Dave SwiftD Dave Swift

    Is it possible to change an existing app from having Cloudron OpenID as the login method to using its own user management?

    Particularly with WordPress?

    "OpenID Connect Generic" showed up on my site as a recently as a plug-in.

    WordPress (Developer)

  • Installation of plugins is broken in Mautic package
    Dave SwiftD Dave Swift

    Thanks @dsp76. I figured it was something like that.

    It would be great to have a one-click Mautic Dev install, like we have for WordPress!

    Mautic

  • Webhook Bounce Management with Cloudron Email Server
    Dave SwiftD Dave Swift

    How can I setup a webhook from my Cloudron?

    Mautic
  • Login

  • Don't have an account? Register

  • Login or register to search.
  • First post
    Last post
0
  • Categories
  • Recent
  • Tags
  • Popular
  • Bookmarks
  • Search