Troubleshooting
Reverse Proxy Configuration
When running behind a reverse proxy (nginx, Apache, etc.), configure ExternalUrlOverride to ensure correct URL generation:
{
"ExternalUrlOverride": "https://registry.yourdomain.com"
}
Nginx Example
server {
listen 443 ssl;
server_name registry.yourdomain.com;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
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;
proxy_cache_bypass $http_upgrade;
client_max_body_size 0;
}
}
Common Issues
Container fails to start
- Check logs:
docker-compose logs registry - Verify database connectivity
- Ensure DroneDB library is properly installed
Authentication errors
- Verify
Secretis set and consistent - Check token expiration settings
- Clear browser cookies
File upload failures
- Check
MaxRequestBodySizesetting - Verify storage path permissions
- Check available disk space
Build jobs stuck or failing
- Check Hangfire dashboard at
/hangfire - Verify DroneDB library is accessible
- Check disk space and memory
JobIndices table growing too large
- The
JobIndicestable keeps track of build jobs. A scheduled cleanup task removes old terminal records automatically (default: every night at 4:00 AM, retaining 60 days). If the table has already grown very large, trigger an immediate one-off purge:You can optionally override the retention period:curl -X POST -H "Authorization: Bearer <admin-token>" \
http://localhost:5000/system/cleanup-jobindices?retentionDays=30. - See
JobIndexRetentionDaysandJobIndexCleanupCronin the Configuration Reference.
Slow performance
- Consider switching from SQLite to MySQL/MariaDB
- Add Redis cache for high-traffic instances
- Check
WorkerThreadsconfiguration
Upgrading: Point clouds (EPT → COPC)
Starting with Registry 2.3.0, point cloud streaming uses the COPC format
(build/<hash>/copc/cloud.copc.laz) instead of the legacy EPT layout
(build/<hash>/ept/ept.json). Backwards compatibility with old EPT artifacts
has been intentionally dropped to keep the build pipeline simple, so any
dataset that was built before the upgrade must be migrated before point
clouds become viewable again.
You have two options:
-
Run the migration script (recommended). It rebuilds COPC artifacts in place from the existing source LAS/LAZ files, without touching the database. From the DroneDB repository:
python scripts/migrate-to-copc.py /path/to/registry-data/datasetsThe script requires PDAL on
PATHand is idempotent (already-migrated datasets are skipped). -
Trigger a rebuild of each affected dataset from the Hub UI (Settings → Rebuild) or via the
/buildAPI. This regenerates all build artifacts, not only point clouds, and is therefore slower.
After migration, run a one-off cleanup to drop orphaned EPT folders:
curl -X POST -H "Authorization: Bearer <admin-token>" \
-H "Content-Type: application/json" -d '{}' \
http://localhost:5000/system/cleanup
See DatasetCleanupCron in the Configuration Reference
for the recurring full-cleanup schedule.
Health Checks
Use the health endpoints to diagnose issues:
# Quick health (basic check)
curl -H "Authorization: Bearer <token>" http://localhost:5000/quickhealth
# Full health (includes database, DroneDB)
curl -H "Authorization: Bearer <token>" http://localhost:5000/health
Health Check Response
The /health endpoint returns detailed status for:
- Database: Connection and query status
- DroneDB: Library availability and version
- Storage: Disk space availability
- Hangfire: Background job processor status
Logs
Log Locations
| Deployment | Log Location |
|---|---|
| Docker | docker-compose logs registry |
| Native | registry-data/logs/registry.txt |
Adjusting Log Verbosity
Change log level in appsettings.json:
"LevelSwitches": {
"$CONTROL_SWITCH": "Warning"
}
Available levels: Verbose, Debug, Information, Warning, Error, Fatal
Getting Help
If you're still experiencing issues:
- Check the FAQ
- Search GitHub Issues
- Commercial support is available at dronedb.app/contact