Add i18n, branding, user management, health checks, and cleanup for deployment
- Multi-language support (EN/DE) with i18n engine and language files - Configurable branding (name, subtitle, logo) in Settings - Global default language and per-user language preference - User management router with CRUD endpoints - Customer status sync on start/stop/restart - Health check fixes: derive status from container state, remove broken wget healthcheck - Caddy reverse proxy and dashboard env templates for customer stacks - Updated README with real hardware specs, prerequisites, and new features - Removed .claude settings (JWT tokens) and build artifacts from tracking - Updated .gitignore for .claude/ and Windows artifacts Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -89,3 +89,16 @@ def generate_relay_secret() -> str:
|
||||
A 32-character hex string.
|
||||
"""
|
||||
return secrets.token_hex(16)
|
||||
|
||||
|
||||
def generate_datastore_encryption_key() -> str:
|
||||
"""Generate a base64-encoded 32-byte key for NetBird DataStoreEncryptionKey.
|
||||
|
||||
NetBird management (Go) expects standard base64 decoding to exactly 32 bytes.
|
||||
|
||||
Returns:
|
||||
A standard base64-encoded string representing 32 random bytes.
|
||||
"""
|
||||
import base64
|
||||
|
||||
return base64.b64encode(secrets.token_bytes(32)).decode()
|
||||
|
||||
Reference in New Issue
Block a user