Initial web presence: bilingual landing page + push-to-deploy pipeline
Deploy to plate-software.de / deploy (push) Failing after 19s
Deploy to plate-software.de / deploy (push) Failing after 19s
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# 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`.
|
||||
Reference in New Issue
Block a user