stack.basicstack.de/apps
CTO Agent b06c994c9d Fix Stalwart pod crash-loop by changing health probes to exec
The pod was crash-looping because Stalwart's security configuration
blocks the kubelet's IP (10.244.4.1) from accessing the HTTP health
endpoints. The kubelet's health checks were failing, causing the
startup probe to fail after 6 attempts, leading to pod restarts.

Changed all three health probes (startup, liveness, readiness) from
httpGet to exec with curl localhost. This bypasses the IP blocking
since the health check runs from inside the container using localhost,
which is not subject to Stalwart's external IP blocking rules.

This fix is non-destructive to Stalwart's configuration and state.
The pod will restart once with the new probe configuration, but no
data or configuration will be lost.

Root cause: Stalwart logs showed "Blocked IP address (security.ip-blocked)
listenerId=http, remoteIp=10.244.4.1" followed by "Shutting down Stalwart
Server (server.shutdown) causedBy=SIGTERM" in a repeating pattern.

Fixes: DEV-420

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-01 08:14:41 +00:00
..
argocd Add managed label to argocd sealed secrets 2026-07-12 16:32:34 +00:00
basicstack-org apps/basicstack-org/deployment.yaml aktualisiert 2026-07-18 17:42:30 +00:00
bookstack Document mysql-data-encrypted PVC as pre-existing, unmanaged resource 2026-07-12 17:13:26 +00:00
directus Add IgnoreExtraneous annotation to Directus sealed secrets 2026-07-25 14:57:27 +00:00
dozzle Add metrics.k8s.io permissions to Dozzle ClusterRole 2026-07-25 11:34:26 +00:00
forgejo Consolidate Forgejo backup into forgejo namespace 2026-07-26 09:35:31 +00:00
forgejo-runner fix: revert to Deployment with host Docker socket (dind approach abandoned) 2026-07-18 16:47:05 +00:00
harbor Fix Harbor ArgoCD degraded status by ignoring unsealed secret 2026-07-25 15:05:37 +00:00
headlamp apps/headlamp/deployment.yaml aktualisiert 2026-07-18 08:45:24 +00:00
opencloud apps/opencloud/openldap-deployment.yaml aktualisiert 2026-07-12 16:02:10 +00:00
pangolin Fix Pangolin health probes: route to Web UI port 3002 instead of Internal API port 3001 2026-07-26 17:16:03 +00:00
paperclip Fix Paperclip storage and permissions 2026-07-26 11:10:21 +00:00
passbolt Fix Passbolt ArgoCD degraded status 2026-07-26 09:17:04 +00:00
platform-prod Convert all secrets to SealedSecrets for enhanced security 2026-07-01 18:38:27 +00:00
pocket-id apps/pocket-id/README.md aktualisiert 2026-07-18 13:12:34 +00:00
stalwart Fix Stalwart pod crash-loop by changing health probes to exec 2026-08-01 08:14:41 +00:00
app-argocd.yaml ArgoCD: Replace complex stack sync with individual application syncs 2026-07-12 10:44:41 +00:00
app-basicstack-org.yaml feat: migrate basicstack.org deployment to stack repo 2026-07-18 17:13:31 +00:00
app-bookstack.yaml Enable auto-sync for bookstack application 2026-07-12 17:17:53 +00:00
app-directus.yaml ArgoCD: Replace complex stack sync with individual application syncs 2026-07-12 10:44:41 +00:00
app-dozzle.yaml Add Dozzle container log viewer deployment 2026-07-19 13:25:08 +00:00
app-forgejo-runner.yaml Add Forgejo Actions runner deployment configuration 2026-07-18 14:21:57 +00:00
app-forgejo.yaml ArgoCD: Replace complex stack sync with individual application syncs 2026-07-12 10:44:41 +00:00
app-harbor.yaml Refactor Harbor deployment to follow project structure pattern 2026-07-18 14:02:31 +00:00
app-headlamp.yaml Enable automated sync for Headlamp ArgoCD application 2026-07-18 07:38:58 +00:00
app-opencloud.yaml ArgoCD: Replace complex stack sync with individual application syncs 2026-07-12 10:44:41 +00:00
app-pangolin.yaml Add Pangolin Kubernetes manifests 2026-07-26 12:09:07 +00:00
app-paperclip.yaml ArgoCD: Replace complex stack sync with individual application syncs 2026-07-12 10:44:41 +00:00
app-passbolt.yaml ArgoCD: Replace complex stack sync with individual application syncs 2026-07-12 10:44:41 +00:00
app-platform-prod.yaml ArgoCD: Replace complex stack sync with individual application syncs 2026-07-12 10:44:41 +00:00
app-pocket-id.yaml ArgoCD: Replace complex stack sync with individual application syncs 2026-07-12 10:44:41 +00:00
app-stalwart.yaml ArgoCD: Replace complex stack sync with individual application syncs 2026-07-12 10:44:41 +00:00
ARGOCD-MIGRATION.md ArgoCD: Replace complex stack sync with individual application syncs 2026-07-12 10:44:41 +00:00
README.md ArgoCD: Replace complex stack sync with individual application syncs 2026-07-12 10:44:41 +00:00

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