# Paperless-ngx Production Setup

This document explains how to set up Paperless-ngx on your production server alongside your Django application.

## Overview

Paperless-ngx will be deployed as part of your Docker Compose stack and accessible at:
- **URL**: `https://vhtv-stiftung.de/paperless/`
- **Admin**: `https://vhtv-stiftung.de/paperless/admin/`

## Prerequisites

- Your Django application is already deployed and working
- HTTPS is configured and working
- You have SSH access to your production server

## Setup Steps

### 1. Deploy the Updated Configuration

The Docker Compose configuration already includes Paperless-ngx. After pushing the latest changes, it will be deployed automatically.

### 2. Configure Environment Variables

Add these variables to your production `.env` file:

```env
# Paperless-ngx Production Configuration
PAPERLESS_DB=paperless_prod
PAPERLESS_USER=paperless_user
PAPERLESS_PASSWORD=secure-paperless-password
PAPERLESS_ADMIN_USER=admin
PAPERLESS_ADMIN_PASSWORD=secure-admin-password
PAPERLESS_ADMIN_MAIL=admin@vhtv-stiftung.de
PAPERLESS_SECRET_KEY=your-generated-secret-key

# Paperless-ngx Integration (for Django app)
PAPERLESS_API_URL=https://vhtv-stiftung.de/paperless
PAPERLESS_API_TOKEN=your-api-token-here
```

### 3. Run the Setup Script

On your production server:

```bash
cd /opt/stiftung
chmod +x deploy-production/setup-paperless.sh
./deploy-production/setup-paperless.sh
```

### 4. Update Django Configuration

Your Django app will automatically use the new Paperless instance once you:

1. Update the `PAPERLESS_API_URL` in your `.env` file
2. Get an API token from Paperless admin interface
3. Update the `PAPERLESS_API_TOKEN` in your `.env` file
4. Restart the containers

## Security Features

- ✅ HTTPS encryption for all Paperless traffic
- ✅ Nginx reverse proxy with security headers
- ✅ Separate database for Paperless data
- ✅ Docker container isolation
- ✅ Large file upload support (100MB)

## File Management

Paperless will store files in Docker volumes:

- **Data**: `paperless_data` - Database and configuration
- **Media**: `paperless_media` - Processed documents
- **Export**: `paperless_export` - Export files
- **Consume**: `paperless_consume` - Documents to be processed

## Backup Strategy

Paperless data is stored in Docker volumes. To backup:

```bash
# Backup Paperless volumes
docker run --rm -v paperless_data:/data -v $(pwd):/backup alpine tar czf /backup/paperless_data_backup.tar.gz -C /data .
docker run --rm -v paperless_media:/data -v $(pwd):/backup alpine tar czf /backup/paperless_media_backup.tar.gz -C /data .
```

## Migration from Local Installation

To migrate your existing Paperless data:

1. **Export from local Paperless**: Use the export function in your local admin interface
2. **Import to production**: Use the import function in the production admin interface
3. **Update tags and settings**: Reconfigure any custom tags or workflows

## Troubleshooting

### Check container status
```bash
docker-compose ps paperless
docker-compose logs paperless
```

### Database connection issues
```bash
docker-compose exec paperless python3 manage.py check --database default
```

### Nginx proxy issues
```bash
sudo nginx -t
sudo tail -f /var/log/nginx/error.log
```

## API Integration

Once setup is complete, your Django application will automatically connect to the production Paperless instance using the configured API token.

The integration includes:
- Document searching and filtering
- Tag management
- User access control
- File upload and processing

## Performance Considerations

- Paperless is allocated 2GB RAM and 1 CPU core
- Large document processing may take time
- Consider increasing resources if needed
- Monitor disk usage for document storage

## Next Steps

After successful setup:

1. Configure document consumption workflows
2. Set up document tags and correspondents
3. Import existing documents
4. Test Django app integration
5. Set up automated backups

For support, check the Paperless-ngx documentation at: https://paperless-ngx.readthedocs.io/
