5.1 KiB
5.1 KiB
NextAV Deployment Guide
Overview
This guide covers deploying NextAV to a private Docker registry and production server.
Prerequisites
- Docker & Docker Compose installed
- Access to private registry (e.g., 192.168.2.212:3000)
- SSL certificates for HTTPS (optional for local deployment)
Quick Start
1. Build & Push to Private Registry
# Build the image
docker build -t 192.168.2.212:3000/tigeren/nextav:latest .
# Push to private registry
docker push 192.168.2.212:3000/tigeren/nextav:latest
# Verify push
curl http://192.168.2.212:3000/v2/_catalog
2. Deploy to Production Server
# Copy deployment files to server
scp -r docker/ user@server:/path/to/nextav/
# SSH to server
ssh user@server
cd /path/to/nextav/docker/
# Configure environment
cp .env.example .env
# Edit .env with your settings
# Deploy
docker-compose up -d
Detailed Deployment Steps
Local Development
# Build locally
docker build -t nextav:dev .
# Run locally
docker-compose -f docker-compose.yml up -d
Production with Private Registry
Step 1: Configure Private Registry Access
# Add insecure registry to Docker daemon
echo '{ "insecure-registries": ["192.168.2.212:3000"] }' | \
sudo tee /etc/docker/daemon.json
sudo systemctl restart docker
Step 2: Build & Tag
# Build with registry tag
docker build -t 192.168.2.212:3000/tigeren/nextav:latest .
docker build -t 192.168.2.212:3000/tigeren/nextav:v1.0.0 .
Step 3: Push to Registry
# Push latest
docker push 192.168.2.212:3000/tigeren/nextav:latest
# Push versioned
docker push 192.168.2.212:3000/tigeren/nextav:v1.0.0
Step 4: Deploy on Target Server
On production server:
# Create deployment directory
mkdir -p /opt/nextav
cd /opt/nextav
# Copy deployment files
cp docker/docker-compose.yml .
cp docker/.env.example .env
# Create SSL directory (optional)
mkdir -p ssl
# Copy your SSL certificates to ssl/cert.pem and ssl/key.pem
# Configure environment
nano .env
Edit .env file:
REGISTRY_URL=192.168.2.212:3000
IMAGE_NAME=tigeren/nextav
IMAGE_TAG=latest
# Set your domain
NEXTAUTH_URL=https://your-domain.com
NEXTAUTH_SECRET=your-secure-secret
# Adjust paths if needed
DB_PATH=./data
MEDIA_PATH=./media
Deploy:
# Pull and deploy
docker-compose pull
docker-compose up -d
# Check status
docker-compose ps
docker-compose logs -f
Environment Variables
| Variable | Description | Default |
|---|---|---|
REGISTRY_URL |
Private registry URL | 192.168.2.212:3000 |
IMAGE_NAME |
Image name | tigeren/nextav |
IMAGE_TAG |
Image tag | latest |
NEXT_PUBLIC_MEDIA_ROOT |
Media directory | /app/media |
DATABASE_URL |
Database file path | file:///app/data/nextav.db |
NEXTAUTH_SECRET |
Auth secret | required |
NEXTAUTH_URL |
Application URL | required |
SSL_CERT_PATH |
SSL certificate path | ./ssl/cert.pem |
SSL_KEY_PATH |
SSL private key path | ./ssl/key.pem |
Directory Structure
docker/
├── .env.example # Environment template
├── docker-compose.yml # Production compose
├── nginx.conf # Nginx configuration
└── ssl/ # SSL certificates (optional)
SSL Setup (Production)
Using Let's Encrypt
# Install certbot
sudo apt install certbot
# Generate certificates
sudo certbot certonly --standalone -d your-domain.com
# Copy certificates
cp /etc/letsencrypt/live/your-domain.com/fullchain.pem ssl/cert.pem
cp /etc/letsencrypt/live/your-domain.com/privkey.pem ssl/key.pem
Using Self-Signed (Development)
# Generate self-signed certificates
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout ssl/key.pem -out ssl/cert.pem
Monitoring & Maintenance
Health Checks
# Check application health
curl http://localhost:3000/api/health
# Check nginx health
curl http://localhost/health
Logs
# View all logs
docker-compose logs -f
# View specific service logs
docker-compose logs -f nextav
docker-compose logs -f nginx
Updates
# Update to latest version
docker-compose pull
docker-compose up -d
# Update to specific version
# Edit .env: IMAGE_TAG=v1.0.1
docker-compose up -d
Backup
# Backup database and media
tar -czf backup-$(date +%Y%m%d).tar.gz data/ media/
Troubleshooting
Common Issues
Registry connection failed:
# Check registry accessibility
curl http://192.168.2.212:3000/v2/_catalog
# Check Docker daemon configuration
cat /etc/docker/daemon.json
Permission issues:
# Fix file permissions
sudo chown -R $USER:$USER data/ media/
Port conflicts:
# Check port usage
sudo netstat -tulpn | grep :3000
Debug Mode
# Run in debug mode
docker-compose up
# or
docker-compose logs -f nextav
One-Click Deployment
Use the provided deployment script:
# Make executable
chmod +x deploy.sh
# Run deployment
./deploy.sh
Security Notes
- Change default passwords and secrets
- Use HTTPS in production
- Regularly update images
- Monitor logs for suspicious activity
- Backup database regularly