diff options
Diffstat (limited to 'forgejno.html')
| -rw-r--r-- | forgejno.html | 34 |
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 ;)</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 ;)</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> |
