Reviewed-on: https://git.plate-software.de/pplate/plate-software-web/pulls/1
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/, commit, and push to main.
The .gitea/workflows/deploy.yml workflow
rsyncs 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
rsyncwithout--delete, so other content already living on the server (downloads/,owncloud/,.well-known/, ACME challenges, oldindex.html.bak.*) is never removed. If you ever want exact mirroring, add--delete— but only after confirmingsite/is the complete intended web root. - Subdomains are separate.
cannamanage.,inspectflow.andgit.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
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.