Distribution Methods
Kolibri is distributed through several package formats, each optimized for different deployment scenarios:PyPI Packages
Kolibri is available on PyPI in two variants:kolibri-static package is ideal for offline installations and serves as the foundation for platform-specific installers.
Platform-Specific Installers
Built from thekolibri-static package:
- Windows Installer - Native Windows .exe installer
- Debian Package - .deb installer for Debian/Ubuntu systems
- Android APK - Mobile app for Android devices
- PEX File - Portable executable for cross-platform deployment
Docker Deployment
Docker images are available for containerized deployments. See the docker/readme.md in the source repository.Infrastructure Requirements
System Requirements
Python Version
Python 3.6 through 3.13 supported
Memory
Minimum 2GB RAM recommended
Disk Space
Minimum 250MB free (configurable via
MINIMUM_DISK_SPACE)Network
Optional - designed for offline operation
Database Options
Kolibri supports two database backends: SQLite (Default)- Suitable for most deployments
- No additional setup required
- File-based database stored in
KOLIBRI_HOME - Uses custom backend with
BEGIN IMMEDIATEtransactions
- Recommended for high-concurrency environments
- Requires PostgreSQL server
- Better performance under heavy load
- See Production Deployment for setup details
Thread Pool Configuration
Kolibri automatically calculates optimal thread pool size based on available resources:Build Pipeline
The Kolibri build pipeline produces multiple distribution formats:Building from Source
Build Distribution
The This command:
make dist command creates distributable packages:- Sets requirements with customized versions
- Writes version information to
kolibri/VERSION - Downloads static Python dependencies to
kolibri/dist/ - Downloads platform-specific C extensions
- Strips debug symbols from binaries
- Builds frontend assets
- Compiles translation messages
- Creates wheel and source distributions in
dist/
Configuration Options
Environment Variables
Kolibri configuration is managed through environment variables with theKOLIBRI_ prefix:
Core Settings
Core Settings
KOLIBRI_HOME- Data directory (required)KOLIBRI_HTTP_PORT- Server port (default: 8080)KOLIBRI_RUN_MODE- Deployment mode flagKOLIBRI_NO_FILE_BASED_LOGGING- Disable file logging
Database Settings
Database Settings
KOLIBRI_DATABASE_ENGINE-sqliteorpostgresKOLIBRI_DATABASE_NAME- Database nameKOLIBRI_DATABASE_USER- PostgreSQL usernameKOLIBRI_DATABASE_PASSWORD- PostgreSQL passwordKOLIBRI_DATABASE_HOST- PostgreSQL hostKOLIBRI_DATABASE_PORT- PostgreSQL port
Content & Paths
Content & Paths
KOLIBRI_CONTENT_DIR- Content storage directoryKOLIBRI_CONTENT_FALLBACK_DIRS- Additional content directoriesKOLIBRI_CENTRAL_CONTENT_BASE_URL- Content import source
Deployment Options
Deployment Options
KOLIBRI_URL_PATH_PREFIX- Serve from subpathKOLIBRI_ZIP_CONTENT_PORT- Alternate origin portKOLIBRI_LANGUAGES- Enabled UI languagesKOLIBRI_DISABLE_PING- Disable telemetry
Configuration File
Settings can also be configured viaoptions.ini file in KOLIBRI_HOME:
KOLIBRI_HOME Directory
All runtime data is stored inKOLIBRI_HOME (defaults to ~/.kolibri):
The
KOLIBRI_HOME directory must be writable by the user running Kolibri. Ensure proper permissions when deploying as a system service.Next Steps
Production Deployment
Configure PostgreSQL and production settings
Android Deployment
Build and distribute Android APK
Offline Setup
Deploy in network-free environments
Docker
Container-based deployment