Overview
QFieldCloud is a Django-based service designed to synchronize projects and data between QGIS (+ QFieldSync plugin) and QField. While OPENGIS.ch offers a hosted solution at qfield.cloud, you can also self-host your own QFieldCloud instance.
Hosted vs Self-Hosted
Hosted Solution
The hosted version at app.qfield.cloud is:
- Fully managed and maintained by OPENGIS.ch
- Integrated by default into QField
- Requires no infrastructure setup or maintenance
- Includes professional support options
- Ideal for getting up and running quickly
Self-Hosted Solution
Self-hosting QFieldCloud is suitable when you:
- Need complete control over your data and infrastructure
- Have specific security or compliance requirements
- Want to integrate with existing on-premise systems
- Require custom configurations or modifications
- Have the technical resources to manage the infrastructure
QFieldCloud is designed to work with externally managed services for its database (PostgreSQL), Object Storage (S3), and mailing provider.For small self-hosted environments, you may run QFieldCloud on a single server using docker-compose.override.standalone.yml, but this is entirely at your own risk.The maintainers do not recommend and do not guarantee that the standalone version will always work between versions, and will close all issues regarding standalone deployment without further explanation.
Architecture
QFieldCloud consists of several key components:
Core Services
- app: Django application server running with Gunicorn
- nginx: Reverse proxy handling HTTPS/TLS termination and static file serving
- worker_wrapper: Background job processor for QGIS operations
- qgis: QGIS worker container for processing geospatial data
- memcached: Caching layer for improved performance
- ofelia: Cron job scheduler for periodic tasks
- certbot: Automatic SSL certificate management via Let’s Encrypt
External Dependencies (Production)
For production deployments, you should use external managed services:
- PostgreSQL/PostGIS: Database for storing application data
- S3-compatible storage: Object storage for project files (AWS S3, MinIO, etc.)
- SMTP server: Email delivery service
Standalone Services (Development/Testing Only)
For local development or small standalone deployments:
- db: PostgreSQL/PostGIS database container
- minio: S3-compatible object storage
- smtp4dev: Local email testing server
- webdav: Alternative storage backend (optional)
System Requirements
Minimum Requirements
- Docker Engine 20.10 or later
- Docker Compose 2.0 or later
- 4 GB RAM (8 GB recommended)
- 20 GB disk space for application and dependencies
- Additional storage for project data and backups
Network Requirements
- Public domain name (for Let’s Encrypt SSL certificates)
- Open ports:
- 80 (HTTP) - for Let’s Encrypt certificate validation
- 443 (HTTPS) - for secure access to QFieldCloud
- 5432 (PostgreSQL) - if using external database
Recommended Production Setup
- 8+ GB RAM
- 4+ CPU cores
- SSD storage for database and application
- External managed PostgreSQL database
- External S3-compatible storage with versioning enabled
- External SMTP service for reliable email delivery
- Regular automated backups
Infrastructure Components
Based on the testdriven.io Django dockerization guide.
Port Configuration
| Service | Port | Configuration | Local | Development | Production |
|---|
| nginx http | 80 | WEB_HTTP_PORT | ✓ | ✓ | ✓ |
| nginx https | 443 | WEB_HTTPS_PORT | ✓ | ✓ | ✓ |
| django http | 8011 | DJANGO_DEV_PORT | ✓ | ✗ | ✗ |
| postgres | 5433 | HOST_POSTGRES_PORT | ✓ | ✓ | ✓ |
| minio API | 8009 | MINIO_API_PORT | ✓ | ✗ | ✗ |
| minio browser | 8010 | MINIO_BROWSER_PORT | ✓ | ✗ | ✗ |
| smtp web | 8012 | SMTP4DEV_WEB_PORT | ✓ | ✗ | ✗ |
| smtp | 25 | SMTP4DEV_SMTP_PORT | ✓ | ✗ | ✗ |
| imap | 143 | SMTP4DEV_IMAP_PORT | ✓ | ✗ | ✗ |
Security Considerations
Essential Security Steps
- Change default secrets: Update
SECRET_KEY and SALT_KEY in .env
- Set strong database password: Change
POSTGRES_PASSWORD
- Disable debug mode: Set
DEBUG=0 in production
- Configure allowed hosts: Set
DJANGO_ALLOWED_HOSTS to your domain(s)
- Use HTTPS: Configure SSL certificates (Let’s Encrypt recommended)
- Enable email verification: Set
ACCOUNT_EMAIL_VERIFICATION=mandatory
- Secure storage credentials: Use strong passwords for MinIO or S3 credentials
- Regular updates: Keep Docker images and dependencies up to date
Production Deployment Checklist
Getting Started
To begin deploying QFieldCloud:
- Review the Docker Setup guide for step-by-step installation instructions
- Configure your Environment Variables
- Set up SSL Certificates
- Configure Database and Storage
Support
Hosted Service Support
For questions about the hosted service at app.qfield.cloud, submit a ticket at tickets.qfield.cloud.
Self-Hosted Support
For self-hosted issues, use the GitHub issues at github.com/opengisch/qfieldcloud/issues.
Feature Requests
Visit ideas.qfield.org to submit new feature requests or upvote existing ones.
Resources