<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Containers are beautiful… backups are pain. So I built a “dummy” app to host DB add-ons (securely).]]></title><description><![CDATA[<p dir="auto">Hey Cloudron folks <img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f44b.png?v=c34f2a691b3" class="not-responsive emoji emoji-android emoji--wave" style="height:23px;width:auto;vertical-align:middle" title="👋" alt="👋" /></p>
<p dir="auto">I’ve been enjoying the <em>romance</em> of containerization: reproducible builds, clean deployments, upgrades that don’t feel like surgery… and then backups show up and remind you that life is suffering <img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f605.png?v=c34f2a691b3" class="not-responsive emoji emoji-android emoji--sweat_smile" style="height:23px;width:auto;vertical-align:middle" title="😅" alt="😅" /></p>
<h3>Containers: the honeymoon</h3>
<p dir="auto">Everything is clean and modular until you need to answer:</p>
<ul>
<li>“where exactly is the data?”</li>
<li>“how do I restore this reliably?”</li>
<li>“what happens when I migrate versions?”</li>
</ul>
<p dir="auto">In normal Docker-land, backup/restore often becomes a DIY project that turns into a part-time job.</p>
<h3>Cloudron’s superpower</h3>
<p dir="auto">This is why I love Cloudron: <strong>backup and restore is a one-click reality</strong>, not a wish. That’s an insanely underrated feature when you’re running real systems.</p>
<h3>The limitation that pushed me into… creativity</h3>
<p dir="auto">Cloudron is very app-centric (makes sense). But sometimes I want a “service-style” pattern:</p>
<blockquote>
<p dir="auto">“I want a database I can reuse across workflows/apps, and I want Cloudron’s backup/restore magic applied to it.”</p>
</blockquote>
<p dir="auto">So I tried a slightly funny but practical idea:</p>
<h3>The “dummy app” approach</h3>
<p dir="auto">I created a minimal “dummy” Cloudron app whose job is essentially:</p>
<ul>
<li>satisfy the platform’s app model</li>
<li>stay intentionally low-surface-area externally</li>
<li>act as a stable anchor for database add-ons that other apps (like <strong>n8n</strong>) can consume</li>
</ul>
<p dir="auto">Basically:</p>
<blockquote>
<p dir="auto">This app is mostly paperwork… but the paperwork unlocks the good stuff. <img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f604.png?v=c34f2a691b3" class="not-responsive emoji emoji-android emoji--smile" style="height:23px;width:auto;vertical-align:middle" title="😄" alt="😄" /></p>
</blockquote>
<h3>Result so far: MongoDB is live <img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=c34f2a691b3" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></h3>
<p dir="auto"><strong>MongoDB is implemented and successfully connected</strong> (tested from my workflows). That’s the milestone I wanted before even thinking about expanding the idea.</p>
<h3>Security posture (high level, no implementation details)</h3>
<p dir="auto">Because “shared database” can be great or disastrous depending on discipline, I treated security as the main requirement:</p>
<p dir="auto"><strong>1) Strong auth hygiene</strong></p>
<ul>
<li><strong>2FA enabled</strong> across Cloudron + n8n</li>
<li><strong>single-admin</strong> mindset where possible</li>
<li><strong>no password reuse</strong> (password manager)</li>
<li>unique credentials per service, rotatable by design</li>
</ul>
<p dir="auto"><strong>2) Minimal public footprint</strong></p>
<ul>
<li>the dummy app isn’t a UI product; it’s intentionally not a “new dashboard to attack”</li>
<li>the goal is: tiny external surface, strict internal usage</li>
</ul>
<p dir="auto"><strong>3) Network isolation assumptions</strong></p>
<ul>
<li>database access is treated as internal and controlled</li>
<li>the design intent is “only approved apps/workflows can talk to it,” not open inbound internet reachability</li>
</ul>
<p dir="auto"><strong>4) Secrets stay out of images/repos</strong></p>
<ul>
<li>credentials are handled as runtime secrets, not baked into artifacts</li>
<li>no “oops I committed the keys” situations</li>
</ul>
<p dir="auto"><strong>5) Restore-first thinking</strong></p>
<ul>
<li>backups are only real if restores are realistic</li>
<li>the whole point is to use Cloudron’s strengths for recovery predictability</li>
</ul>
<h3>Why I’m sharing</h3>
<p dir="auto">This pattern could be useful for anyone who wants:</p>
<ul>
<li>Cloudron-grade backup/restore applied to shared data services</li>
<li>stronger foundations for automation stacks like n8n</li>
<li>less bespoke backup scripting across random containers</li>
</ul>
<h3>Questions for the community</h3>
<ol>
<li>Does this align with Cloudron’s model, or does it feel like a hack that shouldn’t be encouraged?</li>
<li>Any security pitfalls you’d specifically watch for in a “shared DB service” pattern?</li>
<li>If this became a community-maintained “DB service anchor” app, would you use it?</li>
</ol>
<p dir="auto">Thanks — and yes, I’m fully aware I created an app whose primary feature is “existing”… but it’s existing <strong>securely</strong>, with backups, and that’s kind of the point <img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f604.png?v=c34f2a691b3" class="not-responsive emoji emoji-android emoji--smile" style="height:23px;width:auto;vertical-align:middle" title="😄" alt="😄" /></p>
<p dir="auto"><em>Signature: Drafted with help from my AI assistant, because life is short and nobody has time to write essays when there are containers to babysit</em>.*</p>
]]></description><link>https://forum.cloudron.io/topic/14806/containers-are-beautiful-backups-are-pain.-so-i-built-a-dummy-app-to-host-db-add-ons-securely-.</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Apr 2026 11:45:53 GMT</lastBuildDate><atom:link href="https://forum.cloudron.io/topic/14806.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 27 Dec 2025 16:04:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Containers are beautiful… backups are pain. So I built a “dummy” app to host DB add-ons (securely). on Wed, 31 Dec 2025 14:48:53 GMT]]></title><description><![CDATA[<p dir="auto">i went into a problem if DB is accessed by 3rd party the backup failed with error as its accessed by someone else <a class="plugin-mentions-user plugin-mentions-a" href="/user/joseph" aria-label="Profile: joseph">@<bdi>joseph</bdi></a>  <a class="plugin-mentions-user plugin-mentions-a" href="/user/girish" aria-label="Profile: girish">@<bdi>girish</bdi></a> any thoughts can we force db to close all connections at time of backup request came kind of like a script in dummy application</p>
]]></description><link>https://forum.cloudron.io/post/117787</link><guid isPermaLink="true">https://forum.cloudron.io/post/117787</guid><dc:creator><![CDATA[DualOSWinWiz]]></dc:creator><pubDate>Wed, 31 Dec 2025 14:48:53 GMT</pubDate></item><item><title><![CDATA[Reply to Containers are beautiful… backups are pain. So I built a “dummy” app to host DB add-ons (securely). on Wed, 31 Dec 2025 15:33:49 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/nebulon" aria-label="Profile: nebulon">@<bdi>nebulon</bdi></a> that’s why a snapshot copy of the DB is enough.</p>
<p dir="auto">Then the backup of the copy is unencumbered by any connections or DB access.</p>
]]></description><link>https://forum.cloudron.io/post/117644</link><guid isPermaLink="true">https://forum.cloudron.io/post/117644</guid><dc:creator><![CDATA[robi]]></dc:creator><pubDate>Wed, 31 Dec 2025 15:33:49 GMT</pubDate></item><item><title><![CDATA[Reply to Containers are beautiful… backups are pain. So I built a “dummy” app to host DB add-ons (securely). on Sun, 28 Dec 2025 19:51:44 GMT]]></title><description><![CDATA[<p dir="auto">Found this old thread about pre and post-backup hooks:  <a href="https://forum.cloudron.io/topic/8367/add-pre-backup-and-post-backup-hooks">https://forum.cloudron.io/topic/8367/add-pre-backup-and-post-backup-hooks</a> .  I think if this was implemented in Cloudron, a "database" app could be created to insure writes were flushed prior to backup (pre-backup hook) and then restored to a test instance and verified (post-backup hook).  If the app had a heartbeat, Kuma (available on Cloudron) could be used to monitor that the backup app didn't crash (preventing the backup and restore process from running).</p>
]]></description><link>https://forum.cloudron.io/post/117640</link><guid isPermaLink="true">https://forum.cloudron.io/post/117640</guid><dc:creator><![CDATA[crazybrad]]></dc:creator><pubDate>Sun, 28 Dec 2025 19:51:44 GMT</pubDate></item><item><title><![CDATA[Reply to Containers are beautiful… backups are pain. So I built a “dummy” app to host DB add-ons (securely). on Sun, 28 Dec 2025 11:20:03 GMT]]></title><description><![CDATA[<p dir="auto">Usually databases don't flush immediately to disk on write, this means if a backup is taken from the persistent storage, it may not contain all the latest data at that point in time, but more importantly the database engine might even write to disk, while Cloudron is backing up the files, which can lead to inconsistency on restore.</p>
]]></description><link>https://forum.cloudron.io/post/117623</link><guid isPermaLink="true">https://forum.cloudron.io/post/117623</guid><dc:creator><![CDATA[nebulon]]></dc:creator><pubDate>Sun, 28 Dec 2025 11:20:03 GMT</pubDate></item><item><title><![CDATA[Reply to Containers are beautiful… backups are pain. So I built a “dummy” app to host DB add-ons (securely). on Sun, 28 Dec 2025 01:14:24 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/nebulon" aria-label="Profile: nebulon">@<bdi>nebulon</bdi></a> so this meant DB backups are not accurate for the time being with this approach?</p>
]]></description><link>https://forum.cloudron.io/post/117618</link><guid isPermaLink="true">https://forum.cloudron.io/post/117618</guid><dc:creator><![CDATA[DualOSWinWiz]]></dc:creator><pubDate>Sun, 28 Dec 2025 01:14:24 GMT</pubDate></item><item><title><![CDATA[Reply to Containers are beautiful… backups are pain. So I built a “dummy” app to host DB add-ons (securely). on Sat, 27 Dec 2025 22:22:39 GMT]]></title><description><![CDATA[<p dir="auto">We do have some vague ideas about adding essentially headless "apps" like databases, pure APIs, ... in 2026. Basically some more PaaS bits. Currently as mentioned here, we have designed everything around apps which should have a webui, so this is certainly not ideal for many use-cases.</p>
<p dir="auto">There are some known missing bits in Cloudron to properly support like a database service. For example to provide reliable backup/restore points, we have to signal the process to flush all caches to disk before cutting a backup. This is what is done in Cloudron services right now, but for apps, we don't have this yet (with the exception for some optimizations for apps using sqlite)</p>
]]></description><link>https://forum.cloudron.io/post/117616</link><guid isPermaLink="true">https://forum.cloudron.io/post/117616</guid><dc:creator><![CDATA[nebulon]]></dc:creator><pubDate>Sat, 27 Dec 2025 22:22:39 GMT</pubDate></item><item><title><![CDATA[Reply to Containers are beautiful… backups are pain. So I built a “dummy” app to host DB add-ons (securely). on Sat, 27 Dec 2025 21:10:08 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/timconsidine" aria-label="Profile: timconsidine">@<bdi>timconsidine</bdi></a> Yes similar idea just DB addon</p>
]]></description><link>https://forum.cloudron.io/post/117614</link><guid isPermaLink="true">https://forum.cloudron.io/post/117614</guid><dc:creator><![CDATA[DualOSWinWiz]]></dc:creator><pubDate>Sat, 27 Dec 2025 21:10:08 GMT</pubDate></item><item><title><![CDATA[Reply to Containers are beautiful… backups are pain. So I built a “dummy” app to host DB add-ons (securely). on Sat, 27 Dec 2025 21:05:23 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/dualoswinwiz" aria-label="Profile: DualOSWinWiz">@<bdi>DualOSWinWiz</bdi></a> I have a vague recollection that someone created an app with a dummy page to return a 200 response and ran Postgres DB under  the hood, so other apps could connect to a segregated standalone Postgres data store, like some hosting providers offer.</p>
<ol>
<li>Is your app similar or did I miss the point partially or entirely ?</li>
<li>I searched for the app or thread lurking in undisturbed corners of my mind but I’m on a mobile screen and did not find it. Wood for trees or it’s been deleted.</li>
<li>That app did not make it into the AppStore, so maybe it did not align with Cloudron’s direction at the time. Now : who knows ? I’m sure (@)staff will chip in when they have time.</li>
</ol>
]]></description><link>https://forum.cloudron.io/post/117613</link><guid isPermaLink="true">https://forum.cloudron.io/post/117613</guid><dc:creator><![CDATA[timconsidine]]></dc:creator><pubDate>Sat, 27 Dec 2025 21:05:23 GMT</pubDate></item><item><title><![CDATA[Reply to Containers are beautiful… backups are pain. So I built a “dummy” app to host DB add-ons (securely). on Sat, 27 Dec 2025 20:19:17 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/dualoswinwiz" aria-label="Profile: DualOSWinWiz">@<bdi>DualOSWinWiz</bdi></a> I did not ask for that.</p>
]]></description><link>https://forum.cloudron.io/post/117611</link><guid isPermaLink="true">https://forum.cloudron.io/post/117611</guid><dc:creator><![CDATA[robi]]></dc:creator><pubDate>Sat, 27 Dec 2025 20:19:17 GMT</pubDate></item><item><title><![CDATA[Reply to Containers are beautiful… backups are pain. So I built a “dummy” app to host DB add-ons (securely). on Sat, 27 Dec 2025 17:19:44 GMT]]></title><description><![CDATA[<p dir="auto">Great creativity and idea.</p>
<p dir="auto">Reminds me of a startup I did, where the premise was separation of config, app and data where then any app can be yanked out of a system no matter where it runs and migrated anywhere else you please.</p>
<p dir="auto"><a class="plugin-mentions-group plugin-mentions-a" href="/groups/staff" aria-label="Profile: staff">@<bdi>staff</bdi></a> should like the idea since it's close to their platform thinking and how they handle shared DB services.</p>
<p dir="auto">This makes it modular enough for all the DBs we don't have yet, which people are often requesting.</p>
<p dir="auto">It does need a minimal UI for health checks which could be adapted from our VPN app to handle DB configuration ACLs.</p>
<p dir="auto">Share the repo when ready and you may get more collaborations and deployment via CCAI for additional testing.</p>
]]></description><link>https://forum.cloudron.io/post/117604</link><guid isPermaLink="true">https://forum.cloudron.io/post/117604</guid><dc:creator><![CDATA[robi]]></dc:creator><pubDate>Sat, 27 Dec 2025 17:19:44 GMT</pubDate></item></channel></rss>