<?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[🚀 Pijul Nest: community package now available]]></title><description><![CDATA[<blockquote>
<p dir="auto"><strong>TL;DR:</strong> The Nest is the repository hosting platform for <a href="https://pijul.org" target="_blank" rel="noopener noreferrer nofollow ugc">Pijul</a>, a version control system built on a theory of patches rather than snapshots. Web UI, accounts, discussions, and push over SSH. Now packaged for Cloudron. Unofficial and community-maintained.</p>
</blockquote>
<p dir="auto"><img src="/assets/uploads/files/1785901469261-repo-file-browser.png" alt="repo-file-browser.png" class=" img-fluid img-markdown" /></p>
<p dir="auto"><img src="/assets/uploads/files/1785901477777-login-page.png" alt="login-page.png" class=" img-fluid img-markdown" /></p>
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/2728.png?v=c957d736241" class="not-responsive emoji emoji-android emoji--sparkles" style="height:23px;width:auto;vertical-align:middle" title="✨" alt="✨" /> Headline features</h3>
<ul>
<li>Browse repositories, file trees and changes in a clean terminal-styled web UI</li>
<li>Per-user accounts with public and private repositories</li>
<li>Discussions attached to a repository, and change review</li>
<li>Clone over HTTPS with nothing to configure; push over SSH on a port you pick at install</li>
<li>Outgoing mail through Cloudron's relay, for password recovery and notifications</li>
<li>AGPL-3.0-or-later, shipped unmodified from upstream</li>
</ul>
<h3>Why Pijul, if you have not met it</h3>
<p dir="auto">Pijul's patch model is commutative: two changes that do not touch the same lines can be applied in either order and land the same repository, so a change moves between branches without rebasing or cherry-picking. Conflicts still happen when two people genuinely edit the same thing, but they are recorded in the repository rather than resolved and forgotten, so you can revisit how one was settled.</p>
<p dir="auto">If you have ever wanted Darcs' theory of patches with performance that survives a real repository, this is that.</p>
<h3>Links</h3>
<ul>
<li><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f3e0.png?v=c957d736241" class="not-responsive emoji emoji-android emoji--house" style="height:23px;width:auto;vertical-align:middle" title="🏠" alt="🏠" /> Project homepage: <a href="https://pijul.org" target="_blank" rel="noopener noreferrer nofollow ugc">https://pijul.org</a></li>
<li><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f4e6.png?v=c957d736241" class="not-responsive emoji emoji-android emoji--package" style="height:23px;width:auto;vertical-align:middle" title="📦" alt="📦" /> Upstream source: <a href="https://nest.pijul.com/pijul/nest" target="_blank" rel="noopener noreferrer nofollow ugc">https://nest.pijul.com/pijul/nest</a></li>
<li>🧱 Cloudron package: <a href="https://github.com/OrcVole/pijul-cloudron" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/OrcVole/pijul-cloudron</a></li>
<li><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f6d2.png?v=c957d736241" class="not-responsive emoji emoji-android emoji--shopping_trolley" style="height:23px;width:auto;vertical-align:middle" title="🛒" alt="🛒" /> Store listing: <a href="https://ca.cloudron.io/app/pijul-nest" target="_blank" rel="noopener noreferrer nofollow ugc">https://ca.cloudron.io/app/pijul-nest</a></li>
</ul>
<p dir="auto">There is no hosted demo. Once installed, the Nest's own web interface is the whole thing.</p>
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f4e5.png?v=c957d736241" class="not-responsive emoji emoji-android emoji--inbox_tray" style="height:23px;width:auto;vertical-align:middle" title="📥" alt="📥" /> How to install</h3>
<p dir="auto">The easiest route is the dashboard: open the App Store, click the <strong>Add custom app</strong> dropdown at the top right, and choose <strong>Community app</strong>. Paste the versions URL into the box that appears. Apps installed this way receive automatic updates.</p>
<p dir="auto"><img src="/assets/uploads/files/1782552307466-community-package.jpeg" alt="community-package.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto"><img src="/assets/uploads/files/1782552321764-cloudronversions.jpeg" alt="cloudronversions.jpeg" class=" img-fluid img-markdown" /></p>
<pre><code>https://raw.githubusercontent.com/OrcVole/pijul-cloudron/main/CloudronVersions.json
</code></pre>
<p dir="auto">Or from the CLI:</p>
<pre><code class="language-bash">cloudron install \
  --versions-url https://raw.githubusercontent.com/OrcVole/pijul-cloudron/main/CloudronVersions.json \
  --location pijul.example.com
</code></pre>
<p dir="auto"><strong>Minimums:</strong> 2 GiB memory limit, though it idles well under a tenth of that. Addons: localstorage, postgresql, sendmail.</p>
<p dir="auto"><strong>Pick an SSH port during install.</strong> The Nest serves SSH itself rather than through the system daemon, so it cannot use port 22. Leaving the port disabled still gives you browsing and cloning over HTTPS, but you will not be able to push to the instance at all, so enable it if you want a working remote rather than a read-only mirror.</p>
<p dir="auto"><strong>First run:</strong> the Nest has its own account system and does not use Cloudron single sign-on, because upstream provides no OIDC or LDAP to map onto. Register on the instance; the first account you create is yours. Add an SSH key under account settings before pushing.</p>
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f464.png?v=c957d736241" class="not-responsive emoji emoji-android emoji--bust_in_silhouette" style="height:23px;width:auto;vertical-align:middle" title="👤" alt="👤" /> For users</h3>
<p dir="auto">Good fit if you want to try patch-based version control on your own infrastructure without building the server yourself, or if you already use Pijul and want somewhere to put repositories that is not someone else's hosted service.</p>
<p dir="auto">Probably not a fit if you need Git compatibility, a mature plugin ecosystem, or CI. Pijul is young software and the Nest is younger; this package is a way to run it, not a claim that it is a drop-in replacement for what you have.</p>
<h3>🧰 For packagers: what this one taught me</h3>
<p dir="auto"><strong>Upstream's own deployment module was worth more than its README.</strong> The Nest ships a NixOS module that generates its production config, and it stated plainly what the README did not: how many services there are, which are optional, what the real defaults are, and which user each runs as. Reading it first killed an invented etcd dependency and a wrong port map before either became work. If an upstream ships a Helm chart, a compose file, or a systemd unit, read that before the README.</p>
<p dir="auto"><strong>A migration can hardcode a role name a managed database cannot create.</strong> These migrations grant to a specific role that upstream's own deployment creates first. Cloudron's postgresql addon cannot create roles, so the first migration fails on a name, not a privilege. Rewriting the grantee to <code>CURRENT_USER</code> at build time fixes it and needs no elevated permission at all.</p>
<p dir="auto"><strong>HTTPS here is read-only, by design.</strong> I had it documented the other way round for most of a day. The write path lives entirely in the SSH server; the HTTP handler only ever reads. Worth knowing before you promise a user that HTTPS push works.</p>
<p dir="auto"><strong>Something has to make a real request.</strong> A duplicated nginx directive killed the front proxy while every process still reported healthy and the container still reported up. Nothing caught it except actually asking the port for a page.</p>
<p dir="auto"><strong>Still open:</strong> this storage engine is memory-mapped and commits by overwriting a page in place, guarded by advisory locks that a filesystem-level backup has no reason to take. Whether a backup running during a push can catch a repository mid-write is a real question I could not settle in six attempts, and I would rather say so than imply I proved it safe.</p>
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f6e0.png?v=c957d736241" class="not-responsive emoji emoji-android emoji--hammer_and_wrench" style="height:23px;width:auto;vertical-align:middle" title="🛠" alt="🛠" />️ For the Cloudron team</h3>
<p dir="auto"><strong>Maintenance burden:</strong> upstream ships no tagged releases at all, so this package pins an exact point in a moving tree and re-pinning is a deliberate decision rather than a scheduled one. Expect a slower update cadence than most community packages, with more care per update.</p>
<p dir="auto"><strong>Why it might suit the store:</strong> Forgejo, Gogs and GitLab are all here and none of them host Pijul repositories, so this covers a gap rather than duplicating a package. The App Wishlist thread for Pijul has been open since 2023 with a few thousand views.</p>
<p dir="auto"><strong>Friction worth knowing:</strong> a <code>tcpPorts</code> default value collided with an existing app on first install, and neither the error nor the CLI output named which app held the port or offered a free one. Separately, a half-failed install left a record behind that kept its port reserved, so a straight retry with the same number failed until the stray record was removed.</p>
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f4bb.png?v=c957d736241" class="not-responsive emoji emoji-android emoji--computer" style="height:23px;width:auto;vertical-align:middle" title="💻" alt="💻" /> For Pijul's developers</h3>
<p dir="auto">Two things that would help anyone packaging the Nest, offered with thanks rather than as complaints.</p>
<p dir="auto">A one-line note at the top of the checked-in <code>api/config.toml</code> saying it is a development config and pointing at the NixOS module would prevent a packager reading it as the deployment contract; the two disagree on nearly every field, including whether etcd is involved at all.</p>
<p dir="auto">And <code>pijul clone --change &lt;hash&gt;</code> currently panics against the Nest's own repository, deep in a dependency it has just fetched. <code>--state &lt;hash&gt;</code> works and produces the same tree, which is what made pinning a build possible, but <code>--change</code> is the obvious thing to reach for first. Details are in the package repo if useful.</p>
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f517.png?v=c957d736241" class="not-responsive emoji emoji-android emoji--link" style="height:23px;width:auto;vertical-align:middle" title="🔗" alt="🔗" /> Synergies</h3>
<p dir="auto"><strong>Pijul Nest + Forgejo or Gogs:</strong> these do not compete. Git repositories stay exactly where they are and Pijul repositories get a home alongside them, so you can try a genuinely different version control model without migrating anything or giving anything up.</p>
<p dir="auto"><strong>Pijul Nest + a wiki such as BookStack or Wiki.js:</strong> repository discussions are good for change-level conversation and poor for long-form design documents. Keeping the argument in a wiki and the record of what actually changed in the Nest suits both better than forcing either to do both jobs.</p>
<p dir="auto"><strong>Pijul Nest + Cloudron's own backups:</strong> the instance's SSH host key and password material are generated once and live under the app's data directory, so a restore brings back a working instance rather than one every client suddenly distrusts. That is worth more for a version control server than for most apps, because a changed host key looks exactly like an attack.</p>
<p dir="auto">Feedback, bug reports, and "works on my install" confirmations all welcome.</p>
]]></description><link>https://forum.cloudron.io/topic/15785/pijul-nest-community-package-now-available</link><generator>RSS for Node</generator><lastBuildDate>Thu, 06 Aug 2026 17:45:36 GMT</lastBuildDate><atom:link href="https://forum.cloudron.io/topic/15785.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 05 Aug 2026 03:45:04 GMT</pubDate><ttl>60</ttl></channel></rss>