# KohakuHub Configuration Example # NOTE: This is for DIRECT uvicorn execution (development/testing only) # For Docker deployment, use docker-compose.yml or generate with: # python scripts/generate_docker_compose.py [s3] public_endpoint = "http://127.0.0.1:29001" # Public-facing S3 URL (for downloads) endpoint = "http://127.0.0.1:29001" # Internal S3 endpoint access_key = "CHANGE-ME-GENERATE-RANDOM" # Use: python -c "import secrets; print(secrets.token_urlsafe(24))" secret_key = "CHANGE-ME-GENERATE-RANDOM" # Use: python -c "import secrets; print(secrets.token_urlsafe(48))" bucket = "hub-storage" region = "us-east-1" force_path_style = true [lakefs] endpoint = "http://127.0.0.1:28000" # LakeFS credentials auto-generated on first start → ./hub-meta/hub-api/credentials.env # You can override by setting these (not recommended): # access_key = "your-lakefs-access-key" # secret_key = "your-lakefs-secret-key" repo_namespace = "hf" [smtp] enabled = false host = "smtp.gmail.com" port = 587 username = "your-email@gmail.com" password = "your-app-password" from_email = "noreply@yourdomain.com" use_tls = true [auth] require_email_verification = false invitation_only = false # Set to true to require invitation for registration session_secret = "CHANGE-ME-GENERATE-RANDOM" # Use: python -c "import secrets; print(secrets.token_urlsafe(48))" session_expire_hours = 168 # 7 days token_expire_days = 365 [admin] enabled = true secret_token = "CHANGE-ME-GENERATE-RANDOM" # Use: python -c "import secrets; print(secrets.token_urlsafe(48))" [quota] # Default storage quotas for new users/organizations (in bytes, null = unlimited) default_user_private_quota_bytes = 10_000_000_000 # 10GB for private repos default_user_public_quota_bytes = 100_000_000_000 # 100GB for public repos default_org_private_quota_bytes = 10_000_000_000 # 10GB for private repos default_org_public_quota_bytes = 100_000_000_000 # 100GB for public repos [fallback] enabled = true cache_ttl_seconds = 300 # 5 minutes cache for repo→source mappings timeout_seconds = 10 max_concurrent_requests = 5 # sources = [] # JSON list of fallback sources (optional) [app] base_url = "http://127.0.0.1:28080" # Use nginx port (28080), not direct backend (48888) api_base = "/api" db_backend = "postgres" # or "sqlite" database_url = "postgresql://hub:hubpass@127.0.0.1:25432/hubdb" auto_migrate = false # Auto-confirm database migrations (set true for Docker) # LFS Configuration (sizes in decimal: 1MB = 1,000,000 bytes) lfs_threshold_bytes = 5_000_000 # 5MB - files larger use LFS lfs_multipart_threshold_bytes = 100_000_000 # 100MB - files larger use multipart upload lfs_multipart_chunk_size_bytes = 50_000_000 # 50MB - size of each part (min 5MB except last) lfs_keep_versions = 5 # Keep last K versions of each LFS file lfs_auto_gc = true # Automatically delete old LFS objects on commit # Download tracking settings download_time_bucket_seconds = 900 # 15 minutes - session deduplication window download_session_cleanup_threshold = 100 # Trigger cleanup when sessions > this download_keep_sessions_days = 30 # Keep sessions from last N days debug_log_payloads = false # Log commit payloads (development only) # Site identification site_name = "KohakuHub" # Customizable site name (e.g., "MyCompany Hub")