<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>collabora – apt-upgrade.me – Homelab, Linux &amp; DevSecOps</title><link>https://www.apt-upgrade.me/tag/collabora/</link><description>One nerd's homelab: Linux, Kubernetes, security, and the occasional disaster.</description><language>en-US</language><lastBuildDate>Mon, 19 Oct 2026 15:52:20 +0200</lastBuildDate><atom:link href="https://www.apt-upgrade.me/tag/collabora/index.xml" rel="self" type="application/rss+xml"/><item><title>The Ansible Tour, Part 4: Nextcloud – Collabora, Push, Host Database and occ, Role by Role</title><link>https://www.apt-upgrade.me/2026/10/19/ansible-tour-part-4-nextcloud/</link><pubDate>Mon, 19 Oct 2026 15:52:20 +0200</pubDate><guid>https://www.apt-upgrade.me/2026/10/19/ansible-tour-part-4-nextcloud/</guid><description>&lt;p&gt;&lt;em&gt;Part 4 of the &lt;a href="https://www.apt-upgrade.me/2026/10/14/ansible-tour-part-1-framework/"&gt;Ansible Tour&lt;/a&gt;. After the blog in &lt;a href="https://www.apt-upgrade.me/2026/10/16/ansible-tour-part-3-blog/"&gt;part 3&lt;/a&gt;, here comes the second application: Nextcloud. The series describes release &lt;a href="https://github.com/aptupgrademe/www_k3s/tree/v3.3.0"&gt;v3.3.0&lt;/a&gt;, with later changes added as updates. What matches the blog is only mentioned briefly; the focus is on what is different.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Nextcloud is a file cloud: files, calendars, contacts, team folders and – with Collabora – documents edited together in the browser. Two of the three servers run it, for groups of very different size, with the same code and different values in the inventory. The work is shared by &lt;code&gt;next_mariadb&lt;/code&gt; and &lt;code&gt;next_redis&lt;/code&gt; (database and cache on the host), &lt;code&gt;next_k3s_deploy&lt;/code&gt; (Nextcloud, Collabora and the push service as Kubernetes objects), &lt;code&gt;next_config&lt;/code&gt; (Nextcloud’s settings) and &lt;code&gt;nextcloud_verify&lt;/code&gt;, plus the update playbook.&lt;/p&gt;</description></item><item><title>Two Minutes Forty-Five: My First Nextcloud App Update via Ansible (and the Guard Rail I Added Just Before)</title><link>https://www.apt-upgrade.me/2026/09/30/two-minutes-forty-five-my-first-nextcloud-app-update-via-ansible-and-the-guard-rail-i-added-just-before/</link><pubDate>Wed, 30 Sep 2026 21:30:02 +0200</pubDate><guid>https://www.apt-upgrade.me/2026/09/30/two-minutes-forty-five-my-first-nextcloud-app-update-via-ansible-and-the-guard-rail-i-added-just-before/</guid><description>&lt;p&gt;Confession time: the production Nextcloud from the &lt;a href="https://www.apt-upgrade.me/2026/09/21/bare-metal-to-k3s-a-nextcloud-migration-battle-log/"&gt;migration battle log&lt;/a&gt; has been running on K3s for a week, the repo has had an &lt;code&gt;nextcloud-update.yml&lt;/code&gt; playbook for months, and I had never actually run it. Apps were updated the old-fashioned way, by clicking in the admin UI, or not at all. Today that changed. The run itself took &lt;strong&gt;2 minutes 45 seconds&lt;/strong&gt;. The interesting part was everything around it.&lt;/p&gt;&#10;&lt;p&gt;Same workflow as always: I decide, my AI co-admin (Claude) checks, builds and verifies. And the very first thing it found was not a bug in the update logic, but a loaded foot-gun in line three.&lt;/p&gt;</description></item><item><title>Bare Metal to K3s: A Nextcloud Migration Battle Log</title><link>https://www.apt-upgrade.me/2026/09/21/bare-metal-to-k3s-a-nextcloud-migration-battle-log/</link><pubDate>Mon, 21 Sep 2026 21:50:44 +0200</pubDate><guid>https://www.apt-upgrade.me/2026/09/21/bare-metal-to-k3s-a-nextcloud-migration-battle-log/</guid><description>&lt;p&gt;Today I moved a production &lt;a href="https://nextcloud.com/"&gt;Nextcloud&lt;/a&gt; from a cozy &lt;strong&gt;native bare-metal install&lt;/strong&gt; to a shiny &lt;strong&gt;K3s/container&lt;/strong&gt; stack. On paper: pull a backup, restore it, flip DNS, done. In practice: a series of small landmines, each invisible until you step on it. Here&amp;rsquo;s the battle log. 🪖&lt;/p&gt;&#10;&lt;h2 id="step-1-shovel-the-data-"&gt;Step 1: shovel the data 🚚&lt;/h2&gt;&#10;&lt;p&gt;The heavy lifting was an &lt;code&gt;rsync&lt;/code&gt; of ~360 GB of user data plus a ~330 MB SQL dump from the backup box into the new node. Because I pre-synced earlier in the day, the final run only shipped the delta — the whole thing came down to a fast incremental copy. Lesson old as time: &lt;em&gt;pre-seed, then the cutover sync is tiny.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>One Year Later: I Finally Open-Sourced My Homelab K3s Stack</title><link>https://www.apt-upgrade.me/2026/05/17/one-year-later-i-finally-open-sourced-my-homelab-k3s-stack/</link><pubDate>Sun, 17 May 2026 19:34:12 +0200</pubDate><guid>https://www.apt-upgrade.me/2026/05/17/one-year-later-i-finally-open-sourced-my-homelab-k3s-stack/</guid><description>&lt;p&gt;In a few of my recent posts I mentioned that I was trying to figure out how to publish my homelab automation code *without accidentally open-sourcing my entire infrastructure along with it* 😅&lt;/p&gt;&#10;&lt;p&gt;Turns out that&amp;rsquo;s a surprisingly non-trivial problem when your Ansible inventory looks like a cyberpunk treasure chest full of vaults, secrets and host-specific variables. 🔐🐉&lt;/p&gt;&#10;&lt;p&gt;After a bit of trial, error, caffeine and questionable life choices… I finally found a setup that works beautifully:&lt;/p&gt;</description></item><item><title>git log –since=”1 year ago”: One Year of apt-upgrade.me &amp;&amp; Publishing the Ansible Playbooks for Nextcloud on K3s</title><link>https://www.apt-upgrade.me/2026/05/15/git-log-since1-year-ago-one-year-of-apt-upgrade-me-publishing-the-ansible-playbooks-for-nextcloud-on-k3s/</link><pubDate>Fri, 15 May 2026 14:18:55 +0200</pubDate><guid>https://www.apt-upgrade.me/2026/05/15/git-log-since1-year-ago-one-year-of-apt-upgrade-me-publishing-the-ansible-playbooks-for-nextcloud-on-k3s/</guid><description>&lt;p&gt;There comes a point in every homelab journey where you look at your pile of&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;bash scripts&lt;/strong&gt;, hand-crafted config files, and sticky notes that say things like&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;&amp;ldquo;remember to chown /data before starting&amp;rdquo;&lt;/em&gt; — and you decide:&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;enough.&lt;/strong&gt; 😅&lt;/p&gt;&#10;&lt;p&gt;This is that post. Today I&amp;rsquo;m publishing the Ansible playbooks I&amp;rsquo;ve been using to deploy&lt;/p&gt;&#10;&lt;p&gt;and operate &lt;strong&gt;Nextcloud&lt;/strong&gt; ☁️ and &lt;strong&gt;WordPress&lt;/strong&gt; 📝 on a&lt;/p&gt;&#10;&lt;p&gt;single-node K3s cluster running on AlmaLinux 9.&lt;/p&gt;&#10;&lt;p&gt;Everything is &lt;strong&gt;infrastructure-as-code&lt;/strong&gt;, fully &lt;em&gt;idempotent&lt;/em&gt;,&lt;/p&gt;</description></item><item><title>🧠 Operating Community Nextcloud Instances with Ansible, AlmaLinux, SELinux and a Podman-based Collabora Stack</title><link>https://www.apt-upgrade.me/2026/02/26/%F0%9F%A7%A0-operating-community-nextcloud-instances-with-ansible-almalinux-selinux-and-a-podman-based-collabora-stack/</link><pubDate>Thu, 26 Feb 2026 15:27:38 +0100</pubDate><guid>https://www.apt-upgrade.me/2026/02/26/%F0%9F%A7%A0-operating-community-nextcloud-instances-with-ansible-almalinux-selinux-and-a-podman-based-collabora-stack/</guid><description>&lt;p&gt;I currently operate multiple &lt;strong&gt;Nextcloud instances&lt;/strong&gt; for two local community organizations in a purely voluntary capacity.&lt;/p&gt;&#10;&lt;p&gt;The original motivation was twofold: &lt;strong&gt;enabling digital sovereignty&lt;/strong&gt; while turning the entire setup into a personal &lt;strong&gt;learning sandbox&lt;/strong&gt;. 🚀The initial deployments were provisioned using &lt;strong&gt;Ansible&lt;/strong&gt;. However, the automation pipeline never reached full end-to-end maturity; smaller adjustments and operational tweaks were still executed manually. 🔧Historically, each Nextcloud instance had its own dedicated playbook. While functional, this architecture revealed structural weaknesses over time — particularly when &lt;strong&gt;synchronized or centralized changes&lt;/strong&gt; across both environments became necessary. ⚙️&lt;/p&gt;</description></item></channel></rss>