stack.basicstack.de/apps
CTO (Paperclip Agent) ac9f36b1e7 feat(velero): monthly restore-drill CronJob for openwebui (DEV-575)
- CronJob at 0 4 1 * * restores the latest openwebui-manifests backup into
  a transient restore-test-<ts> namespace, diffs core resource-kind counts
  against the live openwebui namespace, and deletes the target namespace.
- ServiceAccount + ClusterRole scoped to velero.io + namespace + configmap
  ops. Script enforces the 'restore-test-' name prefix before deleting a
  namespace. Cluster-wide 'view' bound for the diff.
- Failure surfaces via kube_job_status_failed (DEV-574 alert stack) and via
  ConfigMap velero-restore-drill-last-result written on every run.
- Optional Paperclip webhook Secret is sealed but unreachable from Hetzner
  right now (home Paperclip is LAN-only); wired as optional secretKeyRef so
  the drill runs regardless. Connectivity is a follow-up.
- Argo Application velero-restore-drill points at velero/restore-drill/.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-09-12 18:03:37 +00:00
..
argocd fix(argocd): label argocd-oidc-secret so Argo CD reads its keys (DEV-523) 2026-08-23 10:37:01 +00:00
basicstack-org
bookstack fix(bookstack): use Recreate rollout strategy (DEV-528) 2026-08-23 12:01:35 +00:00
directus chore(directus): bump 12.1.1 -> 12.3.0 (DEV-537) 2026-08-23 15:27:14 +00:00
dozzle chore(dozzle): bump v10.6.10 -> v10.7.3 (DEV-534) 2026-08-23 15:11:47 +00:00
forgejo chore(restic): bump image 0.17.3 -> 0.19.1 (DEV-541) 2026-08-23 15:52:15 +00:00
forgejo-runner fix(forgejo-runner): pin to nodes with docker installed (DEV-498) 2026-08-16 20:15:16 +00:00
grist apps/grist/grist-deployment.yaml aktualisiert 2026-08-30 12:03:03 +00:00
harbor feat(velero): schedules + PVC exclude annotations (DEV-573) 2026-09-12 17:35:49 +00:00
headlamp chore(headlamp): bump v0.43.0 -> v0.45.0 (DEV-535) 2026-08-23 15:14:38 +00:00
kaneo feat(kaneo): wire SMTP submission via kaneo@basicstack.de (DEV-562) 2026-09-05 10:01:52 +00:00
monitoring chore(restic): bump image 0.17.3 -> 0.19.1 (DEV-541) 2026-08-23 15:52:15 +00:00
observability/patches feat(observability): wire node-exporter textfile collector for backup metrics (DEV-494) 2026-08-16 16:21:56 +00:00
opencloud feat(velero): schedules + PVC exclude annotations (DEV-573) 2026-09-12 17:35:49 +00:00
openwebui feat(openwebui): deploy Open WebUI v0.11.3 with Pocket ID OIDC (DEV-567) 2026-09-12 14:06:56 +00:00
outline docs(outline): note PKCE must be disabled on the Pocket ID client 2026-09-05 09:57:39 +00:00
pangolin chore(pangolin): bump postgres 17.5 -> 17.11 (DEV-533) 2026-08-23 15:07:38 +00:00
paperclip chore(paperclip): bump busybox 1.36 -> 1.38.0 (DEV-531) 2026-08-23 14:59:34 +00:00
passbolt Fix Passbolt ArgoCD degraded status 2026-07-26 09:17:04 +00:00
pocket-id chore(pocket-id): bump v2.11.0 -> v2.14.0 (DEV-536) 2026-08-23 15:18:23 +00:00
stalwart chore(stalwart): bump v0.16.11 -> v0.16.18 (DEV-542) 2026-08-23 16:46:31 +00:00
velero velero: reseal S3 credential with new Hetzner project key 2026-09-12 17:25:15 +00:00
vikunja fix(vikunja): set pod FQDN so SMTP EHLO passes Stalwart validation (DEV-563) 2026-09-05 10:05:26 +00:00
app-argocd.yaml feat(argocd): switch to community Helm chart (DEV-519) 2026-08-23 08:32:23 +00:00
app-basicstack-org.yaml
app-bookstack.yaml
app-directus.yaml
app-dozzle.yaml
app-forgejo-runner.yaml
app-forgejo.yaml
app-grist.yaml chore(grist): enable ArgoCD auto-sync + selfHeal (DEV-556) 2026-08-30 11:07:29 +00:00
app-harbor.yaml fix(harbor): enable automated selfHeal on harbor Application 2026-08-08 15:52:55 +00:00
app-headlamp.yaml
app-kaneo.yaml feat(kaneo): deploy Kaneo project management (DEV-561) 2026-09-05 09:38:04 +00:00
app-opencloud.yaml
app-openwebui.yaml feat(openwebui): deploy Open WebUI v0.11.3 with Pocket ID OIDC (DEV-567) 2026-09-12 14:06:56 +00:00
app-outline.yaml feat(outline): deploy Outline knowledge base at outline.basicstack.de (DEV-559) 2026-09-05 09:42:21 +00:00
app-pangolin.yaml Add Pangolin Kubernetes manifests 2026-07-26 12:09:07 +00:00
app-paperclip.yaml
app-passbolt.yaml
app-pocket-id.yaml
app-stalwart.yaml
app-velero-monitoring.yaml feat(velero): ServiceMonitor + PrometheusRule for backup alerts (DEV-574) 2026-09-12 17:58:45 +00:00
app-velero-restore-drill.yaml feat(velero): monthly restore-drill CronJob for openwebui (DEV-575) 2026-09-12 18:03:37 +00:00
app-velero-schedules.yaml feat(velero): schedules + PVC exclude annotations (DEV-573) 2026-09-12 17:35:49 +00:00
app-velero.yaml feat(velero): Argo app + Helm values for Kopia/Hetzner S3 backups (DEV-572) 2026-09-12 17:05:42 +00:00
app-vikunja.yaml feat(vikunja): deploy Vikunja 2.6.0 with Pocket ID OIDC (DEV-560) 2026-09-05 09:38:25 +00:00
ARGOCD-MIGRATION.md
README.md

Applications

This directory contains deployment configurations for all applications running on the basicstack.de cluster.

ArgoCD Application Management

Each application has two types of files:

  1. app-<name>.yaml: ArgoCD Application manifest that tells ArgoCD to sync the app subdirectory
  2. <name>/: Application-specific Kubernetes manifests and configuration

The app-*.yaml files are synced by ArgoCD and create/manage the corresponding Application resources. Each application's manifests in its subdirectory are then synced by its Application resource.

Structure

Each application should have its own subdirectory containing:

  • Kubernetes manifests: Deployment, StatefulSet, Service, ConfigMap, Secret definitions
  • Helm values: If using Helm charts, include values.yaml files
  • Configuration files: Application-specific configs (TOML, JSON, YAML)
  • Documentation: README or guide specific to the application deployment
  • Patches: Any kubectl patches or modifications needed

Example: Stalwart

The stalwart/ directory serves as a reference implementation, containing:

  • Multiple deployment variants (basic, with OIDC, etc.)
  • Helm values files
  • Monitoring dashboard configurations
  • Backup/restore procedures
  • Operational documentation

Adding a New Application

  1. Create a new directory: apps/<application-name>/
  2. Add your Kubernetes manifests
  3. Include a README.md explaining:
    • What the application does
    • How to deploy it
    • Configuration options
    • Troubleshooting steps
  4. Test the deployment in a dev environment
  5. Commit with a descriptive message

Naming Conventions

  • Directory names: lowercase, hyphen-separated (e.g., my-app)
  • Manifest files: descriptive names indicating resource type (e.g., deployment.yaml, service.yaml)
  • Use consistent naming across applications