Commit Graph

87 Commits

Author SHA1 Message Date
fuomag9 bb8a0d1023 implemented upstream pinning 2026-02-22 01:11:56 +01:00
fuomag9 7e4df5e50b removed redirect feature 2026-02-13 22:53:11 +01:00
fuomag9 eecacfb271 The static response feature has been completely removed 2026-02-09 01:15:28 +01:00
fuomag9 6d56cf2288 deprecate deadhosts, move it to the GUI as a custom response feature 2026-02-07 00:51:48 +01:00
fuomag9 6fb39dc809 Implement slave-master architecture 2026-01-25 01:39:36 +01:00
fuomag9 648d12bf16 The fix now properly merges the DNS resolver config into the existing transport, preserving TLS settings for HTTPS upstreams 2026-01-22 22:44:31 +01:00
fuomag9 7f93e9e784 Implement custom dns servers 2026-01-22 20:47:56 +01:00
fuomag9 49cf4f5ed1 added load balancing settings 2026-01-21 22:23:17 +01:00
fuomag9 8ec483b14f fix some permission stuff 2026-01-04 18:49:24 +01:00
fuomag9 9ca8bb4f15 Revert "Fix Authentik outpost callback by preserving original Host header"
This reverts commit b2183bf856.
2025-11-19 20:25:01 +01:00
fuomag9 454edba677 Fix outpost upstream dial address parsing
The outpost upstream was being passed directly to Caddy's dial field with the
full URL (http://host:port), but Caddy expects just host:port. This was causing
DNS lookup errors with a leading slash (/authentik.bologna.local.fuo.fi).

Now properly parses the URL to extract just the hostname and port.
2025-11-19 20:22:38 +01:00
fuomag9 b2183bf856 Fix Authentik outpost callback by preserving original Host header
The outpost route now preserves the original request host (e.g., email.fuo.fi)
instead of changing it to the upstream host. This allows Authentik to properly
construct redirect URLs after processing authentication callbacks.
2025-11-19 20:06:15 +01:00
fuomag9 5cad15e20e re-ordered paths for allowing custom paths correctly 2025-11-19 18:35:00 +01:00
fuomag9 bc3e28d5ab fix callback on protected paths 2025-11-19 17:57:14 +01:00
fuomag9 ab64b67844 Potential fix for code scanning alert no. 5: Prototype-polluting function
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-11-15 10:25:13 +01:00
fuomag9 06dc28fabd Added user logs functionality 2025-11-14 23:27:05 +01:00
fuomag9 58ec7e321e undo loki stuff 2025-11-12 23:22:30 +01:00
fuomag9 fa65dc1b2c Corrected Configuration for trea/caddy-loki-logger 2025-11-12 22:38:58 +01:00
fuomag9 a172595790 I've corrected the Caddy configuration structure. The error was because I placed logging inside the apps object, but in Caddy's JSON config, logging must be at the root level, alongside admin and apps. 2025-11-12 22:28:59 +01:00
fuomag9 ec580d2385 Add the ability to log to loki 2025-11-12 22:07:51 +01:00
fuomag9 88b25cee65 Add Caddy restart detection, auto-recovery, and metrics exposure
- Implemented health monitoring service that detects Caddy restarts/crashes
- Automatically reapplies configuration when Caddy restarts
- Added metrics settings UI for enabling Prometheus/Grafana monitoring
- Caddy metrics exposed on separate port (default: 9090) via reverse proxy
- Admin API (port 2019) kept internal-only for security
- Updated docker-compose.yml with metrics port documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 19:36:40 +01:00
fuomag9 b17ae54fbd Squashed commit of the following:
commit b5a751005850115c84fd8fddb83f32a52835a422
Author: fuomag9 <1580624+fuomag9@users.noreply.github.com>
Date:   Sat Nov 8 13:54:22 2025 +0100

    Update ProxyHostsClient.tsx

commit c93b3898c31b9c206fba74605dad5a578e326ce4
Author: fuomag9 <1580624+fuomag9@users.noreply.github.com>
Date:   Sat Nov 8 13:43:00 2025 +0100

    test-protected-paths
2025-11-08 13:55:23 +01:00
fuomag9 3be4e1bf7d Rewritten to use drizzle instead of prisma
commit c0894548dac5133bd89da5b68684443748fa2559
Author: fuomag9 <1580624+fuomag9@users.noreply.github.com>
Date:   Fri Nov 7 18:38:30 2025 +0100

    Update config.ts

commit 5a4f1159d2123ada0f698a10011c24720bf6ea6f
Author: fuomag9 <1580624+fuomag9@users.noreply.github.com>
Date:   Fri Nov 7 15:58:13 2025 +0100

    first drizzle rewrite
2025-11-07 19:26:32 +01:00
fuomag9 f079860007 Fix Authentik forward auth by converting to proper reverse_proxy JSON config
The forward_auth directive only exists in Caddyfile syntax, not JSON config.
This fix converts Authentik authentication to use the underlying reverse_proxy
handler with proper configuration:

- Replace forward_auth handler with reverse_proxy
- Convert "private_ranges" keyword to actual CIDR blocks for JSON config
- Parse upstream URL to extract host:port for dial field (removing http://)
- Add handle_response block to copy Authentik headers on 2xx status
- Preserve X-Forwarded-Method and X-Forwarded-Uri headers

Fixes error: "unknown module: http.handlers.forward_auth"
Fixes error: "invalid IP address: 'private_ranges'"
Fixes error: "lookup /hostname: no such host" (dial with URL scheme)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-07 11:08:09 +01:00
fuomag9 e57d3c3da0 fix build 2025-11-07 09:37:50 +01:00
fuomag9 664d420ec2 updated src/lib/caddy.ts (lines 410-475) to generate the proper reverse_proxy handler configuration that mimics what forward_auth does 2025-11-07 00:19:28 +01:00
Claude 6974022906 Fix Caddy Auto certificate management for proxy hosts
Previously, proxy hosts with "Managed by Caddy (Auto)" (certificate_id = null)
were being skipped during Caddy configuration generation, causing the feature
to not work at all.

This commit adds full support for automatic certificate management:

1. Modified collectCertificateUsage() to track domains with null certificate_id
   separately as auto-managed domains
2. Updated buildTlsAutomation() to create ACME automation policies for
   auto-managed domains (supports both HTTP-01 and DNS-01 challenges)
3. Modified buildTlsConnectionPolicies() to include TLS connection policies
   for auto-managed domains
4. Updated buildProxyRoutes() to allow proxy hosts with null certificate_id
   to be included in the route configuration

The configuration now automatically updates when domains are changed, as
applyCaddyConfig() is already called on create/update/delete operations.

Caddy will now automatically obtain and manage Let's Encrypt certificates
for all domains when "Managed by Caddy (Auto)" is selected.
2025-11-04 20:36:59 +00:00
fuomag9 a4cd8e992f Harden runtime secret handling and certificate storage permissions 2025-11-03 22:44:01 +01:00
fuomag9 9354cd9407 Fix upstream URL parsing for HTTPS backends
Previously, upstream URLs like 'https://iot2.fuo.fi' were passed directly
to Caddy's dial field, causing DNS lookup errors like 'lookup /iot2.fuo.fi'.

Changes:
- Parse upstream URLs to extract hostname:port for Caddy's dial field
- Automatically detect HTTPS upstreams and configure TLS transport
- Support insecure_skip_verify flag for self-signed certificates
- Default to port 443 for https://, port 80 for http://

Fixes: 'dial tcp: lookup /host: no such host' errors when using URL
format for upstreams instead of host:port format.
2025-11-03 21:36:04 +01:00
fuomag9 0bfeade2fe Add HTTP-01 challenge fallback for managed certificates without Cloudflare
Previously, managed certificates required Cloudflare DNS to be configured,
otherwise no TLS automation was configured and HTTPS would fail with TLS
handshake errors.

Changes:
- When Cloudflare is configured: use DNS-01 challenge via Cloudflare
- When Cloudflare is NOT configured: use HTTP-01 challenge (default)
- Enable automatic HTTPS when TLS automation policies exist
- This allows Let's Encrypt certificates via HTTP-01 challenge

Fixes TLS handshake errors when using managed certificates without
Cloudflare configuration. Port 80 must be accessible for HTTP-01.
2025-11-03 20:30:07 +01:00
fuomag9 a1632a7f75 Preserve admin API endpoint binding in Caddy config
When POSTing config to /load, Caddy was resetting the admin endpoint
from 0.0.0.0:2019 to localhost:2019, making it inaccessible from the
web container.

Now explicitly include admin config in the generated JSON to ensure
the admin API remains accessible at 0.0.0.0:2019 after config reloads.

Fixes ECONNREFUSED errors when applying Caddy config after the first load.
2025-11-03 20:11:29 +01:00
fuomag9 914b67b747 Remove zone_id from Cloudflare DNS provider config
The caddy-dns/cloudflare module only accepts api_token.
Both zone_id and account_id fields are not supported and cause config errors.

The provider automatically handles all zones accessible by the API token.

Fixes: 'unknown field zone_id' error when applying Caddy config.
2025-11-03 19:52:00 +01:00
fuomag9 1170a628d7 Remove unsupported account_id field from Cloudflare DNS provider config
The caddy-dns/cloudflare module only supports api_token and zone_id fields.
The account_id field was causing config load errors: 'unknown field account_id'.

Fixes Caddy config validation error when using Cloudflare DNS for ACME challenges.
2025-11-03 19:28:29 +01:00
fuomag9 89950226cd force cloudflare 2025-11-03 18:48:37 +01:00
fuomag9 668b667fe9 updated a lot of stuff 2025-11-02 22:16:13 +01:00
fuomag9 b064003c34 Updated the UI 2025-10-31 23:25:04 +01:00
fuomag9 315192fb54 first rewrite commit 2025-10-31 20:08:28 +01:00