flexhub/README.md
s8n db1d54ada1 docs: real README + deploy notes for FlexHub branding
README documents what FlexHub is (rebrand of git.s8n.ru), the
git.s8n.ru/flexhub.s8n.ru hostname split, and the layout of the
Forgejo custom/ tree. docs/DEPLOY.md covers updating the homepage
template, theme CSS, app.ini, image assets, and the Traefik file
provider router on nullstone.

Repo previously contained only a one-line README + the home.tmpl
override; this fills in the operator-facing docs so flexhub becomes
the canonical project page (referenced as a mirror by ARRFLIX).
2026-05-10 06:18:06 +01:00

3.8 KiB

FlexHub

Where I flex my projects, code, and stuff. A place to flex.

FlexHub is the brand wrapped around the operator's self-hosted Forgejo instance. Same git host, same backing store — different paint job.

Both hostnames hit the same Forgejo container on nullstone. Repos, PATs, SSH keys, issues — all identical. Login sessions are independent (separate cookies per hostname).

This repository holds the customisations that turn vanilla Forgejo into FlexHub: the homepage template, the theme CSS, the logo set, and the deploy notes that wire it all together.


What's in this repo

Path Purpose
templates/home.tmpl FlexHub homepage. Wordmark + tagline + 4-card "agent grid" feature list.
public/assets/css/theme-flexhub.css (planned) The orange/black/white theme. DEFAULT_THEME = flexhub in app.ini.
public/assets/img/ (planned) Logo + wordmark + favicons (logo.svg, flexhub-wordmark.png, etc).
docs/DEPLOY.md How to roll a change out to the live nullstone Forgejo container.
LICENSE MIT.

The repo is currently template-only; assets get checked in as the operator pulls them out of the live Forgejo custom/ tree. The authoritative copies live on nullstone until then.


How it's wired up

Forgejo loads any file under custom/ to override the equivalent built-in. On nullstone that directory is bind-mounted from the host:

/home/docker/forgejo/data/gitea/   → /var/lib/gitea/        (in-container)
                  └─ custom/
                     ├─ conf/app.ini
                     ├─ templates/home.tmpl       ← from this repo
                     ├─ public/assets/css/...     ← from this repo
                     └─ public/assets/img/...     ← from this repo

The Forgejo container itself is described by the compose file at /opt/docker/forgejo/docker-compose.yml. Container data + customisations live under /home/docker/forgejo/ because the root volume on nullstone is small.

Key settings in app.ini that drive the rebrand:

APP_NAME = FlexHub
DEFAULT_THEME = flexhub
THEMES = forgejo-auto,forgejo-light,forgejo-dark,flexhub,veilor

The two hostnames are split at the Traefik layer, not Forgejo:

  • git.s8n.ru — docker-provider router, gated by no-guest@file ACL.
  • flexhub.s8n.ru — file-provider router, public, no no-guest, rate-limited login. Service flexhub-svc points at http://forgejo:3000 directly (avoids the file→docker provider race; see DEPLOY.md).

Contributing

Don't. This is the operator's personal git host — accounts are invite-only, registration is disabled. If you've found a real bug in Forgejo itself, file it upstream at https://codeberg.org/forgejo/forgejo. If you've found a typo on the homepage, open an issue here and the operator will get to it.

Public read access is intentional: browse repos, clone what's MIT or AGPL, mirror what you like. That's the "flex" part.


See also

  • Deploy + update workflow: docs/DEPLOY.md
  • Initial Forgejo bring-up runbook (operator-internal): _github/infra/forgejo/DEPLOY.md in the ai-lab repo.
  • ARRFLIX project references flexhub.s8n.ru as a mirror — that's this instance.