# Usage Guide Quick reference for configuring and using the Universal HF Docker Template. ## Environment Variables ### Core Configuration | Variable | Default | Description | |----------|---------|-------------| | `SERVICE_PORT` | `7860` | Port for your core service | | `MODEL_NAME` | - | Hugging Face model name to load | | `SERVICE_TITLE` | `My HF Model Service` | Title for your service interface | | `HF_TOKEN` | - | Hugging Face API token | | `DEBUG_MODE` | `false` | Enable debug logging | ### Optional Services | Variable | Default | Description | |----------|---------|-------------| | `FILEBROWSER_ENABLED` | `false` | Enable web-based file management | | `WEBDAV_ENABLED` | `false` | Enable WebDAV file synchronization service | | `PERSISTENCE_ENABLED` | `false` | Enable automatic backup/restore | | `RESTIC_ENABLED` | `false` | Enable restic backup service | | `CLOUDFLARED_ENABLED` | `false` | Enable Cloudflare tunnel | | `FRPC_ENABLED` | `false` | Enable frpc reverse proxy | ⚠️ **Important**: `PERSISTENCE_ENABLED` and `RESTIC_ENABLED` cannot both be `true` at the same time, you can only choose one backup service. ### Service-Specific Configuration | Variable | Default | Description | |----------|---------|-------------| | `DATASET_ID` | - | Dataset ID for backups (`username/dataset-name`) | | `SYNC_INTERVAL` | `7200` | Backup interval in seconds | | `WEBDAV_HOST` | `0.0.0.0` | WebDAV server host address | | `WEBDAV_PORT` | `8081` | WebDAV server port | | `WEBDAV_USERNAME` | `webdav` | WebDAV authentication username | | `WEBDAV_PASSWORD` | `webdav123` | WebDAV authentication password | | `WEBDAV_ROOT_DIR` | `/home/user/webdav` | WebDAV root directory | | `WEBDAV_ENABLE_UI` | `true` | Enable WebDAV web interface | | `CLOUDFLARED_TUNNEL_TOKEN` | - | Cloudflare tunnel token | | `FRPC_SERVER_ADDR` | - | frp server address | | `FRPC_AUTH_TOKEN` | - | frp authentication token | ## Configuration Examples ### Basic Development Setup ```bash # Minimal configuration for testing SERVICE_PORT=7860 MODEL_NAME=distilbert-base-uncased DEBUG_MODE=true FILEBROWSER_ENABLED=true WEBDAV_ENABLED=true ``` ### Production Gradio Service ```bash # Core service SERVICE_PORT=7860 MODEL_NAME=microsoft/DialoGPT-medium SERVICE_TITLE="My Chat Bot" HF_TOKEN=your_hf_token # Infrastructure FILEBROWSER_ENABLED=true WEBDAV_ENABLED=true WEBDAV_PASSWORD=secure_password_123 PERSISTENCE_ENABLED=true DATASET_ID=username/dataset CLOUDFLARED_ENABLED=true CLOUDFLARED_TUNNEL_TOKEN=your_tunnel_token ``` ### Custom Service with Persistence ```bash # Your custom service configuration SERVICE_PORT=7860 HF_TOKEN=your_token # Data persistence PERSISTENCE_ENABLED=true DATASET_ID=username/dataset SYNC_INTERVAL=3600 # File management FILEBROWSER_ENABLED=true ``` ## Port Configuration The template uses these ports by default: | Port | Service | Description | |------|---------|-------------| | `7860` | Core Service | HuggingFace Spaces standard port | | `8080` | File Browser | Web-based file management | | `8081` | WebDAV | File synchronization protocol | | `9000` | Minio API | S3-compatible object storage | | `9001` | Minio Console | Web management interface | Configure `SERVICE_PORT` to change the core service port if needed. Individual services can be configured with their respective environment variables. ## Troubleshooting | Problem | Solution | |---------|----------| | Service won't start | Check `scripts/start/core-service-start.sh` exists and is executable | | Permission denied | Verify file ownership: `chown user:user /home/user/script/start/*` | | Service not starting | Check `*_ENABLED=true` and required environment variables | | Cloudflared fails | Verify `CLOUDFLARED_TUNNEL_TOKEN` is valid | | File Browser inaccessible | Ensure `FILEBROWSER_ENABLED=true` and port is available | | WebDAV not working | Check `WEBDAV_ENABLED=true` and verify credentials | | WebDAV access denied | Verify `WEBDAV_USERNAME` and `WEBDAV_PASSWORD` are correct | | Backup fails | Verify `HF_TOKEN` has write access to `DATASET_ID` | | Variables not set | Check Hugging Face Spaces settings | | Boolean values | Use lowercase `true`/`false` | ### Debugging Commands ```bash # Check running processes ps aux | grep -E "(python|cloudflared|frpc|filebrowser|flydav)" # Check environment variables env | grep -E "(SERVICE_|MODEL_|ENABLED|TOKEN|WEBDAV_)" # Check service logs tail -f /tmp/*.log # Test network connectivity curl -I http://localhost:7860 # Core service curl -I http://localhost:8080 # File Browser curl -I http://localhost:8081 # WebDAV # Test WebDAV connectivity (with authentication) curl -I -u username:password http://localhost:8081/webdav ``` ## Best Practices - Use Hugging Face Spaces secrets for sensitive tokens - Test configuration locally before deploying - Monitor resource usage and adjust `SYNC_INTERVAL` accordingly - Document custom environment variables for your service