Complete restructure from patterns/examples/reference to technology-focused directories: • Created technology-specific directories with comprehensive documentation: - /tdarr/ - Transcoding automation with gaming-aware scheduling - /docker/ - Container management with GPU acceleration patterns - /vm-management/ - Virtual machine automation and cloud-init - /networking/ - SSH infrastructure, reverse proxy, and security - /monitoring/ - System health checks and Discord notifications - /databases/ - Database patterns and troubleshooting - /development/ - Programming language patterns (bash, nodejs, python, vuejs) • Enhanced CLAUDE.md with intelligent context loading: - Technology-first loading rules for automatic context provision - Troubleshooting keyword triggers for emergency scenarios - Documentation maintenance protocols with automated reminders - Context window management for optimal documentation updates • Preserved valuable content from .claude/tmp/: - SSH security improvements and server inventory - Tdarr CIFS troubleshooting and Docker iptables solutions - Operational scripts with proper technology classification • Benefits achieved: - Self-contained technology directories with complete context - Automatic loading of relevant documentation based on keywords - Emergency-ready troubleshooting with comprehensive guides - Scalable structure for future technology additions - Eliminated context bloat through targeted loading 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
136 lines
4.0 KiB
Markdown
136 lines
4.0 KiB
Markdown
# Windows Reboot Monitor Setup Instructions
|
|
|
|
This guide will help you set up Discord notifications for Windows reboots due to updates, power outages, or other events.
|
|
|
|
## Prerequisites
|
|
|
|
1. **Discord Webhook URL**: Create a webhook in your Discord server
|
|
- Go to Server Settings → Integrations → Webhooks
|
|
- Create a new webhook and copy the URL
|
|
|
|
2. **Administrator Access**: Required to set up scheduled tasks
|
|
|
|
## Installation Steps
|
|
|
|
### Step 1: Create Scripts Directory
|
|
```powershell
|
|
# Run as Administrator
|
|
New-Item -ItemType Directory -Path "C:\Scripts" -Force
|
|
```
|
|
|
|
### Step 2: Copy PowerShell Script
|
|
1. Copy `windows-reboot-monitor.ps1` to `C:\Scripts\`
|
|
2. Set execution policy (if needed):
|
|
```powershell
|
|
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
|
|
```
|
|
|
|
### Step 3: Configure Discord Webhook
|
|
Option A - Environment Variable (Recommended):
|
|
```powershell
|
|
# Set system environment variable
|
|
[Environment]::SetEnvironmentVariable("DISCORD_WEBHOOK_URL", "YOUR_WEBHOOK_URL_HERE", "Machine")
|
|
```
|
|
|
|
Option B - Direct parameter:
|
|
- Edit the Task Scheduler XML files to include your webhook URL in the arguments
|
|
|
|
### Step 4: Import Scheduled Tasks
|
|
```powershell
|
|
# Import startup monitoring task
|
|
schtasks /create /xml "C:\path\to\windows-reboot-task-startup.xml" /tn "Discord Reboot Monitor - Startup"
|
|
|
|
# Import shutdown monitoring task
|
|
schtasks /create /xml "C:\path\to\windows-reboot-task-shutdown.xml" /tn "Discord Reboot Monitor - Shutdown"
|
|
```
|
|
|
|
### Step 5: Test the Setup
|
|
```powershell
|
|
# Test startup notification
|
|
C:\Scripts\windows-reboot-monitor.ps1 -EventType "startup"
|
|
|
|
# Test shutdown notification
|
|
C:\Scripts\windows-reboot-monitor.ps1 -EventType "shutdown"
|
|
```
|
|
|
|
## What You'll Get
|
|
|
|
### Startup Notifications (Green/Red)
|
|
- **Green**: Normal startup with boot reason and uptime info
|
|
- **Red**: Unexpected restart (power loss, crash, etc.)
|
|
|
|
### Shutdown Notifications (Yellow)
|
|
- System going offline with uptime and shutdown reason
|
|
|
|
### Information Included
|
|
- Computer name
|
|
- Timestamp
|
|
- Boot/shutdown reason (Windows Update, power loss, user initiated)
|
|
- System uptime
|
|
- Startup counter
|
|
|
|
## Troubleshooting
|
|
|
|
### Check Logs
|
|
View logs at: `C:\Windows\Temp\reboot-monitor.log`
|
|
|
|
### Verify Tasks are Running
|
|
```powershell
|
|
# List scheduled tasks
|
|
Get-ScheduledTask | Where-Object {$_.TaskName -like "*Discord Reboot*"}
|
|
|
|
# Check task history
|
|
Get-WinEvent -LogName "Microsoft-Windows-TaskScheduler/Operational" | Where-Object {$_.LevelDisplayName -eq "Error"}
|
|
```
|
|
|
|
### Test Discord Webhook
|
|
```powershell
|
|
# Manual test
|
|
$webhook = "YOUR_WEBHOOK_URL"
|
|
$payload = @{content = "Test message from Windows"} | ConvertTo-Json
|
|
Invoke-RestMethod -Uri $webhook -Method Post -Body $payload -ContentType "application/json"
|
|
```
|
|
|
|
### Common Issues
|
|
|
|
1. **PowerShell Execution Policy**: Run `Set-ExecutionPolicy RemoteSigned`
|
|
2. **Network Issues**: Ensure Windows can reach Discord (discord.com)
|
|
3. **Permissions**: Run PowerShell as Administrator for setup
|
|
4. **Webhook URL**: Verify the Discord webhook URL is correct
|
|
|
|
### Event Log Monitoring
|
|
The script monitors these Windows events:
|
|
- **Event ID 1074**: System shutdown/restart
|
|
- **Event ID 6008**: Unexpected shutdown
|
|
- **Boot events**: System startup
|
|
|
|
## Security Notes
|
|
|
|
- Script runs with SYSTEM privileges for reliable monitoring
|
|
- Webhook URL is stored securely in environment variables or config
|
|
- Logs are stored in Windows temp directory
|
|
- No sensitive system information is transmitted
|
|
|
|
## Customization
|
|
|
|
Edit `windows-reboot-monitor.ps1` to:
|
|
- Change Discord message format
|
|
- Add additional system information
|
|
- Modify notification colors
|
|
- Adjust logging behavior
|
|
- Add email notifications as backup
|
|
|
|
## Uninstallation
|
|
|
|
```powershell
|
|
# Remove scheduled tasks
|
|
schtasks /delete /tn "Discord Reboot Monitor - Startup" /f
|
|
schtasks /delete /tn "Discord Reboot Monitor - Shutdown" /f
|
|
|
|
# Remove files
|
|
Remove-Item -Path "C:\Scripts\windows-reboot-monitor.ps1" -Force
|
|
Remove-Item -Path "C:\Windows\Temp\reboot-monitor.*" -Force
|
|
|
|
# Remove environment variable
|
|
[Environment]::SetEnvironmentVariable("DISCORD_WEBHOOK_URL", $null, "Machine")
|
|
``` |