Forge Self-Hosting

Forge Self-Hosting

Forge Self-Hosting


This proposal facilitates self-hosting software forges.

It is packaging work, which in itself is mundane, but it benefits in three directions at the same time. First, it directly helps a person or small group to reclaim self-agency by hosting their own forge. Second, it contributes to the further development of self-hosting systems, by furthering the usefulness of two existing self-hosting systems, encouraging the communities behind them. Third, it facilitates work towards forge federation, by making it easier for both developers and early adopters to deploy multiple forge instances, including both established (Forgejo) and new experimental forges (Vervis+Anvil).

We are talking about web service deployment packaging (like Docker, Yunohost) rather than OS-level packaging (like Deb, RPM).

Why spend effort on this kind of packaging?

Developers of a piece of software know how to run it locally for development and testing.

Developers integrating multiple components need a way to deploy them all, easily, repeatably, and with the ability to switch between variants of each (such as development and production versions).

Hosting frameworks make this job a whole lot easier.

Why target multiple packaging formats together?

Spread. There is a need to develop hosting systems further, across the FOSS scale, from those supporting the grass-roots FOSS developers, up to those deployed by service providers.

Efficiency. Being familiar with a particular hosting framework makes it easier to package more apps for it. Being familiar with a particular app makes it easier to package it for more hosting frameworks. Tackling the basic hosting needs in a consistent and efficient way then allows to devote effort beyond the basics, to capabilities like backup/restore, DNS/well-known configuration, single-sign-on, integration with a landing page.

Target Components, Hosting, Capabilities

Hosting frameworks targeted:

  • Yunohost (based on Debian) -- popular grass-roots self-hosting system-in-a-box
  • MASH (based on Ansible+Docker) -- sibling of professional quality Matrix-docker-ansible-deploy
  • SHB? (based on Nix)
  • K8s?
  • more: Fediversity? (~Nix/K8s?), CoopCloud (~container/swarm)...

ForgeFed components targeted, main:

  • Forgejo (already in YNH, MASH)
  • Vervis
  • Anvil

Additional components useful in a real forge deployment:

Implementation Status

. YNH MASH SHB K8S
Vervis no no no ?
Anvil no no no ?
Forgejo yes S,A,B,D,L,M yes C... yes S,A,B... ?
Forgejo-Runner no yes C... yes S,A,B... yes
Woodpecker-CI yes B,D,L,M yes C... no ?
Weblate yes B,D,L,M no no ?

Integration features:

  • S. Single sign-on (SSO)
  • A. Accounts managed externally (LDAP)
  • B. Backup/restore
  • C. Containerised
  • D. DNS/well-known configuration
  • L. Launcher/landing page integration
  • M. Multiple installs (on different domains/paths)

About The Components

Vervis

Anvil

Forgejo

Forgejo Runner

Forgejo Actions provides CI services, running CI jobs on (remote) agents such as Forgejo Runner or alternatives.

Rationale for inclusion: commonly used with Forgejo.

Woodpecker CI

Woodpecker CI consists of server and runner (agent), and performs CI services for a forge. It is an alternative to using Forgejo Actions.

Rationale for inclusion: Codeberg offers an integrated Woodpecker CI service.

Woodpecker's Forgejo integration documentation

How Libre? Apache-2/CC-BY-SA, Github, Mastodon, Matrix, Xtwitter

Weblate

Weblate provides translation and localisation services. As copy-left libre software it complements a libre forge.

Rationale for inclusion: Codeberg offers an integrated Weblate service.

How Libre? GPL, Github, Mastodon, Xtw/FB/LI...


#Forgejo #forgeFed #forgeFederation #selfHosted #NGI