summaryrefslogtreecommitdiff
path: root/forgejno.html
diff options
context:
space:
mode:
Diffstat (limited to 'forgejno.html')
-rw-r--r--forgejno.html34
1 files changed, 20 insertions, 14 deletions
diff --git a/forgejno.html b/forgejno.html
index a8a970c..e36b358 100644
--- a/forgejno.html
+++ b/forgejno.html
@@ -2,23 +2,27 @@
<html>
<head>
<title>You don't need Forgejo</title>
+ <meta property="article:published_time" content="2026-05-03">
<link rel="stylesheet" href="prose.css">
<script src="article.js"></script>
</head>
<body>
- <div class="content">
- <h1 id="title">You don't need Forgejo</h1>
- <p class="comment">published May 3, 2026</p>
- <hr>
+ <article>
+ <header></header>
- <p><a href="https://mitchellh.com/writing/ghostty-leaving-github">People</a>
- <a href="https://vinyl-cache.org/organization/moving.html">ditching</a>
- GitHub after <a href="https://github.blog/news-insights/company-news/an-update-on-github-availability">recent issues</a>
- are looking to self-hosting Forgejo as an alternative.</p>
+ <p>
+ <a href="https://mitchellh.com/writing/ghostty-leaving-github">People</a>
+ <a href="https://vinyl-cache.org/organization/moving.html">ditching</a>
+ GitHub after
+ <a href="https://github.blog/news-insights/company-news/an-update-on-github-availability">recent issues</a>
+ are looking to self-hosting Forgejo as an alternative.
+ </p>
<p>Despite some (poorly disclosed) <a href="https://dustri.org/b/carrot-disclosure-forgejo.html">security issues</a>, I think there's a more fundemental reason why you shouldn't use Forgejo.</p>
<p>If you're just a single person trying to publish your independent coding projects, why do you need: CI, Issue Tracking, Pull Requests, Multi-user account management, etc?</p>
<p>just use <a href="https://git.zx2c4.com/cgit">cgit</a>.</p>
+ <div id="toc"></div>
+
<h2 id="forge">How do git forges (like GitHub) even work?</h2>
<p>A git forge is basically just a directory of git repositories, served over http or ssh, with a fancy web frontend.</p>
<p>On the server, since the repos don't need to store mutable state (local commits, staged files, etc) they're stored in a special format that's basically just the <code>.git</code>
@@ -32,10 +36,10 @@
<h2 id="guide">cgit Setup Guide</h2>
<p>The cgit setup process is fairly involved, but if you were planning on self-hosting Forgejo, then you can handle it.</p>
- <p class="comment">I'll be using Caddy as the webserver for this setup, but I'll link tutorials for NGINX and Apache if prefer xml configuration files and manual https certificates ;&rpar;</p>
+ <p class="comment">I'll be using Caddy as the webserver for this setup, but this could be modified for NGINX and Apache if you prefer xml configuration files and manual https certificates ;&rpar;</p>
<p>To keep everything organized, I'll run cgit under a user called "git". Our git repos will be stored in this directory.</p>
- <code>$ useradd -r -d /var/lib/cgit -s /usr/bin/git-shell git</code>
+ <pre><code>$ useradd -r -d /var/lib/cgit -s /usr/bin/git-shell git</code></pre>
<h3 id="cfg-fcgiwrap">fcgiwrap</h3>
<p>cgit is served as a <a href="https://en.wikipedia.org/wiki/Common_Gateway_Interface">cgi application</a>.</p>
@@ -45,7 +49,7 @@
<ol>
<li><p>Install fcgiwrap with a package manager. This will create two systemd files: fcgiwrap.service and fcgiwrap.socket.</p></li>
<li><p>Open fcgiwrap.service in a text editor (<code>$ systemctl edit fcgiwrap.service</code>) and set the User and Group to be our "git" user.</p></li>
- <li><p>Open fcgiwrap.socket (<code>$ systemctl edit fcgiwrap.socket</code>) and add "SocketUser=caddy" and "SocketGroup=caddy" under the [Socket] section. (replace with the correct Caddy user for your system)</p></li>
+ <li><p>Open fcgiwrap.socket (<code>$ systemctl edit fcgiwrap.socket</code>) and add "SocketUser=caddy" and "SocketGroup=caddy" under the <code>[Socket]</code> section. (replace with the correct Caddy user for your system)</p></li>
</ol>
<h3 id="cfg-cgit">cgit</h3>
@@ -108,8 +112,10 @@ snapshots=tar.gz zip</code></pre>
<p>In return, you get a tiny stack, fewer moving parts, lower attack surface, lower resource use, and a setup you can understand.</p>
<p>For my personal projects, that trade is acceptable.</p>
- <hr>
- <p class="comment">Discuss on <a href="https://bsky.app/profile/cwilliams1221.bsky.social/post/3mkyog3enls2w">Bluesky</a></p>
- </div>
+ <footer>
+ <hr>
+ <p class="comment">Discuss on <a href="https://bsky.app/profile/cwilliams1221.bsky.social/post/3mkyog3enls2w">Bluesky</a></p>
+ </footer>
+ </article>
</body>
</html>