Commit graph

96 commits

Author SHA1 Message Date
CTO Agent
16f060b151 fix(argocd): merge duplicate data: keys in argocd-cm ConfigMap
The argocd-cm document had two separate data: sections — one at the top
with resource customizations and one at the bottom with url/oidc.config.
This is invalid YAML and caused kustomize build to fail with
"mapping key data already defined". Merged url and oidc.config into the
single data: block to fix the argocd Application sync error.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-12 09:41:38 +00:00
CTO Agent
146b206e80 revert: restore argocd/** exclusion in stack-basicstack-de
Removing the exclusion caused the root app to apply argocd raw manifests
directly (bypassing kustomize), breaking namespace resolution. The correct
self-management design is: app-argocd.yaml Application is picked up by the
root app, which then delegates to the argocd Application managing apps/argocd/
via kustomize. The exclusion of argocd/** prevents double-applying resources.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-12 09:39:51 +00:00
CTO Agent
40e864b71f feat(argocd): enable self-management by removing argocd exclusion
Remove the 'argocd/**' exclusion from the root stack Application so that
Argo CD manages its own configuration via the app-of-apps pattern.
The apps/argocd/ directory already contains all manifests (install, ingress,
sealed secrets) and app-argocd.yaml defines the dedicated argocd Application.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-12 09:37:47 +00:00
CTO Agent
3eb4c7fe92 Fix argocd-rbac-cm ConfigMap YAML structure
Move metadata.name and app.kubernetes.io/part-of label from data section
to proper metadata section.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-12 09:35:28 +00:00
CTO Agent
1ed15d98ea Fix argocd-cm ConfigMap YAML structure
Move metadata.name and app.kubernetes.io/part-of label from data section
to proper metadata section. This was causing kustomize build failures.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-12 09:34:28 +00:00
CTO Agent
a4657317f2 Simplify argocd exclusion pattern to fix discovery issue
Change from multiline exclude with **/ pattern to simple single-line
'argocd/**' pattern relative to apps/ path.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-12 09:29:53 +00:00
CTO Agent
7b6a0064b9 Move Application manifests to apps root for proper self-management
Move all Application manifests (app-*.yaml) out of apps/argocd/ to apps/
to avoid chicken-and-egg issue where Applications couldn't update themselves.

Architecture:
- apps/app-stack-basicstack-de.yaml: manages apps/** excluding argocd/**
- apps/app-argocd.yaml: manages apps/argocd/** via kustomize
- apps/app-basicstack-org.yaml: manages basicstack.org repo

This enables full self-management: all Applications can sync their own
configurations from git.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-12 09:27:28 +00:00
CTO Agent
68adf00375 Fix argocd exclusion pattern in stack Application
Fully exclude argocd directory from stack Application to prevent
namespace errors. The argocd Application (apps/app-argocd.yaml) handles
all argocd resources via kustomize.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-12 09:26:12 +00:00
CTO Agent
fe9301f891 Enable Argo CD self-management via dedicated Application
Create app-argocd Application to manage argocd resources using kustomize.
Update stack Application exclusion to allow Application manifests while
excluding direct resource management (prevents namespace errors from
directory recursion bypassing kustomization).

Architecture:
- stack Application manages Application manifests (app-*.yaml)
- argocd Application manages argocd resources via kustomize
- Both Applications can self-manage through this pattern

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-12 09:25:19 +00:00
CTO Agent
8f537b8f82 Test Argo CD self-management with argocd-cm annotation
Add test annotation to argocd-cm ConfigMap to verify that Argo CD
automatically syncs changes to its own configuration.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-12 09:22:39 +00:00
CTO Agent
ba748d6ab4 Enable Argo CD self-management by removing argocd exclusion
This allows the stack Application to manage Argo CD's own configuration
via GitOps, implementing the app-of-apps pattern.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-12 09:20:18 +00:00
CTO Agent
4f979d657e Add Argo CD Application for basicstack.org
Deploys the basicstack.org website from Forgejo repository.
- Uses internal Forgejo URL (forgejo.forgejo.svc.cluster.local)
- Automated sync with prune and selfHeal enabled
- Deploys to basicstack-web namespace

Closes DEV-272

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-12 09:19:28 +00:00
CTO Agent
f75b51c02d Add Argo CD Application for stack.basicstack.de GitOps management
Creates the Argo CD Application that manages all cluster infrastructure
applications from the stack.basicstack.de repository. Configuration:
- Points to cluster-internal Forgejo (forgejo.forgejo.svc.cluster.local)
- Excludes argocd directory to prevent self-management
- Enables selfHeal for automatic sync of changes
- Disables prune for manual deletion approval
- Deployed to the cluster and verified working

All existing services (Stalwart, Directus, Forgejo, BookStack, Pocket ID,
OpenCloud, Passbolt) remain operational. Some pods restarted due to applying
pending git changes (expected GitOps behavior).

Note: Warning about duplicate opencloud namespace definition in
openldap-deployment.yaml and opencloud-deployment.yaml - does not affect
functionality, can be addressed in follow-up cleanup.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-12 09:19:28 +00:00
CTO Agent
b874f3d184 Add memory limits to Argo CD components to prevent OOM incidents
Implements resource governance for all Argo CD components via kustomization
overlay. This prevents unlimited memory consumption that led to the control
plane resource exhaustion incident (DEV-281).

Resource limits applied:
- application-controller: 512Mi limit, 256Mi request
- repo-server: 512Mi limit, 256Mi request
- redis: 256Mi limit, 128Mi request
- server: 256Mi limit, 128Mi request
- notifications-controller: 128Mi limit, 64Mi request
- applicationset-controller: 256Mi limit, 128Mi request

The limits are based on observed usage patterns with headroom for growth
while preventing runaway memory consumption.

Usage: kubectl apply -k apps/argocd/

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-12 09:19:28 +00:00
CTO Agent
a95e638f6b Add Argo CD installation manifests with Pocket ID SSO
- Downloaded upstream Argo CD install.yaml from stable branch
- Customized for basicstack.de cluster:
  - Disabled dex deployment (using Pocket ID OIDC instead)
  - Added --insecure flag to argocd-server (TLS at Traefik ingress)
  - Configured OIDC integration with auth.basicstack.de
  - Added RBAC policy mapping argo_admins group to admin role
  - Mounted OIDC client credentials from argocd-oidc-secret
- Created Traefik ingress for argo.basicstack.de with cert-manager TLS

Sealed secrets for OIDC and repository credentials already in place.
Ready for deployment per DEV-249 plan.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-12 09:19:28 +00:00
CTO Agent
d1d2b77ef2 Add Argo CD sealed secrets for OIDC and repository access
Created three SealedSecrets for Argo CD integration:
- argocd-oidc-secret: Pocket ID OIDC client credentials
- repo-stack-basicstack-de: SSH deploy key for stack repository
- repo-basicstack-org: SSH deploy key for basicstack.org repository

Repository secrets include argocd.argoproj.io/secret-type label
for automatic Argo CD discovery.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-12 09:19:28 +00:00
CTO Agent
6cc1df6c66 Configure OpenCloud daily backup to Hetzner Object Storage
- Use existing basicstack-backup bucket with opencloud/ prefix
- Configure endpoint: https://hel1.your-objectstorage.com
- Add pod affinity to run on same node as OpenCloud (RWO volume requirement)
- Schedule: daily at 2:00 AM UTC
- Retention: last 7 days
- First backup verified successful: 110.611 MiB transferred

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-12 09:19:28 +00:00
Paperclip CTO
5e02c64dc4 docs: Add comprehensive Pocket ID OIDC client setup documentation
Document all four OIDC clients for OpenCloud:
- Web application (UUID-based client ID)
- Desktop client (OpenCloudDesktop)
- Android mobile (OpenCloudAndroid)
- iOS mobile (OpenCloudIOS)

Includes configuration details, security notes, and troubleshooting.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-11 12:03:44 +00:00
CTO Agent
d8cd3638fa Fix Stalwart backup CronJob to handle ReadWriteOnce PVC
Implement scale-down/backup/scale-up pattern to work around PVC access mode limitation.

Changes:
- Add RBAC (ServiceAccount, Role, RoleBinding) with statefulsets/scale and pods permissions
- Switch to alpine:3.19 base image with kubectl and restic
- Scale down StatefulSet to 0 replicas before backup
- Run restic backup while pod is stopped
- Scale back up to 1 replica with error handling
- Add cleanup trap to ensure scale-up even on failure
- Set 10-minute timeout and backoff limit

Tested successfully: backup completes in ~32 seconds with minimal downtime.
Resolves DEV-236.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-11 11:21:39 +00:00
CTO Agent
b0f2acf5f3 Stalwart reliability hardening: fix k3s service networking issues
Root cause: k3s service ClusterIP routing instability causing intermittent
failures despite healthy pods. This is the 5th incident - prior fixes treated
symptoms, not the systemic networking fragility.

Changes:
- Add startup probe (60s delay, prevents premature service registration)
- Fix backup job env var substitution (use shell ${VAR}, not K8s $(VAR))
- Add comprehensive monitoring (ServiceMonitor, PrometheusRule, blackbox probes)
- Add alerting for service failures, high latency, pod restarts, backup failures

Evidence:
- Pod healthy (4d15h uptime, 0 restarts) but service ClusterIP routing broken
- Direct pod IP worked, service ClusterIP failed with "Connection reset by peer"
- Iptables rules correct, endpoints correct, but packets not flowing
- Required pod restart + Traefik restart to restore service

Monitoring now tests full service path from outside cluster, not just pod health.
Will alert immediately on failures instead of relying on reactive discovery.

Related: DEV-213, DEV-221, DEV-223, DEV-224, DEV-230, DEV-231

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-11 11:06:36 +00:00
CTO Agent
3b000e1ab1 Document k3s cluster network architecture and DNS requirements
Created comprehensive network documentation for BasicStack k3s cluster:

- NETWORK_ARCHITECTURE.md: Complete network architecture with diagrams,
  node configuration, CNI (Flannel) details, ingress/LoadBalancer setup,
  DNS configuration, TLS certificates, network policies, traffic flows,
  and troubleshooting procedures

- DNS_REQUIREMENTS.md: Complete DNS record requirements for all services
  including A records, MX records, SPF, DKIM, DMARC, and PTR records

- NETWORK_VERIFICATION.md: Verification report documenting current state
  of all network components with findings and recommendations

Updated infrastructure README with links to new network documentation.

Key findings:
- All worker nodes correctly configured with --node-ip set to private IPs
- Flannel VXLAN properly configured with public IP annotations
- Traefik ingress controller operational
- 16/17 TLS certificates valid (registry-tls needs investigation)
- 3 LoadBalancer services properly configured
- Network policies securing database services

Addresses DEV-225: Verify and document k3s cluster network configuration
Related: DEV-224 (node-ip configuration), DEV-223 (DNS issues)

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-11 11:06:36 +00:00
Paperclip CTO
27d26fb11b Document DNS configuration and service CIDR fix
- Fixed Service CIDR documentation (10.96.0.0/16, not 10.43.0.0/16)
- Added comprehensive DNS configuration guide
- Documented kubelet cluster-dns requirements
- Added CoreDNS forward configuration details
- Documented DNS CIDR mismatch troubleshooting (DEV-223)

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-06 18:22:53 +00:00
CTO Agent
f3034af04a Update k3s cluster documentation
- Add CLUSTER_ACCESS.md with comprehensive cluster access guide
- Fix Service CIDR in K3S_OPERATIONS.md (10.43.0.0/16, not 10.96.0.0/12)
- Document API server instability fix (cluster-cidr configuration)
- Add troubleshooting section for CIDR mismatch issues
- Update change history with cluster update details

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-06 17:54:53 +00:00
CTO Agent
2c0e7f22b1 Add k3s cluster management automation and documentation
- Add k3s node provisioning script with version pinning
- Add comprehensive K3S_OPERATIONS.md documentation
- Add k3s system-upgrade-controller configuration

This addresses DEV-221: prevents version skew issues by:
1. Enforcing version pinning when adding new nodes
2. Providing automated provisioning script
3. Setting up automated upgrades via upgrade controller
4. Documenting all cluster operations procedures

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-06 17:08:21 +00:00
CTO Agent
07e2e476ce Fix IDM LDAP port from 9125 to 9236
Corrected the IDM LDAP listener port. Logs show IDM listening on
127.0.0.1:9236, not 9125.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-05 20:49:14 +00:00
CTO Agent
b4abe71c5d Restore LDAP environment variables for IDM
Restored LDAP-related environment variables. The configmap now uses
IDM password variables (OC_IDM_IDM_PASSWORD, OC_IDM_REVA_PASSWORD)
instead of the external LDAP passwords.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-05 20:47:59 +00:00
CTO Agent
6b49ba342a Configure graph/users/groups to use IDM's internal LDAP
OpenCloud's IDM service provides an internal LDAP server on localhost:9125.
Updated configuration to connect to IDM's LDAP instead of external OpenLDAP:
- Base DN: o=libregraph-idm (IDM's base DN)
- Graph binds as uid=libregraph,ou=sysusers,o=libregraph-idm
- Users/Groups bind as uid=reva,ou=sysusers,o=libregraph-idm
- Uses IDM service user passwords from secrets

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-05 20:47:34 +00:00
CTO Agent
c1c85a684e Comment out LDAP environment variables for built-in IDM
When using OpenCloud's built-in IDM service, the graph, users, and groups
services should not use external LDAP. Commented out all LDAP-specific
environment variables that were causing startup failures.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-05 20:45:19 +00:00
CTO Agent
ab5cc5aaae Configure OpenCloud to use built-in IDM instead of external OpenLDAP
- Enable IDM service by removing it from OC_EXCLUDE_RUN_SERVICES
- Remove external LDAP configuration from configmap (graph, users, groups)
- Built-in IDM will handle user/group storage internally
- OIDC auto-provisioning via Pocket ID remains unchanged

This allows OpenCloud to save new users using its internal IDM service.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-05 20:41:15 +00:00
CTO Agent
c3fe072be5 fix(opencloud): move schema loading from postStart hook to standalone Job
The postStart lifecycle hook caused osixia/openldap to crash on startup:
its init script does chown -R on /container/service/slapd/assets/, and
the ConfigMap subPath mount there is read-only, killing the container.

Remove the postStart hook and the schema volume mount from the OpenLDAP
deployment. Add a standalone Kubernetes Job (opencloud-ldap-schema-job.yaml)
that connects via network LDAP as cn=admin,cn=config and loads the schema
after OpenLDAP is confirmed ready. The Job is idempotent (skips if the
schema already exists) and retries up to 10 times on failure.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-05 16:56:33 +00:00
CTO Agent
a715c8e532 fix(opencloud): load OpenCloud LDAP schema into OpenLDAP on startup
User creation failed with "openCloudUUID: attribute type undefined" because
OpenLDAP was missing the OpenCloud schema (OIDs under 1.3.6.1.4.1.63016).

Changes:
- Add opencloud-ldap-schema.yaml ConfigMap with the official OpenCloud LDAP
  schema defining openCloudUUID, openCloudUser, openCloudExternalIdentity,
  openCloudUserEnabled, openCloudUserType, openCloudLastSignInTimestamp
- Mount the ConfigMap into the OpenLDAP pod
- Add lifecycle postStart hook to load schema via ldapadd -Y EXTERNAL -H ldapi:///
  (idempotent: skips if already loaded)
- Re-exclude IDM in OpenCloud deployment (external LDAP handles user storage)

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-05 15:51:15 +00:00
CTO Agent
51d70b052f Revert "fix(opencloud): remove external LDAP config, use IDM for user storage"
This reverts commit 5adc38c4d8.
2026-07-05 15:41:56 +00:00
CTO Agent
5adc38c4d8 fix(opencloud): remove external LDAP config, use IDM for user storage
Graph service was routing auto-provisioning to external OpenLDAP which lacks
the OpenCloud schema (openCloudUUID: attribute type undefined). The explicit
graph.identity.ldap, users.drivers.ldap, and groups.drivers.ldap sections in
opencloud.yaml overrode the default IDM LDAP, causing user creation to fail.

Remove all external LDAP sections so Graph/Users/Groups default to IDM's
internal LDAP, which has the full OpenCloud schema. IDM is already running.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-05 15:37:46 +00:00
CTO Agent
4a674dba6e fix(opencloud): add IDM password config to ConfigMap
The /etc/opencloud mount is read-only (ConfigMap), so opencloud init
cannot write the generated IDM password config. IDM fails to start with
"password of service user IDM has not been set properly".

Add the idm.service_user_passwords section to opencloud.yaml, referencing
the OC_IDM_* env vars that are already populated from the sealed secret.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-05 15:29:01 +00:00
CTO Agent
67890f299d fix(opencloud): fix user login - default role assignment and re-enable IDM
After Pocket ID OIDC flow completed, users got "Nicht angemeldet" because:
1. PROXY_ROLE_ASSIGNMENT_DRIVER=oidc required an 'opencloud_role' OIDC claim
   that Pocket ID wasn't sending → users got no role → login rejected
2. IDM was excluded, removing the internal user store that auto-provisioning
   needs to create user accounts when they first log in

Fixes:
- Switch to PROXY_ROLE_ASSIGNMENT_DRIVER=default so all OIDC-authenticated
  users automatically receive the standard user role
- Re-enable IDM service so auto-provisioned accounts have a working user store

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-05 15:23:24 +00:00
CTO Agent
6b29f46f3b fix(opencloud): add CSP config to allow Pocket ID OIDC auth
Browser was blocking fetch of https://auth.basicstack.de/.well-known/openid-configuration
due to missing connect-src directive in Content-Security-Policy.

Adds csp.yaml to the ConfigMap (mounted at /etc/opencloud/csp.yaml) with
extended connect-src that includes auth.basicstack.de and WebSocket origins.
Sets PROXY_CSP_CONFIG_FILE_LOCATION env var so the proxy service picks it up.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-05 15:14:26 +00:00
CTO Agent
2b460fec5b OpenCloud: Remove client secrets for public SPA with PKCE
OpenCloud's web frontend is a public Single Page Application that uses
PKCE (Proof Key for Code Exchange) and does not need client secrets.

Removed:
- OC_OIDC_CLIENT_SECRET
- WEB_OIDC_CLIENT_SECRET

The Pocket ID OIDC client must be configured as:
- Public Client: Enabled
- PKCE: Enabled
- Callback URLs:
  - https://opencloud.basicstack.de/
  - https://opencloud.basicstack.de/oidc-callback.html
  - https://opencloud.basicstack.de/oidc-silent-redirect.html
- Logout URL: https://opencloud.basicstack.de

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-05 14:49:49 +00:00
da7dc02bac apps/opencloud/opencloud-deployment.yaml aktualisiert 2026-07-05 14:41:09 +00:00
3e8e5b1497 apps/opencloud/opencloud-deployment.yaml aktualisiert 2026-07-05 14:37:47 +00:00
CTO Agent
3a35b737cb OpenCloud: Exclude auth-basic service for OIDC-only authentication
Removed auth-basic configuration and environment variables:
- Removed auth-basic section from ConfigMap
- Removed AUTH_BASIC_LOG_LEVEL, OC_AUTH_BASIC_LDAP_BIND_PASSWORD,
  and AUTH_BASIC_AUTH_PROVIDERS_LDAP_BIND_PASSWORD env vars
- Added auth-basic to OC_EXCLUDE_RUN_SERVICES

Result: OpenCloud pod running healthy (1/1 Ready)
- All services listening and operational
- https://opencloud.basicstack.de/ responding with HTTP 200
- No auth-basic bind_password errors

Ready for OIDC authentication testing with Pocket ID.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-05 14:12:07 +00:00
CTO Agent
3db38aded0 OpenCloud: Use native bash substitution in config file
- Removed init-config container (OpenCloud supports native bash substitution)
- Mount opencloud-config ConfigMap directly to /etc/opencloud
- Added gateway storage configuration with ${OC_STORAGE_MOUNT_ID|}
- Updated all LDAP services to use ${OPENLDAP_ADMIN_PASSWORD|} substitution
- Added auth-basic auth_providers structure

Services starting successfully:
- Gateway, users, sharing services running
- Users service connected to external OpenLDAP
- Remaining: auth-basic bind_password configuration issue

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-07-05 14:03:49 +00:00
CTO Agent
6f8e50c455 Fix init-config container to use busybox with shell expansion
Changed from alpine+envsubst to busybox with simple shell-based
variable expansion using sed. This avoids permission issues with
apk and works with non-root security context.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-07-05 13:40:23 +00:00
CTO Agent
09acb2347c Implement ConfigMap mount with init container for envsubst
Added init-config container that:
- Uses alpine with envsubst to expand environment variables
- Reads ConfigMap template from /etc/opencloud-template
- Writes expanded config to emptyDir at /etc/opencloud-processed
- Main container mounts processed config at /etc/opencloud

Simplified ConfigMap to only essential LDAP configuration:
- Graph service LDAP (external OpenLDAP)
- Users/Groups service LDAP configuration
- Removed default values (env vars override anyway)
- Only  placeholder remains

This follows OpenCloud's config precedence:
1. opencloud.yaml (base config)
2. Environment variables (highest precedence)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-07-05 13:39:15 +00:00
CTO Agent
53f358c34f Revert ConfigMap mount - caused crashes
Mounting opencloud-config ConfigMap to /etc/opencloud caused pod crashes
because the YAML contains placeholders like ${ENV_VAR} that aren't expanded.

Issue: OpenCloud expects actual values in config files, but ConfigMaps
don't perform environment variable substitution.

Solution: Use environment variables only (highest precedence per docs).
The current deployment with ENV vars works correctly - no file config needed.

Alternative: If file config is required, use an init container to:
1. Read the ConfigMap template
2. Substitute environment variables
3. Write the expanded config to /etc/opencloud

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-07-05 13:37:11 +00:00
CTO Agent
1e22b74a55 Mount opencloud-config ConfigMap to /etc/opencloud
Added volume mount for opencloud-config ConfigMap at /etc/opencloud
so OpenCloud services can read the opencloud.yaml configuration file.

This follows OpenCloud's standard configuration pattern:
- opencloud.yaml provides global defaults
- Environment variables override file configuration
- ConfigMap mounted at /etc/opencloud (container default)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-07-05 13:32:47 +00:00
f0e4df95a1 apps/opencloud/opencloud-deployment.yaml aktualisiert 2026-07-05 11:50:58 +00:00
CTO Agent
83e120aa2b Enable trace logging for all auth services
Added trace logging for:
- AUTH_SERVICE_LOG_LEVEL
- AUTH_APP_LOG_LEVEL
- AUTH_BASIC_LOG_LEVEL
- AUTH_MACHINE_LOG_LEVEL

This will provide detailed auth debugging information.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-07-05 10:44:39 +00:00
CTO Agent
1126d2e7f6 Enable auth-service trace logging for debugging
Added AUTH_SERVICE_LOG_LEVEL=trace to help debug authentication
redirect issues.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-07-05 10:42:40 +00:00
CTO Agent
db46c98584 Enable basic auth temporarily for testing
OIDC redirect still not working after multiple configuration attempts.
Enabled basic auth so user can test LDAP authentication.

Added user: andreas.leinen@basicstack.de
Password: OpenCloud2024!

TODO: Investigate why OIDC redirect isn't happening despite correct
configuration in deployment and configmap.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-07-05 10:38:32 +00:00
CTO Agent
c6460d3f10 Add OpenLDAP admin sealed secret
Generated secure passwords for OpenLDAP admin credentials.
Admin DN: cn=admin,dc=basicstack,dc=de

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-07-05 10:31:59 +00:00