docs: add comprehensive testing guide for unified installer
- Test scenario 1: Ubuntu/Debian Gateway mode with Caddy - Test scenario 2: Ubuntu/Debian Gateway mode with Nginx - Test scenario 3: macOS Node mode - Include step-by-step verification procedures - Add troubleshooting for common issues - Provide automated testing script - Include test results template
This commit is contained in:
parent
2d1bbf32cc
commit
164640ada4
710
docs/install/testing-guide.md
Normal file
710
docs/install/testing-guide.md
Normal file
@ -0,0 +1,710 @@
|
||||
---
|
||||
summary: "Step-by-step testing guide for unified installer across different platforms and modes"
|
||||
read_when:
|
||||
- You want to validate the unified installer
|
||||
- You need to test deployment scenarios
|
||||
- You're preparing for production deployment
|
||||
---
|
||||
|
||||
# Unified Installer Testing Guide
|
||||
|
||||
This guide provides detailed test scenarios for validating the unified installer (`scripts/init.sh`) across different platforms and deployment modes.
|
||||
|
||||
## Test Environment Requirements
|
||||
|
||||
### Ubuntu/Debian Test Environment
|
||||
|
||||
**Recommended Setup**:
|
||||
- Fresh Ubuntu 22.04 LTS or Debian 12 VM/container
|
||||
- Minimum 2GB RAM, 2 vCPU
|
||||
- Root/sudo access
|
||||
- Public IP or domain name (for gateway mode with real TLS)
|
||||
|
||||
**Quick VM Setup Options**:
|
||||
```bash
|
||||
# Option 1: Multipass (macOS/Linux/Windows)
|
||||
multipass launch --name moltbot-test --cpus 2 --memory 2G --disk 10G 22.04
|
||||
multipass shell moltbot-test
|
||||
|
||||
# Option 2: Docker (for testing, not production)
|
||||
docker run -it --rm -p 80:80 -p 443:443 -p 18789:18789 ubuntu:22.04 bash
|
||||
apt-get update && apt-get install -y sudo curl
|
||||
|
||||
# Option 3: Cloud provider (DigitalOcean, Linode, etc.)
|
||||
# Create a $5/month droplet with Ubuntu 22.04
|
||||
```
|
||||
|
||||
### macOS Test Environment
|
||||
|
||||
**Requirements**:
|
||||
- macOS 12+ (Monterey or later)
|
||||
- Homebrew installed
|
||||
- Terminal access
|
||||
|
||||
**Homebrew Installation** (if needed):
|
||||
```bash
|
||||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
```
|
||||
|
||||
## Test Scenario 1: Ubuntu/Debian Gateway Mode (Caddy)
|
||||
|
||||
### Prerequisites
|
||||
|
||||
1. **Fresh Ubuntu/Debian system**
|
||||
2. **Domain name** pointing to the server's IP
|
||||
3. **Ports 80/443** accessible from the internet
|
||||
|
||||
### Test Steps
|
||||
|
||||
#### Step 1: Download the Installer
|
||||
|
||||
```bash
|
||||
# SSH into your Ubuntu/Debian server
|
||||
ssh user@your-server-ip
|
||||
|
||||
# Clone the repository (or download the script)
|
||||
git clone https://github.com/cloud-neutral-toolkit/clawdbot.svc.plus.git
|
||||
cd clawdbot.svc.plus
|
||||
|
||||
# Or download the script directly
|
||||
# curl -fsSL https://raw.githubusercontent.com/cloud-neutral-toolkit/clawdbot.svc.plus/main/scripts/init.sh -o init.sh
|
||||
# chmod +x init.sh
|
||||
```
|
||||
|
||||
#### Step 2: Run the Installer
|
||||
|
||||
```bash
|
||||
# Replace with your actual domain
|
||||
DOMAIN="moltbot.example.com"
|
||||
|
||||
# Run installer in gateway mode with Caddy (default)
|
||||
sudo ./scripts/init.sh "$DOMAIN"
|
||||
```
|
||||
|
||||
#### Step 3: Monitor Installation
|
||||
|
||||
**Expected Output**:
|
||||
```
|
||||
==> Moltbot Installer
|
||||
Mode: gateway
|
||||
Domain: moltbot.example.com
|
||||
OS: linux (ubuntu)
|
||||
Proxy: caddy
|
||||
|
||||
[Installing packages...]
|
||||
[Installing Node.js 24...]
|
||||
[Installing pnpm...]
|
||||
[Configuring firewall...]
|
||||
[Installing Moltbot...]
|
||||
[Configuring Moltbot...]
|
||||
[Configuring Caddy...]
|
||||
[Running health checks...]
|
||||
|
||||
✅ Done.
|
||||
|
||||
Gateway is listening on http://127.0.0.1:18789 and proxied via https://moltbot.example.com.
|
||||
Access control and TLS are handled by CADDY.
|
||||
```
|
||||
|
||||
#### Step 4: Verify Installation
|
||||
|
||||
**Check Services**:
|
||||
```bash
|
||||
# Check Caddy status
|
||||
sudo systemctl status caddy
|
||||
|
||||
# Check Moltbot status
|
||||
systemctl --user status clawdbot-gateway
|
||||
|
||||
# Check Node.js version
|
||||
node --version # Should be v24.x.x
|
||||
```
|
||||
|
||||
**Check Firewall**:
|
||||
```bash
|
||||
sudo ufw status verbose
|
||||
|
||||
# Expected output:
|
||||
# Status: active
|
||||
# To Action From
|
||||
# -- ------ ----
|
||||
# 22/tcp ALLOW Anywhere
|
||||
# 80/tcp ALLOW Anywhere
|
||||
# 443/tcp ALLOW Anywhere
|
||||
# 18789/tcp ALLOW Anywhere
|
||||
```
|
||||
|
||||
**Check Caddy Configuration**:
|
||||
```bash
|
||||
cat /etc/caddy/Caddyfile
|
||||
|
||||
# Expected output:
|
||||
# moltbot.example.com {
|
||||
# reverse_proxy 127.0.0.1:18789
|
||||
# }
|
||||
```
|
||||
|
||||
**Test Local Gateway**:
|
||||
```bash
|
||||
curl -I http://127.0.0.1:18789
|
||||
|
||||
# Expected: HTTP/1.1 200 OK or 302 redirect
|
||||
```
|
||||
|
||||
**Test Public HTTPS**:
|
||||
```bash
|
||||
curl -I https://moltbot.example.com
|
||||
|
||||
# Expected: HTTP/2 200 OK (with valid TLS certificate)
|
||||
```
|
||||
|
||||
**Check TLS Certificate**:
|
||||
```bash
|
||||
echo | openssl s_client -connect moltbot.example.com:443 -servername moltbot.example.com 2>/dev/null | openssl x509 -noout -dates
|
||||
|
||||
# Expected output showing valid certificate dates
|
||||
```
|
||||
|
||||
#### Step 5: Test Moltbot Functionality
|
||||
|
||||
**Access Web Interface**:
|
||||
```bash
|
||||
# Open in browser
|
||||
https://moltbot.example.com
|
||||
```
|
||||
|
||||
**Check Logs**:
|
||||
```bash
|
||||
# Moltbot logs
|
||||
journalctl --user -u clawdbot-gateway -n 50 --no-pager
|
||||
|
||||
# Caddy logs
|
||||
sudo journalctl -u caddy -n 50 --no-pager
|
||||
```
|
||||
|
||||
### Expected Results
|
||||
|
||||
✅ **Success Criteria**:
|
||||
- [ ] Caddy service running and enabled
|
||||
- [ ] Moltbot gateway service running
|
||||
- [ ] Node.js 24+ installed
|
||||
- [ ] UFW firewall configured with correct rules
|
||||
- [ ] TLS certificate obtained automatically
|
||||
- [ ] HTTPS endpoint accessible from public internet
|
||||
- [ ] HTTP redirects to HTTPS
|
||||
- [ ] Moltbot web interface loads successfully
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
**Issue**: TLS certificate not obtained
|
||||
|
||||
**Solution**:
|
||||
```bash
|
||||
# Check Caddy logs for ACME errors
|
||||
sudo journalctl -u caddy -f
|
||||
|
||||
# Verify DNS is correct
|
||||
dig +short moltbot.example.com
|
||||
|
||||
# Manually trigger certificate
|
||||
sudo systemctl restart caddy
|
||||
```
|
||||
|
||||
**Issue**: Firewall blocking access
|
||||
|
||||
**Solution**:
|
||||
```bash
|
||||
# Check UFW status
|
||||
sudo ufw status verbose
|
||||
|
||||
# Manually allow ports if needed
|
||||
sudo ufw allow 80/tcp
|
||||
sudo ufw allow 443/tcp
|
||||
sudo ufw reload
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Test Scenario 2: Ubuntu/Debian Gateway Mode (Nginx)
|
||||
|
||||
### Prerequisites
|
||||
|
||||
Same as Scenario 1, plus:
|
||||
- **Email address** for Certbot notifications
|
||||
|
||||
### Test Steps
|
||||
|
||||
#### Step 1: Download the Installer
|
||||
|
||||
Same as Scenario 1.
|
||||
|
||||
#### Step 2: Run the Installer with Nginx
|
||||
|
||||
```bash
|
||||
DOMAIN="moltbot.example.com"
|
||||
EMAIL="admin@example.com"
|
||||
|
||||
# Run installer with Nginx proxy
|
||||
PROXY=nginx CERTBOT_EMAIL="$EMAIL" sudo ./scripts/init.sh "$DOMAIN"
|
||||
```
|
||||
|
||||
#### Step 3: Monitor Installation
|
||||
|
||||
**Expected Output**:
|
||||
```
|
||||
==> Moltbot Installer
|
||||
Mode: gateway
|
||||
Domain: moltbot.example.com
|
||||
OS: linux (ubuntu)
|
||||
Proxy: nginx
|
||||
|
||||
[Installing packages including nginx, certbot...]
|
||||
[Installing Node.js 24...]
|
||||
[Installing pnpm...]
|
||||
[Configuring firewall...]
|
||||
[Installing Moltbot...]
|
||||
[Configuring Moltbot...]
|
||||
[Configuring Nginx...]
|
||||
[Running Certbot...]
|
||||
|
||||
Saving debug log to /var/log/letsencrypt/letsencrypt.log
|
||||
Requesting a certificate for moltbot.example.com
|
||||
Successfully received certificate.
|
||||
Certificate is saved at: /etc/letsencrypt/live/moltbot.example.com/fullchain.pem
|
||||
Key is saved at: /etc/letsencrypt/live/moltbot.example.com/privkey.pem
|
||||
|
||||
✅ Done.
|
||||
|
||||
Gateway is listening on http://127.0.0.1:18789 and proxied via https://moltbot.example.com.
|
||||
Access control and TLS are handled by NGINX.
|
||||
```
|
||||
|
||||
#### Step 4: Verify Installation
|
||||
|
||||
**Check Services**:
|
||||
```bash
|
||||
# Check Nginx status
|
||||
sudo systemctl status nginx
|
||||
|
||||
# Check Moltbot status
|
||||
systemctl --user status clawdbot-gateway
|
||||
```
|
||||
|
||||
**Check Nginx Configuration**:
|
||||
```bash
|
||||
cat /etc/nginx/sites-available/clawdbot-moltbot.example.com.conf
|
||||
|
||||
# Verify it's enabled
|
||||
ls -l /etc/nginx/sites-enabled/
|
||||
```
|
||||
|
||||
**Test Nginx Configuration**:
|
||||
```bash
|
||||
sudo nginx -t
|
||||
|
||||
# Expected: syntax is ok, test is successful
|
||||
```
|
||||
|
||||
**Check Certbot Certificate**:
|
||||
```bash
|
||||
sudo certbot certificates
|
||||
|
||||
# Expected output showing certificate for moltbot.example.com
|
||||
```
|
||||
|
||||
**Test HTTPS**:
|
||||
```bash
|
||||
curl -I https://moltbot.example.com
|
||||
|
||||
# Expected: HTTP/1.1 200 OK (or 302)
|
||||
```
|
||||
|
||||
**Test HTTP to HTTPS Redirect**:
|
||||
```bash
|
||||
curl -I http://moltbot.example.com
|
||||
|
||||
# Expected: HTTP/1.1 301 Moved Permanently
|
||||
# Location: https://moltbot.example.com/
|
||||
```
|
||||
|
||||
#### Step 5: Test Certificate Auto-Renewal
|
||||
|
||||
```bash
|
||||
# Dry-run renewal
|
||||
sudo certbot renew --dry-run
|
||||
|
||||
# Expected: Congratulations, all simulated renewals succeeded
|
||||
```
|
||||
|
||||
### Expected Results
|
||||
|
||||
✅ **Success Criteria**:
|
||||
- [ ] Nginx service running and enabled
|
||||
- [ ] Moltbot gateway service running
|
||||
- [ ] Certbot certificate obtained successfully
|
||||
- [ ] HTTP to HTTPS redirect working
|
||||
- [ ] Certificate auto-renewal configured
|
||||
- [ ] Nginx configuration valid
|
||||
- [ ] Public HTTPS endpoint accessible
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
**Issue**: Certbot fails with "Connection refused"
|
||||
|
||||
**Solution**:
|
||||
```bash
|
||||
# Ensure Nginx is serving HTTP first
|
||||
curl -I http://moltbot.example.com
|
||||
|
||||
# Check Nginx error logs
|
||||
sudo tail -f /var/log/nginx/error.log
|
||||
|
||||
# Manually run Certbot with verbose output
|
||||
sudo certbot --nginx -d moltbot.example.com --email admin@example.com --agree-tos -v
|
||||
```
|
||||
|
||||
**Issue**: Nginx configuration error
|
||||
|
||||
**Solution**:
|
||||
```bash
|
||||
# Test configuration
|
||||
sudo nginx -t
|
||||
|
||||
# Check syntax errors in config file
|
||||
sudo cat /etc/nginx/sites-available/clawdbot-moltbot.example.com.conf
|
||||
|
||||
# Reload Nginx
|
||||
sudo systemctl reload nginx
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Test Scenario 3: macOS Node Mode
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- macOS 12+ (Monterey or later)
|
||||
- Homebrew installed
|
||||
- Terminal access
|
||||
- **No domain required** (local deployment)
|
||||
|
||||
### Test Steps
|
||||
|
||||
#### Step 1: Download the Installer
|
||||
|
||||
```bash
|
||||
# Clone the repository
|
||||
git clone https://github.com/cloud-neutral-toolkit/clawdbot.svc.plus.git
|
||||
cd clawdbot.svc.plus
|
||||
|
||||
# Or download the script
|
||||
# curl -fsSL https://raw.githubusercontent.com/cloud-neutral-toolkit/clawdbot.svc.plus/main/scripts/init.sh -o init.sh
|
||||
# chmod +x init.sh
|
||||
```
|
||||
|
||||
#### Step 2: Run the Installer in Node Mode
|
||||
|
||||
```bash
|
||||
# Run installer in node mode (no proxy)
|
||||
MODE=node ./scripts/init.sh localhost
|
||||
```
|
||||
|
||||
#### Step 3: Monitor Installation
|
||||
|
||||
**Expected Output**:
|
||||
```
|
||||
==> Moltbot Installer
|
||||
Mode: node
|
||||
Domain: localhost
|
||||
OS: darwin (N/A)
|
||||
|
||||
[Installing packages: git, curl...]
|
||||
[Installing Node.js 24...]
|
||||
[Installing pnpm...]
|
||||
[Installing Moltbot...]
|
||||
[Configuring Moltbot...]
|
||||
[Running health checks...]
|
||||
|
||||
✅ Done.
|
||||
|
||||
Moltbot is running in node mode (no proxy).
|
||||
Gateway is listening on http://127.0.0.1:18789.
|
||||
|
||||
Configuration:
|
||||
- View config: `clawdbot config get gateway.trustedProxies`
|
||||
- View logs: `tail -f /tmp/clawdbot/clawdbot-gateway.log`
|
||||
```
|
||||
|
||||
#### Step 4: Verify Installation
|
||||
|
||||
**Check Node.js Version**:
|
||||
```bash
|
||||
node --version
|
||||
|
||||
# Expected: v24.x.x
|
||||
```
|
||||
|
||||
**Check pnpm**:
|
||||
```bash
|
||||
pnpm --version
|
||||
|
||||
# Expected: 9.x.x or later
|
||||
```
|
||||
|
||||
**Check Moltbot Installation**:
|
||||
```bash
|
||||
which clawdbot
|
||||
|
||||
# Expected: /usr/local/bin/clawdbot or similar
|
||||
```
|
||||
|
||||
**Check Moltbot Version**:
|
||||
```bash
|
||||
clawdbot --version
|
||||
|
||||
# Expected: version number
|
||||
```
|
||||
|
||||
**Test Local Gateway**:
|
||||
```bash
|
||||
curl -I http://127.0.0.1:18789
|
||||
|
||||
# Expected: HTTP/1.1 200 OK or 302
|
||||
```
|
||||
|
||||
**Check Moltbot Process**:
|
||||
```bash
|
||||
ps aux | grep clawdbot
|
||||
|
||||
# Expected: clawdbot-gateway process running
|
||||
```
|
||||
|
||||
#### Step 5: Test Moltbot Functionality
|
||||
|
||||
**Access Web Interface**:
|
||||
```bash
|
||||
# Open in browser
|
||||
open http://127.0.0.1:18789
|
||||
```
|
||||
|
||||
**Check Logs**:
|
||||
```bash
|
||||
tail -f /tmp/clawdbot/clawdbot-gateway.log
|
||||
```
|
||||
|
||||
**Test Configuration**:
|
||||
```bash
|
||||
# View all config
|
||||
clawdbot config get
|
||||
|
||||
# View specific config
|
||||
clawdbot config get gateway
|
||||
```
|
||||
|
||||
**Test Restart**:
|
||||
```bash
|
||||
# Restart Moltbot
|
||||
clawdbot restart
|
||||
|
||||
# Wait a few seconds
|
||||
sleep 5
|
||||
|
||||
# Verify it's running
|
||||
curl -I http://127.0.0.1:18789
|
||||
```
|
||||
|
||||
### Expected Results
|
||||
|
||||
✅ **Success Criteria**:
|
||||
- [ ] Node.js 24+ installed via Homebrew
|
||||
- [ ] pnpm installed and configured
|
||||
- [ ] Moltbot installed globally
|
||||
- [ ] Gateway service running on port 18789
|
||||
- [ ] Web interface accessible at http://127.0.0.1:18789
|
||||
- [ ] Logs available in /tmp/clawdbot/
|
||||
- [ ] No proxy configured (direct access only)
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
**Issue**: Node.js not found after installation
|
||||
|
||||
**Solution**:
|
||||
```bash
|
||||
# Check Homebrew installation
|
||||
brew list node@24
|
||||
|
||||
# Link Node.js 24
|
||||
brew link --overwrite --force node@24
|
||||
|
||||
# Verify PATH
|
||||
echo $PATH | grep -o '/usr/local/bin'
|
||||
|
||||
# Restart terminal and try again
|
||||
```
|
||||
|
||||
**Issue**: Port 18789 already in use
|
||||
|
||||
**Solution**:
|
||||
```bash
|
||||
# Check what's using the port
|
||||
lsof -i :18789
|
||||
|
||||
# Kill the process if needed
|
||||
kill -9 <PID>
|
||||
|
||||
# Or configure Moltbot to use a different port
|
||||
clawdbot config set gateway.port 18790
|
||||
clawdbot restart
|
||||
```
|
||||
|
||||
**Issue**: Permission denied errors
|
||||
|
||||
**Solution**:
|
||||
```bash
|
||||
# Check file permissions
|
||||
ls -la /tmp/clawdbot/
|
||||
|
||||
# Fix permissions if needed
|
||||
chmod -R u+rw /tmp/clawdbot/
|
||||
|
||||
# Restart Moltbot
|
||||
clawdbot restart
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Automated Testing Script
|
||||
|
||||
For CI/CD or repeated testing, use this automated test script:
|
||||
|
||||
```bash
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# test-installer.sh - Automated installer testing
|
||||
|
||||
MODE="${1:-gateway}"
|
||||
PROXY="${2:-caddy}"
|
||||
DOMAIN="${3:-test.local}"
|
||||
|
||||
echo "==> Testing Installer"
|
||||
echo " Mode: $MODE"
|
||||
echo " Proxy: $PROXY"
|
||||
echo " Domain: $DOMAIN"
|
||||
echo ""
|
||||
|
||||
# Run installer
|
||||
if [[ "$MODE" == "gateway" ]]; then
|
||||
PROXY="$PROXY" ./scripts/init.sh "$DOMAIN"
|
||||
else
|
||||
MODE=node ./scripts/init.sh "$DOMAIN"
|
||||
fi
|
||||
|
||||
# Wait for services to start
|
||||
sleep 10
|
||||
|
||||
# Test local gateway
|
||||
echo "==> Testing local gateway..."
|
||||
if curl -fsS --max-time 10 http://127.0.0.1:18789 >/dev/null; then
|
||||
echo "✅ Local gateway is accessible"
|
||||
else
|
||||
echo "❌ Local gateway is NOT accessible"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Test public endpoint (gateway mode only)
|
||||
if [[ "$MODE" == "gateway" ]]; then
|
||||
echo "==> Testing public endpoint..."
|
||||
if curl -fsS --max-time 10 "https://$DOMAIN" >/dev/null; then
|
||||
echo "✅ Public HTTPS endpoint is accessible"
|
||||
else
|
||||
echo "⚠️ Public HTTPS endpoint is NOT accessible (may need time for TLS)"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "✅ All tests passed!"
|
||||
```
|
||||
|
||||
**Usage**:
|
||||
```bash
|
||||
# Test Ubuntu/Debian Gateway + Caddy
|
||||
./test-installer.sh gateway caddy moltbot.example.com
|
||||
|
||||
# Test Ubuntu/Debian Gateway + Nginx
|
||||
./test-installer.sh gateway nginx moltbot.example.com
|
||||
|
||||
# Test macOS Node mode
|
||||
./test-installer.sh node caddy localhost
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Test Results Template
|
||||
|
||||
Use this template to document your test results:
|
||||
|
||||
```markdown
|
||||
## Test Results
|
||||
|
||||
**Date**: YYYY-MM-DD
|
||||
**Tester**: Your Name
|
||||
**Environment**: Ubuntu 22.04 / Debian 12 / macOS 13
|
||||
|
||||
### Scenario 1: Ubuntu/Debian Gateway (Caddy)
|
||||
- [ ] Installation completed successfully
|
||||
- [ ] Caddy service running
|
||||
- [ ] TLS certificate obtained
|
||||
- [ ] Public HTTPS accessible
|
||||
- [ ] Logs available
|
||||
- **Notes**:
|
||||
|
||||
### Scenario 2: Ubuntu/Debian Gateway (Nginx)
|
||||
- [ ] Installation completed successfully
|
||||
- [ ] Nginx service running
|
||||
- [ ] Certbot certificate obtained
|
||||
- [ ] HTTP to HTTPS redirect working
|
||||
- [ ] Auto-renewal configured
|
||||
- **Notes**:
|
||||
|
||||
### Scenario 3: macOS Node Mode
|
||||
- [ ] Installation completed successfully
|
||||
- [ ] Node.js 24 installed
|
||||
- [ ] Gateway accessible locally
|
||||
- [ ] No proxy configured
|
||||
- [ ] Logs available
|
||||
- **Notes**:
|
||||
|
||||
### Issues Encountered
|
||||
1.
|
||||
2.
|
||||
|
||||
### Recommendations
|
||||
1.
|
||||
2.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Next Steps After Testing
|
||||
|
||||
1. **Document any issues** found during testing
|
||||
2. **Update the installer** if bugs are discovered
|
||||
3. **Add edge case handling** based on test results
|
||||
4. **Create automated tests** for CI/CD pipeline
|
||||
5. **Update documentation** with real-world examples
|
||||
|
||||
## Contributing Test Results
|
||||
|
||||
If you encounter issues or have suggestions, please:
|
||||
|
||||
1. Open an issue on GitHub with test results
|
||||
2. Include full logs and error messages
|
||||
3. Specify OS version and environment details
|
||||
4. Provide steps to reproduce
|
||||
|
||||
---
|
||||
|
||||
**Last Updated**: 2026-01-29
|
||||
**Tested Platforms**: Ubuntu 22.04, Debian 12, macOS 13
|
||||
**Installer Version**: v1.0.0 (unified)
|
||||
Loading…
Reference in New Issue
Block a user