diff --git a/scripts/README.md b/scripts/README.md new file mode 100644 index 00000000..e7597d8c --- /dev/null +++ b/scripts/README.md @@ -0,0 +1,32 @@ +# Scripts Documentation + +This directory contains utility scripts for managing the EpicNext-Cms project. + +## Scripts Overview + +| Script | Description | +| :--- | :--- | +| `dashboard.sh` | Main interactive menu to run all other scripts. | +| `deploy.sh` | Safely redeploys the application by freeing the port first. | +| `logs.sh` | View logs for cms and mariadb services. | +| `backup.sh` | Creates a database backup in `/backups`. | +| `db-restore.sh` | Restores a database backup. | +| `db-optimize.sh` | Optimizes database tables. | +| `docker-prune.sh` | Cleans up unused Docker resources. | +| `verify-deploy.sh` | Checks if the CMS is reachable after deployment. | +| `check-env.sh` | Validates `.env` against `.env.example`. | +| `check-security.sh` | Runs `pnpm audit` and checks for image updates. | +| `monitor.sh` | Shows system disk/container resource usage. | +| `perf-report.sh` | Runs performance profiling. | +| `setup-dev.sh` | Configures development environment. | +| `check-updates.sh` | Checks for package and image updates. | +| `maintenance.sh` | Toggles maintenance mode flag. | +| `doctor.sh` | Runs a system diagnostic report. | +| `setup-cron.sh` | Configures automated cron jobs. | +| `alert.sh` | Sends notifications to a configured webhook. | + +## Usage +Run any script directly, or use the dashboard: +```bash +./scripts/dashboard.sh +``` diff --git a/scripts/alert.sh b/scripts/alert.sh new file mode 100755 index 00000000..37500200 --- /dev/null +++ b/scripts/alert.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +# Script to send alerts via Webhook +# Usage: ./alert.sh "Your message" +WEBHOOK_URL="https://discord.com/api/webhooks/your_webhook_id/your_webhook_token" # Replace with actual URL + +if [ -z "$1" ]; then + echo "Usage: ./alert.sh 'Message'" + exit 1 +fi + +curl -H "Content-Type: application/json" -d "{\"content\": \"$1\"}" $WEBHOOK_URL diff --git a/scripts/dashboard.sh b/scripts/dashboard.sh index 175d364f..aa839b53 100755 --- a/scripts/dashboard.sh +++ b/scripts/dashboard.sh @@ -19,6 +19,8 @@ echo "12) Check Updates (./scripts/check-updates.sh)" echo "13) Restore DB (./scripts/db-restore.sh)" echo "14) Maintenance Mode (./scripts/maintenance.sh)" echo "15) Doctor (./scripts/doctor.sh)" +echo "16) Setup Cron (./scripts/setup-cron.sh)" +echo "17) Send Alert (./scripts/alert.sh)" echo "q) Quit" read -p "Choice: " choice @@ -39,6 +41,8 @@ case $choice in 13) $SCRIPT_DIR/db-restore.sh ;; 14) $SCRIPT_DIR/maintenance.sh ;; 15) $SCRIPT_DIR/doctor.sh ;; + 16) $SCRIPT_DIR/setup-cron.sh ;; + 17) $SCRIPT_DIR/alert.sh ;; q) exit 0 ;; *) echo "Invalid choice" ;; esac diff --git a/scripts/setup-cron.sh b/scripts/setup-cron.sh new file mode 100755 index 00000000..71bb28e7 --- /dev/null +++ b/scripts/setup-cron.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +# Setup cron jobs for maintenance +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# Run backup every day at 03:00 +echo "0 3 * * * $SCRIPT_DIR/backup.sh" | crontab - +# Run prune every Sunday at 04:00 +echo "0 4 * * 0 $SCRIPT_DIR/docker-prune.sh" | crontab - + +echo "Cron jobs configured."