- Add cleanup.sh script with dry-run, force, and all options - Add auto-cleanup service setup for macOS (launchd) and Linux (systemd) - Add cleanup-status.sh for monitoring Docker resources - Add Makefile targets: self-cleanup, auto-cleanup - Features colored output, confirmation prompts, and detailed logging - Auto-cleanup runs daily to keep system clean - Status monitoring shows resources and service state |
||
|---|---|---|
| .. | ||
| legacy | ||
| lib | ||
| auto-cleanup.service | ||
| auto-cleanup.timer | ||
| cleanup-benchmarks.sh | ||
| cleanup-status.sh | ||
| cleanup.sh | ||
| create_bitwarden_fetchml_item.sh | ||
| manage-artifacts.sh | ||
| README.md | ||
| run-benchmarks-local.sh | ||
| setup-auto-cleanup.sh | ||
| setup-monitoring-prod.sh | ||
| setup-prod.sh | ||
| setup-production.sh | ||
| test-homelab-secure.sh | ||
| test-prod.sh | ||
| validate-prod-config.sh | ||
Scripts Directory
This directory contains setup and utility scripts for FetchML.
Production Scripts
setup-prod.sh
Purpose: Automated production setup for Rocky Linux bare metal deployment
Usage: sudo ./scripts/setup-prod.sh [base_path] [user] [group]
What it does:
- Creates system user and groups
- Sets up directory structure (
/data/ml-experiments/*) - Installs dependencies (Go, Podman, Redis)
- Configures GPU support for Podman
- Creates systemd service files
- Sets up log rotation
Example:
sudo ./scripts/setup-prod.sh /data/ml-experiments ml-user ml-group
validate-prod-config.sh
Purpose: Validates production configuration files
Usage: ./scripts/validate-prod-config.sh [api-config] [worker-config]
What it does:
- Checks config file syntax
- Verifies base_path consistency
- Tests Redis connectivity
- Validates Podman setup
- Checks directory permissions
Example:
./scripts/validate-prod-config.sh configs/config-prod.yaml configs/worker-prod.toml
Legacy Setup Scripts (Deprecated)
The following scripts are from earlier iterations and are deprecated in favor of setup-prod.sh:
setup_rocky.sh- Usesetup-prod.shinsteadsetup_ubuntu.sh- Ubuntu support (not primary target)auto_setup.sh- Old automated setup (superseded)setup_common.sh- Common functions (integrated into setup-prod.sh)quick_start.sh- Quick dev setup (use docker-compose on macOS instead)test_tools.sh- Tool testing (integrated into validate-prod-config.sh)
Cleanup Recommendation
These legacy scripts can be removed or archived. The current production setup only needs:
setup-prod.shvalidate-prod-config.sh
Usage Workflow
First-Time Production Setup
# 1. Run production setup
sudo ./scripts/setup-prod.sh
# 2. Copy and configure
sudo cp configs/config-prod.yaml /etc/fetch_ml/config.yaml
sudo cp configs/worker-prod.toml /etc/fetch_ml/worker.toml
sudo vim /etc/fetch_ml/config.yaml # Update API keys, etc.
# 3. Build and install
make prod
sudo make install
# 4. Validate
./scripts/validate-prod-config.sh /etc/fetch_ml/config.yaml /etc/fetch_ml/worker.toml
# 5. Start services
sudo systemctl start fetchml-api fetchml-worker
sudo systemctl enable fetchml-api fetchml-worker
Development Setup (macOS)
# Use docker-compose for local development
docker-compose up -d
# Or run components directly
make dev
./bin/api-server -config configs/config-local.yaml
Script Maintenance
When adding new scripts:
- Add executable permission:
chmod +x scripts/new-script.sh - Add header comment with purpose and usage
- Update this README
- Use consistent error handling and logging