aboutsummaryrefslogtreecommitdiff
path: root/weed/admin/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'weed/admin/README.md')
-rw-r--r--weed/admin/README.md279
1 files changed, 279 insertions, 0 deletions
diff --git a/weed/admin/README.md b/weed/admin/README.md
new file mode 100644
index 000000000..8364ebc2f
--- /dev/null
+++ b/weed/admin/README.md
@@ -0,0 +1,279 @@
+# SeaweedFS Admin Component
+
+A modern web-based administration interface for SeaweedFS clusters built with Go, Gin, Templ, and Bootstrap.
+
+## Features
+
+- **Dashboard**: Real-time cluster status and metrics
+- **Master Management**: Monitor master nodes and leadership status
+- **Volume Server Management**: View volume servers, capacity, and health
+- **S3 Bucket Management**: Create, delete, and manage S3 buckets with web interface
+- **System Health**: Overall cluster health monitoring
+- **Responsive Design**: Bootstrap-based UI that works on all devices
+- **Authentication**: Optional user authentication with sessions
+- **TLS Support**: HTTPS support for production deployments
+
+## Building
+
+### Using the Admin Makefile
+
+The admin component has its own Makefile for development and building:
+
+```bash
+# Navigate to admin directory
+cd weed/admin
+
+# View all available targets
+make help
+
+# Generate templates and build
+make build
+
+# Development mode with template watching
+make dev
+
+# Run the admin server
+make run
+
+# Clean build artifacts
+make clean
+```
+
+### Using the Root Makefile
+
+The root SeaweedFS Makefile automatically integrates the admin component:
+
+```bash
+# From the root directory
+make install # Builds weed with admin component
+make full_install # Full build with all tags
+make test # Runs tests including admin component
+
+# Admin-specific targets from root
+make admin-generate # Generate admin templates
+make admin-build # Build admin component
+make admin-run # Run admin server
+make admin-dev # Development mode
+make admin-clean # Clean admin artifacts
+```
+
+### Manual Building
+
+If you prefer to build manually:
+
+```bash
+# Install templ compiler
+go install github.com/a-h/templ/cmd/templ@latest
+
+# Generate templates
+templ generate
+
+# Build the main weed binary
+cd ../../../
+go build -o weed ./weed
+```
+
+## Development
+
+### Template Development
+
+The admin interface uses [Templ](https://templ.guide/) for type-safe HTML templates:
+
+```bash
+# Watch for template changes and auto-regenerate
+make watch
+
+# Or manually generate templates
+make generate
+
+# Format templates
+make fmt
+```
+
+### File Structure
+
+```
+weed/admin/
+├── Makefile # Admin-specific build tasks
+├── README.md # This file
+├── S3_BUCKETS.md # S3 bucket management documentation
+├── admin.go # Main application entry point
+├── dash/ # Server and handler logic
+│ ├── admin_server.go # HTTP server setup
+│ ├── handler_admin.go # Admin dashboard handlers
+│ ├── handler_auth.go # Authentication handlers
+│ └── middleware.go # HTTP middleware
+├── static/ # Static assets
+│ ├── css/admin.css # Admin-specific styles
+│ └── js/admin.js # Admin-specific JavaScript
+└── view/ # Templates
+ ├── app/ # Application templates
+ │ ├── admin.templ # Main dashboard template
+ │ ├── s3_buckets.templ # S3 bucket management template
+ │ └── *_templ.go # Generated Go code
+ └── layout/ # Layout templates
+ ├── layout.templ # Base layout template
+ └── layout_templ.go # Generated Go code
+```
+
+### S3 Bucket Management
+
+The admin interface includes comprehensive S3 bucket management capabilities. See [S3_BUCKETS.md](S3_BUCKETS.md) for detailed documentation on:
+
+- Creating and deleting S3 buckets
+- Viewing bucket contents and metadata
+- Managing bucket permissions and settings
+- API endpoints for programmatic access
+
+## Usage
+
+### Basic Usage
+
+```bash
+# Start admin interface on default port (23646)
+weed admin
+
+# Start with custom configuration
+weed admin -port=8080 -masters="master1:9333,master2:9333" -filer="filer:8888"
+
+# Start with authentication
+weed admin -adminUser=admin -adminPassword=secret123
+
+# Start with HTTPS
+weed admin -port=443 -tlsCert=/path/to/cert.pem -tlsKey=/path/to/key.pem
+```
+
+### Configuration Options
+
+| Option | Default | Description |
+|--------|---------|-------------|
+| `-port` | 23646 | Admin server port |
+| `-masters` | localhost:9333 | Comma-separated master servers |
+| `-adminUser` | admin | Admin username (if auth enabled) |
+| `-adminPassword` | "" | Admin password (empty = no auth) |
+| `-tlsCert` | "" | Path to TLS certificate |
+| `-tlsKey` | "" | Path to TLS private key |
+
+### Docker Usage
+
+```bash
+# Build Docker image with admin component
+make docker-build
+
+# Run with Docker
+docker run -p 23646:23646 seaweedfs/seaweedfs:latest admin -masters=host.docker.internal:9333
+```
+
+## Development Workflow
+
+### Quick Start
+
+```bash
+# Clone and setup
+git clone <seaweedfs-repo>
+cd seaweedfs/weed/admin
+
+# Install dependencies and build
+make install-deps
+make build
+
+# Start development server
+make dev
+```
+
+### Making Changes
+
+1. **Template Changes**: Edit `.templ` files in `view/`
+ - Templates auto-regenerate in development mode
+ - Use `make generate` to manually regenerate
+
+2. **Go Code Changes**: Edit `.go` files
+ - Restart the server to see changes
+ - Use `make build` to rebuild
+
+3. **Static Assets**: Edit files in `static/`
+ - Changes are served immediately
+
+### Testing
+
+```bash
+# Run admin component tests
+make test
+
+# Run from root directory
+make admin-test
+
+# Lint code
+make lint
+
+# Format code
+make fmt
+```
+
+## Production Deployment
+
+### Security Considerations
+
+1. **Authentication**: Always set `adminPassword` in production
+2. **HTTPS**: Use TLS certificates for encrypted connections
+3. **Firewall**: Restrict admin interface access to authorized networks
+
+### Example Production Setup
+
+```bash
+# Production deployment with security
+weed admin \
+ -port=443 \
+ -masters="master1:9333,master2:9333,master3:9333" \
+ -adminUser=admin \
+ -adminPassword=your-secure-password \
+ -tlsCert=/etc/ssl/certs/admin.crt \
+ -tlsKey=/etc/ssl/private/admin.key
+```
+
+### Monitoring
+
+The admin interface provides endpoints for monitoring:
+
+- `GET /health` - Health check endpoint
+- `GET /metrics` - Prometheus metrics (if enabled)
+- `GET /api/status` - JSON status information
+
+## Troubleshooting
+
+### Common Issues
+
+1. **Templates not found**: Run `make generate` to create template files
+2. **Build errors**: Ensure `templ` is installed with `make install-templ`
+3. **Static files not loading**: Check that `static/` directory exists and has proper files
+4. **Connection errors**: Verify master and filer addresses are correct
+
+### Debug Mode
+
+```bash
+# Enable debug logging
+weed -v=2 admin
+
+# Check generated templates
+ls -la view/app/*_templ.go view/layout/*_templ.go
+```
+
+## Contributing
+
+1. Fork the repository
+2. Create a feature branch
+3. Make your changes
+4. Run tests: `make test`
+5. Format code: `make fmt`
+6. Submit a pull request
+
+## Architecture
+
+The admin component follows a clean architecture:
+
+- **Presentation Layer**: Templ templates + Bootstrap CSS
+- **HTTP Layer**: Gin router with middleware
+- **Business Logic**: Handler functions in `dash/` package
+- **Data Layer**: Communicates with SeaweedFS masters and filers
+
+This separation makes the code maintainable and testable. \ No newline at end of file