refactor: remove standalone proxies, add Traefik provider with Docker labels
Standalone proxy removal: - Delete store, API handlers, proxy manager, health monitor, validator, hints - Delete frontend pages (proxies list, create, edit) and components (ProxyCard, ProxyForm, ProxyFilter, ProxyGroup, ValidationChecklist) - Remove proxy routes from router, nav items, dashboard references - Clean up SystemHealthCard to remove proxy section Traefik provider: - Add TraefikProvider implementing proxy.Provider via Docker labels - ContainerLabels() returns traefik.enable, router rule, entrypoints, service port, TLS cert resolver, docker network - ConfigureRoute() returns router name (labels handle routing at container creation) - DeleteRoute() is no-op (container removal auto-deregisters) - Ping() checks Traefik API health (optional) - Wire ContainerLabels into deployer (executeDeploy + blueGreenDeploy) - Add Traefik settings: entrypoint, cert_resolver, network, api_url - Add traefik option to proxy provider selector in settings UI - Show conditional Traefik config fields - Add i18n keys (EN + RU)
This commit is contained in:
+8
-11
@@ -101,6 +101,14 @@ func main() {
|
||||
case "none":
|
||||
proxyProvider = proxy.NewNoneProvider()
|
||||
slog.Info("proxy provider: none")
|
||||
case "traefik":
|
||||
proxyProvider = proxy.NewTraefikProvider(
|
||||
settings.TraefikEntrypoint,
|
||||
settings.TraefikCertResolver,
|
||||
settings.TraefikNetwork,
|
||||
settings.TraefikAPIURL,
|
||||
)
|
||||
slog.Info("proxy provider: traefik", "entrypoint", settings.TraefikEntrypoint)
|
||||
default:
|
||||
// Default to NPM for backward compatibility (including "npm" and empty string).
|
||||
npmPassword := ""
|
||||
@@ -164,13 +172,6 @@ func main() {
|
||||
slog.Warn("failed to start stale scanner", "error", err)
|
||||
}
|
||||
|
||||
// Initialize proxy manager and health monitor.
|
||||
proxyManager := proxy.NewManager(db, proxyProvider)
|
||||
proxyHealth := proxy.NewHealthMonitor(db, eventBus)
|
||||
if err := proxyHealth.Start("5m"); err != nil {
|
||||
slog.Warn("failed to start proxy health monitor", "error", err)
|
||||
}
|
||||
|
||||
// Start daily event log pruning cron job.
|
||||
cronScheduler := cron.New()
|
||||
if _, err := cronScheduler.AddFunc("@daily", func() {
|
||||
@@ -220,7 +221,6 @@ func main() {
|
||||
dnsProvider := initDNSProvider(settings, encKey)
|
||||
if dnsProvider != nil {
|
||||
dep.SetDNSProvider(dnsProvider)
|
||||
proxyManager.SetDNSProvider(dnsProvider)
|
||||
slog.Info("DNS provider initialized", "provider", settings.DNSProvider)
|
||||
}
|
||||
|
||||
@@ -283,14 +283,12 @@ func main() {
|
||||
// Build API server.
|
||||
apiServer := api.NewServer(db, dockerClient, npmClient, proxyProvider, dep, webhookHandler, eventBus, encKey)
|
||||
apiServer.SetStaleScanner(staleScanner)
|
||||
apiServer.SetProxyManager(proxyManager)
|
||||
apiServer.SetBackupEngine(backupEngine)
|
||||
apiServer.SetDBPath(dbPath)
|
||||
apiServer.SetBackupSettingsChangedCallback(scheduleAutobackup)
|
||||
apiServer.SetDNSProvider(dnsProvider)
|
||||
apiServer.SetDNSProviderChangedCallback(func(provider dns.Provider) {
|
||||
dep.SetDNSProvider(provider)
|
||||
proxyManager.SetDNSProvider(provider)
|
||||
})
|
||||
router := apiServer.Router()
|
||||
|
||||
@@ -340,7 +338,6 @@ func main() {
|
||||
// Stop accepting new work.
|
||||
cronScheduler.Stop()
|
||||
eventBus.Unsubscribe(notifySub)
|
||||
proxyHealth.Stop()
|
||||
staleScanner.Stop()
|
||||
poller.Stop()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user