Pylone

pylone

Lean, self-hosted forge for small organizations.

$ pylone deploy
--- Deployment Started (1 box(es), 1 forge(s)) ---
--- Reading SMTP passwords back from their forges ---
- Trying 1.2.3.4:49152...
--- Deploying to box hyperion (1.2.3.4) ---
- forge acme: https://git.acme.org, https://ci.acme.org
==> Deploying Base Layer to hyperion
--- Deploying Forge Layer to hyperion (1 forge(s)) ---
--- Forge: acme (git.acme.org) ---
==> Deploying Forgejo (acme) to git.acme.org
--- Syncing Users on git.acme.org ---
- Creating user 'janedoe' (jane@acme.org)...
All layers deployed successfully!

One organisation per forge

An organisation gets its own domain, its own Forgejo + Woodpecker stack, its own mail address and its own secrets — never parked on someone else's forge, never shared with another organisation.

Caddy Reverse Proxy

One Caddy per box: zero-config Let's Encrypt certificates — each domain registered as the address of its own forge — reverse proxying and HTTP/3 routing.

Forgejo Git

Lean, self-hosted git hosting and collaboration platform for your organization.

Woodpecker CI

Lightweight, container-based CI/CD automation that stays close to your code.

Backup & Migration

pylone save and pylone load move your whole forge — config included — to a new machine.

Security Hardening

Fail2ban, firewall rules, secrets that live on the forge and never in the config file, and auto-updates applied by default.

Install

git clone https://git.pylone.dev/pylone/pylone.git cd pylone make install

Start

pylone add box --name hyperion --ip 1.2.3.4 # the first box creates ~/.pylone/pylone.toml pylone add org --box hyperion # an organisation, and the forge that hosts it pylone add repo --org acme --dir '~/organisations/acme/*' # its checkouts, pushed on every deploy pylone add user --org acme --name "John Doe" --mail john@acme.org pylone add runner --box hyperion # optional: extra CI agents for every forge pylone deploy # install the stacks, create the users, push the repositories