# plate-software.de — Web Presence Static website for **https://plate-software.de** (the Apache landing page + any additional static pages/assets). This repo is the single source of truth for the public web presence. ## How deployment works (push-to-deploy, zero SSH) ``` edit site/ → git push origin main │ ▼ Gitea Actions (self-hosted runner on TrueNAS) │ rsync over SSH (dedicated deploy key) ▼ IONOS Apache /var/www/html/ (82.165.206.45) │ ▼ https://plate-software.de (TLS via Let's Encrypt) ``` Just edit files under [`site/`](site/), commit, and push to `main`. The [`.gitea/workflows/deploy.yml`](.gitea/workflows/deploy.yml) workflow `rsync`s the contents of `site/` to the Apache DocumentRoot. **No SSH access to the server is needed** — the runner holds a dedicated deploy key. `workflow_dispatch` is also enabled, so you can re-deploy manually from the Gitea Actions tab without a new commit. ## Repo layout ``` site/ ← everything in here is published to the web root index.html ← the bilingual (DE/EN) landing page .gitea/workflows/ deploy.yml ← the push-to-deploy pipeline ``` Add more pages by dropping files into `site/` (e.g. `site/impressum.html` → `https://plate-software.de/impressum.html`). Subfolders work too. ## Safety notes - **Non-destructive sync.** The workflow uses `rsync` **without** `--delete`, so other content already living on the server (`downloads/`, `owncloud/`, `.well-known/`, ACME challenges, old `index.html.bak.*`) is never removed. If you ever want exact mirroring, add `--delete` — but only after confirming `site/` is the complete intended web root. - **Subdomains are separate.** `cannamanage.`, `inspectflow.` and `git.` are their own apps/proxies (frp → TrueNAS). This repo only owns the root domain's static files. ## Required secret `Settings → Actions → Secrets`: | Secret | Value | |---|---| | `IONOS_DEPLOY_KEY` | private ed25519 key whose public half is in `root@82.165.206.45:~/.ssh/authorized_keys` (comment `gitea-actions-plate-software-web`) | ## Local preview ```bash cd site && python3 -m http.server 8000 # http://localhost:8000 ``` The language toggle defaults to German; English shows automatically for `en-*` browsers, and the choice is remembered in `localStorage`.