This guide provides technical instructions for self-hosting the Community edition of the LFX Community Data Platform (formerly crowd.dev) using Docker Compose.
Before you begin, ensure your system meets the following requirements:
- CPU: 4+ cores recommended.
- RAM: 16GB+ recommended (the platform runs several services including OpenSearch, Kafka, and Postgres).
- Storage: 50GB+ of free space (depends on the volume of data you plan to ingest).
- Docker: Engine 20.10+ and Docker Compose v2.0+.
- Node.js: v16.16.0 (required for some local CLI utilities).
- Python: 3.x (required for Tinybird CLI setup).
-
Clone the Repository:
git clone https://github.com/linuxfoundation/crowd.dev.git cd crowd.dev -
Install Dependencies:
pnpm install
-
Configure Environment Variables: Copy the distribution template to create your local override file:
cp backend/.env.dist.local backend/.env.override.local
Note: For a "composed" environment where services run in Docker, you may also want to reference
backend/.env.dist.composedfor the correct hostnames (e.g.,dbinstead oflocalhost).
The platform uses a custom CLI tool located in scripts/cli to simplify management.
The "scaffold" includes essential services: PostgreSQL, Redis, OpenSearch, Kafka, and Tinybird.
cd scripts
./cli scaffold upThis command will:
- Set up the
crowd-bridgeDocker network. - Start all infrastructure containers defined in
scripts/scaffold.yaml. - Set up the Tinybird CLI and virtual environment.
Once the infrastructure is up, apply the necessary schema migrations for Postgres and Tinybird:
./cli migrate-upYou can start all application services (API, Frontend, Workers) at once:
./cli service up-allThe application will be available at:
- Frontend: http://localhost:8081
- API: http://localhost:4000/api (default)
Key environment variables to review in backend/.env.override.local:
CROWD_API_URL: The public-facing URL of your API.CROWD_API_JWT_SECRET: A long, random string for securing sessions.CROWD_DB_*: Database connection details (defaults work withscaffold).CROWD_REDIS_*: Redis connection details.CROWD_TINYBIRD_BASE_URL: URL for the local Tinybird instance (default:http://localhost:7181/).
To view logs for a specific service:
./cli service <service-name> logs(Available service names can be found in scripts/services/)
./cli db-backup <backup-name>./cli db-restore <backup-name>- Reverse Proxy: It is highly recommended to use a reverse proxy (like Nginx) to handle SSL/TLS termination. A template is provided in
scripts/scaffold/nginx/. - Secrets: Ensure
CROWD_API_JWT_SECRETand all database passwords are changed from their default values in a production environment. - Persistence: All data is stored in Docker volumes (e.g.,
pgdata-dev,opensearch-dev). Ensure these volumes are backed up regularly.
- Memory Issues: If services fail to start, check if Docker has enough memory allocated (especially on macOS/Windows).
- Network Conflicts: Ensure the subnet
10.90.0.0/24(default) does not conflict with your existing network. You can override this inscripts/clior via environment variables.