2026-04-14 10:27:51 +02:00
|
|
|
# website/ — furtka.org
|
|
|
|
|
|
|
|
|
|
Hugo source for [furtka.org](https://furtka.org). Intentionally minimal while
|
|
|
|
|
the project is pre-alpha: a single idea page in English and German, nothing more.
|
|
|
|
|
More pages will come back when there's something real to show.
|
|
|
|
|
|
|
|
|
|
## Local build
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
cd website
|
|
|
|
|
hugo server # http://localhost:1313
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Requires Hugo **extended** ≥ 0.140.
|
|
|
|
|
|
|
|
|
|
## Deploy
|
|
|
|
|
|
|
|
|
|
Hosted on `forge-runner-01` (Proxmox VM, Ubuntu 24.04). Hugo runs on the VM;
|
|
|
|
|
nginx serves the built output from `/var/www/furtka.org`. TLS is terminated by
|
|
|
|
|
an upstream openresty reverse proxy — the VM itself only speaks plain HTTP.
|
|
|
|
|
|
docs: add apps/ authoring guide + realign READMEs with 26.4-alpha
Closes #9. New apps/README.md walks through the four-file contract
(manifest.json, docker-compose.yaml, .env.example, icon.svg) with
the rules enforced by furtka/manifest.py and the SVG sanitiser, using
apps/fileshare as the reference.
Root README: release list now covers 26.1/26.3/26.4 (26.2 stalled on
the jq apt hang). Local HTTPS Phase 1 and the post-build smoke VM on
pollux both flip to [x]; the old proksi.local HTTPS TODO becomes a
Phase 2 entry (dedicated local CA + HTTPS on the live-installer wizard).
iso/README: mDNS is wired — live ISO advertises proksi.local, installed
box defaults to furtka.local (the form's default hostname, not proksi).
HTTPS section notes Caddy tls internal on :443 shipped in 26.4 while
the wizard itself is still HTTP. Overlay table picks up etc/hostname,
etc/issue, furtka-update-issue, and furtka-issue.service.
website/README: auto-deploy via .forgejo/workflows/deploy-site.yml is
the default path now; website/deploy.sh stays as the SSH-hop fallback
for off-CI pushes, and deploy-ci.sh is called out in the structure map.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 11:01:44 +02:00
|
|
|
### Auto-deploy on push-to-main (default)
|
2026-04-14 10:27:51 +02:00
|
|
|
|
docs: add apps/ authoring guide + realign READMEs with 26.4-alpha
Closes #9. New apps/README.md walks through the four-file contract
(manifest.json, docker-compose.yaml, .env.example, icon.svg) with
the rules enforced by furtka/manifest.py and the SVG sanitiser, using
apps/fileshare as the reference.
Root README: release list now covers 26.1/26.3/26.4 (26.2 stalled on
the jq apt hang). Local HTTPS Phase 1 and the post-build smoke VM on
pollux both flip to [x]; the old proksi.local HTTPS TODO becomes a
Phase 2 entry (dedicated local CA + HTTPS on the live-installer wizard).
iso/README: mDNS is wired — live ISO advertises proksi.local, installed
box defaults to furtka.local (the form's default hostname, not proksi).
HTTPS section notes Caddy tls internal on :443 shipped in 26.4 while
the wizard itself is still HTTP. Overlay table picks up etc/hostname,
etc/issue, furtka-update-issue, and furtka-issue.service.
website/README: auto-deploy via .forgejo/workflows/deploy-site.yml is
the default path now; website/deploy.sh stays as the SSH-hop fallback
for off-CI pushes, and deploy-ci.sh is called out in the structure map.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 11:01:44 +02:00
|
|
|
`.forgejo/workflows/deploy-site.yml` fires on every push to `main` that touches
|
|
|
|
|
`website/**`. The self-hosted runner *is* forge-runner-01, so the whole deploy
|
|
|
|
|
collapses to a local rsync into `/srv/furtka-site/` + `hugo --minify` into
|
|
|
|
|
`/var/www/furtka.org/`. No SSH hop, no secrets. Runs in under a minute.
|
2026-04-14 10:27:51 +02:00
|
|
|
|
docs: add apps/ authoring guide + realign READMEs with 26.4-alpha
Closes #9. New apps/README.md walks through the four-file contract
(manifest.json, docker-compose.yaml, .env.example, icon.svg) with
the rules enforced by furtka/manifest.py and the SVG sanitiser, using
apps/fileshare as the reference.
Root README: release list now covers 26.1/26.3/26.4 (26.2 stalled on
the jq apt hang). Local HTTPS Phase 1 and the post-build smoke VM on
pollux both flip to [x]; the old proksi.local HTTPS TODO becomes a
Phase 2 entry (dedicated local CA + HTTPS on the live-installer wizard).
iso/README: mDNS is wired — live ISO advertises proksi.local, installed
box defaults to furtka.local (the form's default hostname, not proksi).
HTTPS section notes Caddy tls internal on :443 shipped in 26.4 while
the wizard itself is still HTTP. Overlay table picks up etc/hostname,
etc/issue, furtka-update-issue, and furtka-issue.service.
website/README: auto-deploy via .forgejo/workflows/deploy-site.yml is
the default path now; website/deploy.sh stays as the SSH-hop fallback
for off-CI pushes, and deploy-ci.sh is called out in the structure map.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 11:01:44 +02:00
|
|
|
The in-CI script is `website/deploy-ci.sh`. Don't invoke it from your dev box —
|
|
|
|
|
it assumes it's already on the target host.
|
|
|
|
|
|
|
|
|
|
### Manual deploy (fallback)
|
|
|
|
|
|
|
|
|
|
For out-of-band pushes (feature branch, CI outage), deploy from your dev
|
|
|
|
|
machine:
|
2026-04-14 10:27:51 +02:00
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
./website/deploy.sh
|
|
|
|
|
```
|
|
|
|
|
|
docs: add apps/ authoring guide + realign READMEs with 26.4-alpha
Closes #9. New apps/README.md walks through the four-file contract
(manifest.json, docker-compose.yaml, .env.example, icon.svg) with
the rules enforced by furtka/manifest.py and the SVG sanitiser, using
apps/fileshare as the reference.
Root README: release list now covers 26.1/26.3/26.4 (26.2 stalled on
the jq apt hang). Local HTTPS Phase 1 and the post-build smoke VM on
pollux both flip to [x]; the old proksi.local HTTPS TODO becomes a
Phase 2 entry (dedicated local CA + HTTPS on the live-installer wizard).
iso/README: mDNS is wired — live ISO advertises proksi.local, installed
box defaults to furtka.local (the form's default hostname, not proksi).
HTTPS section notes Caddy tls internal on :443 shipped in 26.4 while
the wizard itself is still HTTP. Overlay table picks up etc/hostname,
etc/issue, furtka-update-issue, and furtka-issue.service.
website/README: auto-deploy via .forgejo/workflows/deploy-site.yml is
the default path now; website/deploy.sh stays as the SSH-hop fallback
for off-CI pushes, and deploy-ci.sh is called out in the structure map.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 11:01:44 +02:00
|
|
|
This rsyncs `website/` to `/srv/furtka-site/` on the VM over SSH and runs
|
|
|
|
|
`hugo --minify` into `/var/www/furtka.org`. Same end state as the CI path,
|
|
|
|
|
just with an SSH hop.
|
|
|
|
|
|
|
|
|
|
### First-time VM setup
|
|
|
|
|
|
|
|
|
|
Only needed once, when provisioning a fresh forge-runner VM:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
ssh forge-runner
|
|
|
|
|
sudo /srv/furtka-site/ops/nginx/setup-vm.sh # or copy the script over first
|
|
|
|
|
```
|
2026-04-14 10:27:51 +02:00
|
|
|
|
|
|
|
|
## Structure
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
hugo.toml Hugo config (multilingual: en default, de)
|
|
|
|
|
content/ Markdown pages
|
|
|
|
|
_index.md Home (EN)
|
|
|
|
|
_index.de.md Home (DE)
|
|
|
|
|
layouts/ Custom inline theme — no external theme or framework
|
|
|
|
|
_default/ baseof, single, list
|
|
|
|
|
partials/ head, header, footer, gate SVG, lang switcher
|
|
|
|
|
index.html Home-only layout with editorial hero
|
|
|
|
|
assets/css/main.css Stylesheet (fingerprinted + minified on build)
|
|
|
|
|
static/favicon.svg Gate mark in crimson
|
docs: add apps/ authoring guide + realign READMEs with 26.4-alpha
Closes #9. New apps/README.md walks through the four-file contract
(manifest.json, docker-compose.yaml, .env.example, icon.svg) with
the rules enforced by furtka/manifest.py and the SVG sanitiser, using
apps/fileshare as the reference.
Root README: release list now covers 26.1/26.3/26.4 (26.2 stalled on
the jq apt hang). Local HTTPS Phase 1 and the post-build smoke VM on
pollux both flip to [x]; the old proksi.local HTTPS TODO becomes a
Phase 2 entry (dedicated local CA + HTTPS on the live-installer wizard).
iso/README: mDNS is wired — live ISO advertises proksi.local, installed
box defaults to furtka.local (the form's default hostname, not proksi).
HTTPS section notes Caddy tls internal on :443 shipped in 26.4 while
the wizard itself is still HTTP. Overlay table picks up etc/hostname,
etc/issue, furtka-update-issue, and furtka-issue.service.
website/README: auto-deploy via .forgejo/workflows/deploy-site.yml is
the default path now; website/deploy.sh stays as the SSH-hop fallback
for off-CI pushes, and deploy-ci.sh is called out in the structure map.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 11:01:44 +02:00
|
|
|
deploy.sh Manual rsync + remote Hugo build (over SSH, for off-CI pushes)
|
|
|
|
|
deploy-ci.sh Local rsync + Hugo build — runs on forge-runner-01 from CI
|
2026-04-14 10:27:51 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Design
|
|
|
|
|
|
|
|
|
|
Modern-minimal on paper-white light / near-black dark. System-UI sans
|
|
|
|
|
(no webfonts — zero external requests, matches the self-hosting ethos).
|
|
|
|
|
Deep crimson accent, `prefers-color-scheme` switch.
|
|
|
|
|
|
|
|
|
|
The gate SVG is the one brand mark — a small wicket-gate glyph repeated in the
|
|
|
|
|
header, footer, and favicon.
|