install script update
Some checks are pending
CI Pipeline / Run Tests (push) Waiting to run
CI Pipeline / Lint Code (push) Waiting to run
CI Pipeline / Security Scan (push) Waiting to run
CI Pipeline / Build Docker Images (push) Blocked by required conditions
CI Pipeline / E2E Tests (push) Blocked by required conditions
Some checks are pending
CI Pipeline / Run Tests (push) Waiting to run
CI Pipeline / Lint Code (push) Waiting to run
CI Pipeline / Security Scan (push) Waiting to run
CI Pipeline / Build Docker Images (push) Blocked by required conditions
CI Pipeline / E2E Tests (push) Blocked by required conditions
This commit is contained in:
parent
b6fb938a02
commit
639041abc5
339
INSTALL.md
Normal file
339
INSTALL.md
Normal file
@ -0,0 +1,339 @@
|
|||||||
|
# Torrent Gateway Installation Guide
|
||||||
|
|
||||||
|
This guide covers complete installation and setup of the Torrent Gateway on a fresh server.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
- Ubuntu/Debian Linux server with root access
|
||||||
|
- 2GB+ RAM (4GB recommended for transcoding)
|
||||||
|
- 20GB+ disk space
|
||||||
|
- Open ports 80, 443 (for web access)
|
||||||
|
- Optional: Domain name pointed to server IP
|
||||||
|
|
||||||
|
## Quick Installation
|
||||||
|
|
||||||
|
### Basic Installation (HTTP only)
|
||||||
|
```bash
|
||||||
|
sudo ./scripts/install_native.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Full Installation with SSL/HTTPS
|
||||||
|
```bash
|
||||||
|
sudo ./scripts/install_native.sh --domain gateway.example.com --email admin@example.com
|
||||||
|
```
|
||||||
|
|
||||||
|
### With Monitoring Stack
|
||||||
|
```bash
|
||||||
|
sudo ./scripts/install_native.sh --domain gateway.example.com --email admin@example.com --with-monitoring
|
||||||
|
```
|
||||||
|
|
||||||
|
## Installation Options
|
||||||
|
|
||||||
|
| Option | Description |
|
||||||
|
|--------|-------------|
|
||||||
|
| `--domain DOMAIN` | Your domain name (e.g., gateway.example.com) |
|
||||||
|
| `--email EMAIL` | Email for SSL certificate notifications |
|
||||||
|
| `--skip-ssl` | Skip SSL setup (HTTP only, even with domain) |
|
||||||
|
| `--with-monitoring` | Install Prometheus & Grafana monitoring |
|
||||||
|
| `--skip-build` | Use existing binary (for reinstalls) |
|
||||||
|
| `--help` | Show all options |
|
||||||
|
|
||||||
|
## Domain Setup Instructions
|
||||||
|
|
||||||
|
### 1. Configure DNS
|
||||||
|
Before running the install script with `--domain`, set up your DNS:
|
||||||
|
|
||||||
|
**For subdomain (recommended):**
|
||||||
|
- Type: `A`
|
||||||
|
- Name: `gateway` (or your preferred subdomain)
|
||||||
|
- Value: `YOUR_SERVER_IP`
|
||||||
|
- TTL: `300` (5 minutes)
|
||||||
|
|
||||||
|
**For root domain:**
|
||||||
|
- Type: `A`
|
||||||
|
- Name: `@`
|
||||||
|
- Value: `YOUR_SERVER_IP`
|
||||||
|
- TTL: `300`
|
||||||
|
|
||||||
|
### 2. Verify DNS Propagation
|
||||||
|
```bash
|
||||||
|
# Check if your domain points to the server
|
||||||
|
dig +short gateway.example.com
|
||||||
|
nslookup gateway.example.com
|
||||||
|
|
||||||
|
# Should return your server's IP address
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Install with Domain
|
||||||
|
```bash
|
||||||
|
sudo ./scripts/install_native.sh --domain gateway.example.com --email your@email.com
|
||||||
|
```
|
||||||
|
|
||||||
|
The installer will:
|
||||||
|
- Configure nginx reverse proxy
|
||||||
|
- Obtain SSL certificate via Let's Encrypt
|
||||||
|
- Set up automatic certificate renewal
|
||||||
|
- Configure HTTPS redirects
|
||||||
|
|
||||||
|
## What Gets Installed
|
||||||
|
|
||||||
|
### System Packages
|
||||||
|
- `golang-go` - Go compiler
|
||||||
|
- `nginx` - Web server/reverse proxy
|
||||||
|
- `certbot` - SSL certificate management
|
||||||
|
- `redis-server` - Caching layer
|
||||||
|
- `sqlite3` - Database
|
||||||
|
- `ffmpeg` - Video transcoding
|
||||||
|
- Various utilities (curl, jq, bc, htop, etc.)
|
||||||
|
|
||||||
|
### Directory Structure
|
||||||
|
```
|
||||||
|
/opt/torrent-gateway/
|
||||||
|
├── bin/gateway # Main binary
|
||||||
|
├── configs/ # Configuration files
|
||||||
|
├── data/ # Application data
|
||||||
|
│ ├── blobs/ # Small file storage
|
||||||
|
│ ├── chunks/ # Chunked file pieces
|
||||||
|
│ └── metadata.db # SQLite database
|
||||||
|
├── logs/ # Application logs
|
||||||
|
├── scripts/ # Management scripts
|
||||||
|
└── backups/ # Automated backups
|
||||||
|
```
|
||||||
|
|
||||||
|
### Services Created
|
||||||
|
- `torrent-gateway` - Main application service
|
||||||
|
- `nginx` - Web server (configured as reverse proxy)
|
||||||
|
- `redis-server` - Caching service
|
||||||
|
- `prometheus` - Metrics collection (optional)
|
||||||
|
- `grafana-server` - Metrics dashboard (optional)
|
||||||
|
|
||||||
|
## Post-Installation
|
||||||
|
|
||||||
|
### 1. Verify Installation
|
||||||
|
```bash
|
||||||
|
# Check service status
|
||||||
|
sudo systemctl status torrent-gateway
|
||||||
|
sudo systemctl status nginx
|
||||||
|
|
||||||
|
# Run health checks
|
||||||
|
sudo /opt/torrent-gateway/scripts/health_check.sh
|
||||||
|
|
||||||
|
# Test web access
|
||||||
|
curl http://localhost/api/health
|
||||||
|
# or with domain:
|
||||||
|
curl https://gateway.example.com/api/health
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Access Web Interface
|
||||||
|
- **With domain:** https://gateway.example.com
|
||||||
|
- **Without domain:** http://YOUR_SERVER_IP
|
||||||
|
- **Admin panel:** https://gateway.example.com/admin
|
||||||
|
- **API:** https://gateway.example.com/api/
|
||||||
|
|
||||||
|
### 3. Monitoring (if installed)
|
||||||
|
- **Prometheus:** http://localhost:9090
|
||||||
|
- **Grafana:** http://localhost:3000 (admin/admin)
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
### Main Config
|
||||||
|
Edit `/opt/torrent-gateway/configs/config.yaml` and restart:
|
||||||
|
```bash
|
||||||
|
sudo nano /opt/torrent-gateway/configs/config.yaml
|
||||||
|
sudo systemctl restart torrent-gateway
|
||||||
|
```
|
||||||
|
|
||||||
|
### Nginx Config
|
||||||
|
For custom nginx settings:
|
||||||
|
```bash
|
||||||
|
sudo nano /etc/nginx/sites-available/torrent-gateway
|
||||||
|
sudo nginx -t
|
||||||
|
sudo systemctl restart nginx
|
||||||
|
```
|
||||||
|
|
||||||
|
## Management Commands
|
||||||
|
|
||||||
|
### Service Management
|
||||||
|
```bash
|
||||||
|
# Start/stop/restart
|
||||||
|
sudo systemctl start torrent-gateway
|
||||||
|
sudo systemctl stop torrent-gateway
|
||||||
|
sudo systemctl restart torrent-gateway
|
||||||
|
|
||||||
|
# View logs
|
||||||
|
sudo journalctl -u torrent-gateway -f
|
||||||
|
sudo tail -f /var/log/nginx/error.log
|
||||||
|
```
|
||||||
|
|
||||||
|
### SSL Certificate Management
|
||||||
|
```bash
|
||||||
|
# Check certificate status
|
||||||
|
sudo certbot certificates
|
||||||
|
|
||||||
|
# Renew certificates manually
|
||||||
|
sudo certbot renew
|
||||||
|
|
||||||
|
# Test renewal process
|
||||||
|
sudo certbot renew --dry-run
|
||||||
|
```
|
||||||
|
|
||||||
|
### Backup & Restore
|
||||||
|
```bash
|
||||||
|
# Create backup
|
||||||
|
sudo /opt/torrent-gateway/scripts/backup.sh
|
||||||
|
|
||||||
|
# List backups
|
||||||
|
ls -la /opt/torrent-gateway/backups/
|
||||||
|
|
||||||
|
# Restore from backup
|
||||||
|
sudo /opt/torrent-gateway/scripts/restore.sh TIMESTAMP
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Common Issues
|
||||||
|
|
||||||
|
**SSL Certificate Failed:**
|
||||||
|
```bash
|
||||||
|
# Check DNS propagation
|
||||||
|
dig +short gateway.example.com
|
||||||
|
|
||||||
|
# Check firewall
|
||||||
|
sudo ufw status
|
||||||
|
sudo ufw allow 80/tcp
|
||||||
|
sudo ufw allow 443/tcp
|
||||||
|
|
||||||
|
# Manually get certificate
|
||||||
|
sudo certbot --nginx -d gateway.example.com
|
||||||
|
```
|
||||||
|
|
||||||
|
**Service Won't Start:**
|
||||||
|
```bash
|
||||||
|
# Check logs
|
||||||
|
sudo journalctl -u torrent-gateway -n 50
|
||||||
|
|
||||||
|
# Check config syntax
|
||||||
|
/opt/torrent-gateway/bin/gateway -config /opt/torrent-gateway/configs/config.yaml -check
|
||||||
|
|
||||||
|
# Check permissions
|
||||||
|
sudo chown -R torrent-gateway:torrent-gateway /opt/torrent-gateway/data
|
||||||
|
```
|
||||||
|
|
||||||
|
**Web Interface Not Loading:**
|
||||||
|
```bash
|
||||||
|
# Check nginx
|
||||||
|
sudo nginx -t
|
||||||
|
sudo systemctl status nginx
|
||||||
|
|
||||||
|
# Check proxy connection
|
||||||
|
curl http://localhost:9877/api/health
|
||||||
|
```
|
||||||
|
|
||||||
|
### Log Locations
|
||||||
|
- Application logs: `journalctl -u torrent-gateway`
|
||||||
|
- Nginx logs: `/var/log/nginx/`
|
||||||
|
- SSL logs: `/var/log/letsencrypt/`
|
||||||
|
- System logs: `/var/log/syslog`
|
||||||
|
|
||||||
|
## Firewall Configuration
|
||||||
|
|
||||||
|
The installer configures UFW with these rules:
|
||||||
|
- Port 22 (SSH)
|
||||||
|
- Port 80 (HTTP)
|
||||||
|
- Port 443 (HTTPS)
|
||||||
|
- Monitoring ports (localhost only)
|
||||||
|
|
||||||
|
### Manual Firewall Setup
|
||||||
|
```bash
|
||||||
|
sudo ufw allow ssh
|
||||||
|
sudo ufw allow 80/tcp
|
||||||
|
sudo ufw allow 443/tcp
|
||||||
|
sudo ufw enable
|
||||||
|
```
|
||||||
|
|
||||||
|
## Security Features
|
||||||
|
|
||||||
|
- Dedicated service user (non-root)
|
||||||
|
- Systemd security hardening
|
||||||
|
- Rate limiting for uploads/downloads
|
||||||
|
- SSL/TLS encryption (when domain configured)
|
||||||
|
- Security headers via nginx
|
||||||
|
- Firewall configuration
|
||||||
|
- Log rotation and cleanup
|
||||||
|
|
||||||
|
## Performance Tuning
|
||||||
|
|
||||||
|
### For High Traffic
|
||||||
|
Edit `/opt/torrent-gateway/configs/config.yaml`:
|
||||||
|
```yaml
|
||||||
|
rate_limiting:
|
||||||
|
download:
|
||||||
|
requests_per_second: 100.0
|
||||||
|
burst_size: 200
|
||||||
|
|
||||||
|
transcoding:
|
||||||
|
concurrent_jobs: 4 # Adjust based on CPU cores
|
||||||
|
```
|
||||||
|
|
||||||
|
### For Large Files
|
||||||
|
Edit `/etc/nginx/sites-available/torrent-gateway`:
|
||||||
|
```nginx
|
||||||
|
client_max_body_size 50G; # Increase as needed
|
||||||
|
proxy_read_timeout 600s; # For large uploads
|
||||||
|
```
|
||||||
|
|
||||||
|
## Monitoring & Maintenance
|
||||||
|
|
||||||
|
### Automated Tasks
|
||||||
|
The installer sets up cron jobs for:
|
||||||
|
- Daily backups (2 AM)
|
||||||
|
- Database maintenance (3 AM)
|
||||||
|
- Health checks (every 5 minutes)
|
||||||
|
- Log cleanup (weekly)
|
||||||
|
|
||||||
|
### Manual Maintenance
|
||||||
|
```bash
|
||||||
|
# Check disk usage
|
||||||
|
df -h /opt/torrent-gateway/
|
||||||
|
|
||||||
|
# Clean old files
|
||||||
|
sudo /opt/torrent-gateway/scripts/cleanup.sh
|
||||||
|
|
||||||
|
# Update application
|
||||||
|
cd /path/to/source
|
||||||
|
git pull
|
||||||
|
sudo ./scripts/install_native.sh --skip-build=false
|
||||||
|
```
|
||||||
|
|
||||||
|
## Uninstalling
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Stop services
|
||||||
|
sudo systemctl stop torrent-gateway nginx
|
||||||
|
sudo systemctl disable torrent-gateway
|
||||||
|
|
||||||
|
# Remove files (WARNING: This deletes all data!)
|
||||||
|
sudo rm -rf /opt/torrent-gateway
|
||||||
|
sudo rm /etc/systemd/system/torrent-gateway.service
|
||||||
|
sudo rm /etc/nginx/sites-available/torrent-gateway
|
||||||
|
sudo rm /etc/nginx/sites-enabled/torrent-gateway
|
||||||
|
|
||||||
|
# Remove user
|
||||||
|
sudo userdel torrent-gateway
|
||||||
|
|
||||||
|
# Remove packages (optional)
|
||||||
|
sudo apt remove golang-go nginx certbot python3-certbot-nginx
|
||||||
|
|
||||||
|
# Clean systemd
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
```
|
||||||
|
|
||||||
|
## Support
|
||||||
|
|
||||||
|
For issues, check:
|
||||||
|
1. This installation guide
|
||||||
|
2. `/docs/troubleshooting.md`
|
||||||
|
3. System logs and service status
|
||||||
|
4. GitHub issues for known problems
|
||||||
|
|
||||||
|
Installation complete! Your Torrent Gateway should now be running and accessible.
|
@ -21,6 +21,9 @@ fi
|
|||||||
# Parse arguments
|
# Parse arguments
|
||||||
ENABLE_MONITORING=false
|
ENABLE_MONITORING=false
|
||||||
SKIP_BUILD=false
|
SKIP_BUILD=false
|
||||||
|
DOMAIN=""
|
||||||
|
EMAIL=""
|
||||||
|
SKIP_SSL=false
|
||||||
|
|
||||||
while [[ $# -gt 0 ]]; do
|
while [[ $# -gt 0 ]]; do
|
||||||
case $1 in
|
case $1 in
|
||||||
@ -32,13 +35,31 @@ while [[ $# -gt 0 ]]; do
|
|||||||
SKIP_BUILD=true
|
SKIP_BUILD=true
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
--domain)
|
||||||
|
DOMAIN="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--email)
|
||||||
|
EMAIL="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--skip-ssl)
|
||||||
|
SKIP_SSL=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
--help)
|
--help)
|
||||||
echo "Usage: $0 [OPTIONS]"
|
echo "Usage: $0 [OPTIONS]"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Options:"
|
echo "Options:"
|
||||||
echo " --with-monitoring Install Prometheus, Grafana, and AlertManager"
|
echo " --with-monitoring Install Prometheus, Grafana, and AlertManager"
|
||||||
echo " --skip-build Skip building the application (use existing binary)"
|
echo " --skip-build Skip building the application (use existing binary)"
|
||||||
|
echo " --domain DOMAIN Domain name for SSL certificate (e.g., gateway.example.com)"
|
||||||
|
echo " --email EMAIL Email for Let's Encrypt certificate notifications"
|
||||||
|
echo " --skip-ssl Skip SSL/HTTPS setup (HTTP only)"
|
||||||
echo " --help Show this help message"
|
echo " --help Show this help message"
|
||||||
|
echo ""
|
||||||
|
echo "Example:"
|
||||||
|
echo " $0 --domain gateway.example.com --email admin@example.com"
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@ -52,6 +73,9 @@ done
|
|||||||
echo "Configuration:"
|
echo "Configuration:"
|
||||||
echo " Monitoring: $ENABLE_MONITORING"
|
echo " Monitoring: $ENABLE_MONITORING"
|
||||||
echo " Skip build: $SKIP_BUILD"
|
echo " Skip build: $SKIP_BUILD"
|
||||||
|
echo " Domain: ${DOMAIN:-'Not set (HTTP only)'}"
|
||||||
|
echo " Email: ${EMAIL:-'Not set'}"
|
||||||
|
echo " Skip SSL: $SKIP_SSL"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
cd "$PROJECT_ROOT"
|
cd "$PROJECT_ROOT"
|
||||||
@ -65,6 +89,8 @@ apt-get install -y \
|
|||||||
sqlite3 \
|
sqlite3 \
|
||||||
redis-server \
|
redis-server \
|
||||||
nginx \
|
nginx \
|
||||||
|
certbot \
|
||||||
|
python3-certbot-nginx \
|
||||||
logrotate \
|
logrotate \
|
||||||
curl \
|
curl \
|
||||||
jq \
|
jq \
|
||||||
@ -72,7 +98,8 @@ apt-get install -y \
|
|||||||
htop \
|
htop \
|
||||||
tree \
|
tree \
|
||||||
unzip \
|
unzip \
|
||||||
wget
|
wget \
|
||||||
|
ffmpeg
|
||||||
|
|
||||||
# Verify Go installation
|
# Verify Go installation
|
||||||
if ! command -v go &> /dev/null; then
|
if ! command -v go &> /dev/null; then
|
||||||
@ -167,7 +194,121 @@ EOF
|
|||||||
echo "✅ Node Exporter installed and started"
|
echo "✅ Node Exporter installed and started"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Step 6: Configure firewall
|
# Step 6: Configure nginx
|
||||||
|
echo "🌐 Configuring nginx..."
|
||||||
|
|
||||||
|
# Create nginx configuration
|
||||||
|
cat > /etc/nginx/sites-available/torrent-gateway << EOF
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name ${DOMAIN:-'_'};
|
||||||
|
|
||||||
|
# Security headers
|
||||||
|
add_header X-Frame-Options "SAMEORIGIN" always;
|
||||||
|
add_header X-XSS-Protection "1; mode=block" always;
|
||||||
|
add_header X-Content-Type-Options "nosniff" always;
|
||||||
|
add_header Referrer-Policy "no-referrer-when-downgrade" always;
|
||||||
|
|
||||||
|
# Main application proxy
|
||||||
|
location / {
|
||||||
|
proxy_pass http://127.0.0.1:9877;
|
||||||
|
proxy_set_header Host \$host;
|
||||||
|
proxy_set_header X-Real-IP \$remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto \$scheme;
|
||||||
|
|
||||||
|
# WebSocket support
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade \$http_upgrade;
|
||||||
|
proxy_set_header Connection "upgrade";
|
||||||
|
|
||||||
|
# Timeouts for large uploads
|
||||||
|
proxy_connect_timeout 60s;
|
||||||
|
proxy_send_timeout 300s;
|
||||||
|
proxy_read_timeout 300s;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Health check endpoint
|
||||||
|
location /health {
|
||||||
|
access_log off;
|
||||||
|
proxy_pass http://127.0.0.1:9877/api/health;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Increase client max body size for file uploads
|
||||||
|
client_max_body_size 10G;
|
||||||
|
client_body_timeout 300s;
|
||||||
|
client_header_timeout 300s;
|
||||||
|
|
||||||
|
# Enable gzip compression
|
||||||
|
gzip on;
|
||||||
|
gzip_vary on;
|
||||||
|
gzip_min_length 1024;
|
||||||
|
gzip_proxied any;
|
||||||
|
gzip_comp_level 6;
|
||||||
|
gzip_types
|
||||||
|
text/plain
|
||||||
|
text/css
|
||||||
|
text/xml
|
||||||
|
text/javascript
|
||||||
|
application/json
|
||||||
|
application/javascript
|
||||||
|
application/xml+rss
|
||||||
|
application/atom+xml
|
||||||
|
image/svg+xml;
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Enable the site
|
||||||
|
ln -sf /etc/nginx/sites-available/torrent-gateway /etc/nginx/sites-enabled/
|
||||||
|
rm -f /etc/nginx/sites-enabled/default
|
||||||
|
|
||||||
|
# Test nginx configuration
|
||||||
|
nginx -t
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "❌ Nginx configuration error"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "✅ Nginx configured"
|
||||||
|
|
||||||
|
# Step 7: Setup SSL with certbot (if domain provided)
|
||||||
|
if [ -n "$DOMAIN" ] && [ "$SKIP_SSL" = false ]; then
|
||||||
|
echo "🔐 Setting up SSL certificate for $DOMAIN..."
|
||||||
|
|
||||||
|
if [ -z "$EMAIL" ]; then
|
||||||
|
echo "❌ Email is required for SSL certificate"
|
||||||
|
echo "Please provide --email argument or use --skip-ssl"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Start nginx to respond to HTTP challenges
|
||||||
|
systemctl start nginx
|
||||||
|
|
||||||
|
# Get SSL certificate
|
||||||
|
certbot --nginx --non-interactive --agree-tos --email "$EMAIL" -d "$DOMAIN"
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "✅ SSL certificate obtained successfully"
|
||||||
|
|
||||||
|
# Setup auto-renewal
|
||||||
|
(crontab -l 2>/dev/null; echo "0 12 * * * /usr/bin/certbot renew --quiet") | crontab -
|
||||||
|
echo "✅ SSL auto-renewal configured"
|
||||||
|
else
|
||||||
|
echo "⚠️ SSL certificate setup failed. Continuing with HTTP only."
|
||||||
|
echo "You may need to:"
|
||||||
|
echo " 1. Ensure $DOMAIN points to this server's IP"
|
||||||
|
echo " 2. Check firewall allows ports 80/443"
|
||||||
|
echo " 3. Run: sudo certbot --nginx -d $DOMAIN"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ -n "$DOMAIN" ]; then
|
||||||
|
echo "⏭️ Skipping SSL setup (--skip-ssl specified)"
|
||||||
|
else
|
||||||
|
echo "⏭️ Skipping SSL setup (no domain provided)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Step 8: Configure firewall
|
||||||
echo "🔒 Configuring firewall..."
|
echo "🔒 Configuring firewall..."
|
||||||
if command -v ufw &> /dev/null; then
|
if command -v ufw &> /dev/null; then
|
||||||
# Allow SSH
|
# Allow SSH
|
||||||
@ -194,7 +335,7 @@ else
|
|||||||
echo "⚠️ UFW not available, skipping firewall configuration"
|
echo "⚠️ UFW not available, skipping firewall configuration"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Step 7: Create maintenance scripts
|
# Step 9: Create maintenance scripts
|
||||||
echo "🛠️ Creating maintenance scripts..."
|
echo "🛠️ Creating maintenance scripts..."
|
||||||
|
|
||||||
# Create backup cron job
|
# Create backup cron job
|
||||||
@ -244,7 +385,7 @@ chmod +x /opt/torrent-gateway/scripts/cleanup.sh
|
|||||||
# Add weekly cleanup to cron
|
# Add weekly cleanup to cron
|
||||||
echo "0 4 * * 0 root /opt/torrent-gateway/scripts/cleanup.sh > /var/log/torrent-gateway-cleanup.log 2>&1" >> /etc/cron.d/torrent-gateway
|
echo "0 4 * * 0 root /opt/torrent-gateway/scripts/cleanup.sh > /var/log/torrent-gateway-cleanup.log 2>&1" >> /etc/cron.d/torrent-gateway
|
||||||
|
|
||||||
# Step 8: Final service startup
|
# Step 10: Final service startup
|
||||||
echo "🚀 Starting all services..."
|
echo "🚀 Starting all services..."
|
||||||
|
|
||||||
# Start dependencies first
|
# Start dependencies first
|
||||||
@ -261,7 +402,11 @@ fi
|
|||||||
|
|
||||||
# Wait for service to be ready
|
# Wait for service to be ready
|
||||||
echo "⏳ Waiting for services to be ready..."
|
echo "⏳ Waiting for services to be ready..."
|
||||||
timeout 60 bash -c 'until curl -sf http://localhost/api/health; do sleep 2; done'
|
timeout 60 bash -c 'until curl -sf http://localhost:9877/api/health; do sleep 2; done'
|
||||||
|
|
||||||
|
# Test nginx proxy
|
||||||
|
echo "🧪 Testing nginx proxy..."
|
||||||
|
timeout 30 bash -c 'until curl -sf http://localhost/api/health; do sleep 2; done'
|
||||||
|
|
||||||
# Run health checks
|
# Run health checks
|
||||||
echo "🏥 Running health checks..."
|
echo "🏥 Running health checks..."
|
||||||
@ -277,8 +422,19 @@ if [ $? -eq 0 ]; then
|
|||||||
echo " Config: /opt/torrent-gateway/"
|
echo " Config: /opt/torrent-gateway/"
|
||||||
echo ""
|
echo ""
|
||||||
echo "🌐 Access URLs:"
|
echo "🌐 Access URLs:"
|
||||||
echo " Gateway API: http://localhost/api/"
|
if [ -n "$DOMAIN" ] && [ "$SKIP_SSL" = false ]; then
|
||||||
echo " Admin Panel: http://localhost/admin"
|
echo " Gateway: https://$DOMAIN"
|
||||||
|
echo " API: https://$DOMAIN/api/"
|
||||||
|
echo " Admin Panel: https://$DOMAIN/admin"
|
||||||
|
elif [ -n "$DOMAIN" ]; then
|
||||||
|
echo " Gateway: http://$DOMAIN"
|
||||||
|
echo " API: http://$DOMAIN/api/"
|
||||||
|
echo " Admin Panel: http://$DOMAIN/admin"
|
||||||
|
else
|
||||||
|
echo " Gateway: http://localhost (or http://YOUR_SERVER_IP)"
|
||||||
|
echo " API: http://localhost/api/"
|
||||||
|
echo " Admin Panel: http://localhost/admin"
|
||||||
|
fi
|
||||||
if [ "$ENABLE_MONITORING" = true ]; then
|
if [ "$ENABLE_MONITORING" = true ]; then
|
||||||
echo " Prometheus: http://localhost:9090"
|
echo " Prometheus: http://localhost:9090"
|
||||||
echo " Grafana: http://localhost:3000 (admin/admin)"
|
echo " Grafana: http://localhost:3000 (admin/admin)"
|
||||||
@ -289,6 +445,7 @@ if [ $? -eq 0 ]; then
|
|||||||
echo " Stop: sudo systemctl stop torrent-gateway"
|
echo " Stop: sudo systemctl stop torrent-gateway"
|
||||||
echo " Restart: sudo systemctl restart torrent-gateway"
|
echo " Restart: sudo systemctl restart torrent-gateway"
|
||||||
echo " Status: sudo systemctl status torrent-gateway"
|
echo " Status: sudo systemctl status torrent-gateway"
|
||||||
|
echo " Nginx: sudo systemctl restart nginx"
|
||||||
echo ""
|
echo ""
|
||||||
echo "💾 Backup & Restore:"
|
echo "💾 Backup & Restore:"
|
||||||
echo " Backup: sudo /opt/torrent-gateway/scripts/backup.sh"
|
echo " Backup: sudo /opt/torrent-gateway/scripts/backup.sh"
|
||||||
@ -296,8 +453,31 @@ if [ $? -eq 0 ]; then
|
|||||||
echo ""
|
echo ""
|
||||||
echo "📝 Logs and Monitoring:"
|
echo "📝 Logs and Monitoring:"
|
||||||
echo " App logs: sudo journalctl -u torrent-gateway -f"
|
echo " App logs: sudo journalctl -u torrent-gateway -f"
|
||||||
|
echo " Nginx logs: sudo tail -f /var/log/nginx/error.log"
|
||||||
echo " System logs: sudo tail -f /var/log/syslog"
|
echo " System logs: sudo tail -f /var/log/syslog"
|
||||||
echo " Health: sudo /opt/torrent-gateway/scripts/health_check.sh"
|
echo " Health: sudo /opt/torrent-gateway/scripts/health_check.sh"
|
||||||
|
echo ""
|
||||||
|
if [ -n "$DOMAIN" ]; then
|
||||||
|
echo "🔐 SSL Certificate:"
|
||||||
|
echo " Status: sudo certbot certificates"
|
||||||
|
echo " Renew: sudo certbot renew"
|
||||||
|
echo " Test Renew: sudo certbot renew --dry-run"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
echo "🛠️ Domain Setup Instructions:"
|
||||||
|
echo ""
|
||||||
|
echo " To use a custom domain, you need to:"
|
||||||
|
echo " 1. Point your domain's DNS A record to this server's IP"
|
||||||
|
echo " 2. Ensure ports 80 and 443 are open in your firewall"
|
||||||
|
echo " 3. Re-run install with: sudo $0 --domain yourdomain.com --email your@email.com"
|
||||||
|
echo ""
|
||||||
|
echo " Example DNS setup:"
|
||||||
|
echo " - Type: A"
|
||||||
|
echo " - Name: gateway (or @ for root domain)"
|
||||||
|
echo " - Value: $(curl -s https://api.ipify.org || echo 'YOUR_SERVER_IP')"
|
||||||
|
echo " - TTL: 300 (5 minutes)"
|
||||||
|
echo ""
|
||||||
|
echo " After DNS propagation (usually 5-60 minutes), SSL will be automatically configured."
|
||||||
else
|
else
|
||||||
echo "❌ Installation completed but health checks failed"
|
echo "❌ Installation completed but health checks failed"
|
||||||
echo "Check logs: journalctl -u torrent-gateway"
|
echo "Check logs: journalctl -u torrent-gateway"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user