A FastAPI service that generates thumbnails from uploaded documents (PDF, DOC, DOCX, PPT, PPTX).
- Upload documents and get first-page thumbnails
- Supports PDF, DOC, DOCX, PPT, PPTX formats
- RESTful API with automatic documentation
- File management (list, delete)
- Static file serving for thumbnails and originals
# Install dependencies
pip install -r requirements.txt
# Run server
uvicorn app:app --reload- Ubuntu/Debian server
- Python 3.11+
- LibreOffice installed
- Copy files to server:
scp -r . user@your-server:/var/app/document-thumbnail/- Run deployment script:
ssh user@your-server
cd /var/app/document-thumbnail
sudo ./deploy.sh- Install dependencies:
sudo apt-get update
sudo apt-get install -y python3 python3-pip python3-venv libreoffice- Setup application:
cd /var/app/document-thumbnail
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt- Configure environment:
cp env.production .env
# Edit .env with your settings- Install as system service:
sudo cp document-thumbnail.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable document-thumbnail
sudo systemctl start document-thumbnailPOST /upload- Upload document and generate thumbnailGET /files- List all uploaded filesDELETE /delete/{doc_id}- Delete file and thumbnailGET /thumbnails/{doc_id}.png- View thumbnailGET /documents/{doc_id}.ext- Download original fileGET /docs- API documentationGET /health- Health check
Environment variables (set in .env):
BASE_STORAGE_DIR- Storage directory pathMAX_FILE_SIZE- Max upload size in bytesSOFFICE_CMD- LibreOffice executable pathCORS_ALLOW_ORIGINS- Allowed CORS origins
# Start/stop service
sudo systemctl start document-thumbnail
sudo systemctl stop document-thumbnail
sudo systemctl restart document-thumbnail
# Check status
sudo systemctl status document-thumbnail
# View logs
sudo journalctl -u document-thumbnail -f- Service runs as
www-datauser - Storage directory has restricted permissions
- CORS can be configured for specific domains
- File size limits prevent abuse