95c821deb2
Add detailed [DEBUG] logging to every controller module when logging.level is set to "debug". Each module with stateful debug uses SetDebug(bool) wired from main.go. Covers stacks, backup, cloudflare, integrations, system, monitor, settings, scheduler, web handlers, storage, metrics, API, selfupdate, and assets. Also includes the app export/import (.fab bundles) feature from v0.32.0 and its debug page integration. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
53 lines
2.4 KiB
Go
53 lines
2.4 KiB
Go
// Package appexport provides per-app export/import via .fab bundles.
|
|
// A .fab file is a tar.gz (optionally password-encrypted) containing an app's
|
|
// config, database dump, and all user data — everything needed to restore
|
|
// the app to its current state.
|
|
package appexport
|
|
|
|
// ExportStackProvider provides stack data without circular imports.
|
|
// Implemented by exportAdapter in main.go (same pattern as backup.StackDataProvider).
|
|
type ExportStackProvider interface {
|
|
// GetStackDir returns the stack's directory path (e.g., /opt/docker/stacks/nextcloud).
|
|
GetStackDir(name string) (string, bool)
|
|
// GetStackComposePath returns the compose file path.
|
|
GetStackComposePath(name string) (string, bool)
|
|
// GetStackHDDMounts returns resolved HDD bind mount host paths for the stack.
|
|
GetStackHDDMounts(name string) []string
|
|
// GetStackHDDPath returns the raw HDD_PATH env var from app.yaml.
|
|
GetStackHDDPath(name string) string
|
|
// IsStackRunning returns true if the stack has running containers.
|
|
IsStackRunning(name string) bool
|
|
// StopStack stops the stack via docker compose down.
|
|
StopStack(name string) error
|
|
// StartStack starts the stack via docker compose up -d.
|
|
StartStack(name string) error
|
|
// GetStackDisplayName returns the human-readable name from .felhom.yml.
|
|
GetStackDisplayName(name string) string
|
|
// GetStackNeedsHDD returns true if the app requires HDD storage.
|
|
GetStackNeedsHDD(name string) bool
|
|
// GetDockerVolumes returns named Docker volume names from the compose file.
|
|
GetDockerVolumes(name string) []string
|
|
// IsStackDeployed returns true if the stack has a saved app.yaml config.
|
|
IsStackDeployed(name string) bool
|
|
// GetDecryptedEnv returns the decrypted env var map from app.yaml.
|
|
GetDecryptedEnv(name string) map[string]string
|
|
|
|
// --- Import-specific methods ---
|
|
|
|
// GetStacksBaseDir returns the base directory where stacks live (e.g., /opt/docker/stacks).
|
|
GetStacksBaseDir() string
|
|
// SaveEncryptedAppConfig saves app.yaml with re-encrypted sensitive fields.
|
|
// env is the plaintext env map from the bundle; encryption uses the current server key.
|
|
SaveEncryptedAppConfig(stackDir string, env map[string]string) error
|
|
// RefreshStacks rescans all stacks and refreshes container state.
|
|
RefreshStacks() error
|
|
// RemoveStackVolumes stops the stack and removes its named Docker volumes.
|
|
RemoveStackVolumes(name string) error
|
|
}
|
|
|
|
// DrivePathInfo holds a registered storage path and its label.
|
|
type DrivePathInfo struct {
|
|
Path string
|
|
Label string
|
|
}
|