11 KiB
11 KiB
Overview of technological requirements
Basic system
Components which are installed directly as part of the basic virtual machine.
Alpine linux
- General description: Operating system
- Tech. description: Lightweight linux distribution based on musl C libraries
- Depends on: -
- Used by: Everything
- Related skills: EXTLINUX / ISOLINUX, git, linux administration (cron, filesystems, iptables, networking, user/group mgmt etc.), LUKS, LVM, OpenRC init system, POSIX standards, s6 init system, shell scripting
Acme.sh
- General description: Certificate renewal tool
- Tech. description: Shell-based Automated Certificate Management Environment client
- Depends on: -
- Used by: nginx, VMMgr
- Related skills: shell scripting, SSL/TLS
Nginx
- General description: Web server
- Tech. description: Lightweight HTTP server
- Depends on: -
- Used by: All application containers, VMMgr
- Related skills: HTTP (proxying, rewriting)
LXC
- General description: Container virtualization host
- Tech. description: Operating system-level container virtualization host
- Depends on: -
- Used by: All containers
- Related skills: container virtualization fundamentals, linux kernel (cgroups, overlayfs, seccomp), shell scripting
Postfix
- General description: Mail server
- Tech. description: Outbound mail transfer agent
- Depends on: -
- Used by: All application containers
- Related skills: SMTP
VMMgr
- General description: Virtual machine and application manager web interface
- Tech. description: In-house Werkzeug-based virtual machine and application manager WSGI application
- Depends on: Nginx, LXC, Python 3
- Used by: User
- Related skills: JSON, python 3 frameworks and modules (cryptography, jinja2, requests, subprocess, werkzeug), shell scripting, WSGI application development
Runtimes
Components which are supplied as LXC overlay layers but don't run as standalone containers
Java
- General description: Java runtime environment
- Tech. description: Java OpenJDK 8 runtime environment
- Depends on: -
- Used by: ActiveMQ, FrontlineSMS, Tomcat, CrisisCleanup, MifosX, Motech, OpenDataKit, OpenMapKit, Sigmah, Solr
- Related skills: -
Node.js
- General description: JavaScript runtime environment
- Tech. description: Server-side Node.js 8 JavaScript runtime environment
- Depends on: -
- Used by: CrisisCleanup, GNU Health, Odoo, OpenDataKit Build, OpenMapKit
- Related skills: HTTP (proxying), JavaScript (language overview)
PHP
- General description: PHP 7 runtime environment
- Tech. description: PHP 7 hypertext preprocessor scripting runtime
- Depends on: -
- Used by: KanBoard, SeedDMS, Ushahidi
- Related skills: HTTP (proxying), PHP 7 (language overview), PHP-FPM
Python 2
- General description: Python 2 runtime environment
- Tech. description: Python 2 runtime environemnt and standard libraries
- Depends on: -
- Used by: CKAN, CKAN DataPusher, CTS, OpenMapKit, Sahana Eden
- Related skills: linux compilation toolchain (header files, gcc, make etc.), pip, python (language overview)
Python 3
- General description: Python 3 runtime environment
- Tech. description: Python 3 runtime environemnt and standard libraries
- Depends on: -
- Used by: GNU Health, Odoo, Pan.do/ra, SeedDMS, VMMgr (doesn't use container)
- Related skills: linux compilation toolchain (header files, gcc, make etc.), pip, python (language overview)
Ruby
- General description: Ruby runtime environment
- Tech. description: Ruby 2.4 runtime environment and gem package installer
- Depends on: -
- Used by: CrisisCleanup, OpenDataKit Build
- Related skills: linux compilation toolchain (header files, gcc, make etc.)
Tomcat
- General description: Lightweight Java application server
- Tech. description: Java application JSP and servlet container
- Depends on: Java
- Used by: MifosX, Motech, OpenDataKit, Sigmah
- Related skills: JVM tuning, shell scripting
Components
Components which are supplied as LXC containers required by other applications but aren't exposed directly to the end user
ActiveMQ
- General description: Message broker middleware
- Tech. description: Java-based message broker and messaging server
- Depends on: Java
- Used by: Motech
- Related skills: JVM tuning, XML
MariaDB
- General description: MySQL database server
- Tech. description: MySQL-compatible relational database management system
- Depends on: -
- Used by: MifosX, Ushahidi
- Related skills: SQL (language overview)
Postgres
- General description: PostgreSQL database server
- Tech. description: PostgreSQL relational database management system
- Depends on: -
- Used by: CKAN, CrisisCleanup, CTS, GNU Health, KanBoard, Motech, Odoo, OpenDataKit, OpenDataKit Build, OpenMapKit, Pan.do/ra, Sahana Eden, SeedDMS, Sigmah
- Related skills: SQL (language overview)
RabbitMQ
- General description: Message broker middleware
- Tech. description: Erlang-based message broker and messaging server
- Depends on: -
- Used by: Pan.do/ra
- Related skills: -
Redis
- General description: Key-value NoSQL database server
- Tech. description: In-memory NoSQL key-value data structure object store
- Depends on: -
- Used by: CKAN
- Related skills: -
Solr
- General description: Full-text search server
- Tech. description: Apache Lucene-based full-text search and indexing platform
- Depends on: Java
- Used by: CKAN
- Related skills: shell scripting, JVM tuning
Applications
Components which are supplied as LXC containers exposed directly to the end user
CKAN
- General description: Data management and data store system
- Tech. description: Flask-based data store application
- Depends on: CKAN DataPusher, Postgres, Python 2, Redis, Solr
- Used by: User
- Related skills: PostGIS, python frameworks and modules (flask, paster, setuptools), Solr core configuration
CKAN DataPusher
- General description: Data file parser for CKAN
- Tech. description: Python-based data file parser service for CKAN
- Depends on: Python 2
- Used by: CKAN
- Related skills: MIME types identification, WSGI application development
CrisisCleanup
- General description: Disaster response and relief coordination
- Tech. description: Ruby-on-Rails-based application with Node.js-generated frontend assets
- Depends on: LibXML, Node.js, Postgres, Ruby
- Used by: User
- Related skills: Node.js build systems (npm, yarn), Ruby build systems and frameworks (Bundle, Devise, Gems, Rails, Rake)
CTS
- General description: Commodity tracking system
- Tech. description: Django-based forms applicaton
- Depends on: Postgres, Python 2
- Used by: User
- Related skills: python frameworks (Django), WSGI application development
FrontlineSMS
- General description: Bulk text messaging
- Tech. description: Spring-based application for modem device access
- Depends on: Java
- Used by: User
- Related skills: Java build systems and frameworks (grails, Spring), Jetty, linux modem/tty handling, Xorg (X server)
GNU Health
- General description: Hospital information system (ERP)
- Tech. description: Tryton-based form application RPC backend with Node.js-based frontend
- Depends on: Node.js, Postgres, Python3
- Used by: User
- Related skills: Node.js build systems (grunt, npm), python modules (setuptools, virtualenv)
KanBoard
- General description: Kanban project management
- Tech. description: Symfony-based forms application
- Depends on: PHP, Postgres
- Used by: User
- Related skills: PHP build systems and frameworks (Composer, Symfony)
MifosX
- General description:
- Tech. description: Spring-based forms application RPC backend with Node.js-packed frontend
- Depends on: MariaDB, Tomcat
- Used by: User
- Related skills: Java frameworks (Spring), Node.js and JavaScript development (Angular, Bower, Grunt)
Motech
- General description:
- Tech. description: Apache Felix-based forms application
- Depends on: ActiveMQ, Postgres, Tomcat
- Used by: User
- Related skills: Java frameworks (Apache Felix, Spring)
Odoo
- General description:
- Tech. description: Werkzeug-based forms application RPC backend with Node.js-based frontend
- Depends on: Node.js, Postgres, Python 3
- Used by: User
- Related skills: WSGI application development
OpenDataKit
- General description:
- Tech. description: Spring and OpenRosa-based data store application
- Depends on: Postgres, Tomcat
- Used by: User
- Related skills: Java build systems and frameworks (Gradle, Spring)
OpenDataKit Build
- General description:
- Tech. description: Ruby-based forms application with Node.js-based data converter
- Depends on: Node.js, Ruby
- Used by: User
- Related skills: Node.js build systems (npm), Ruby build systems and frameworks (Bundler, Rake)
OpenMapKit
- General description:
- Tech. description: Node.js-based forms application with python2 dependencies
- Depends on: Node.js, Postgres, Python 2
- Used by: User
- Related skills: JavaScript development, Node.js build systems (Yarn)
Pan.do/ra
- General description:
- Tech. description: Python-based media store with Javascript-based frontend
- Depends on: Postgres, Python 3, RabbitMQ
- Used by: User
- Related skills: ffmpeg, imagemagick, JavaScript development (oxjs)
Sahana Eden
- General description:
- Tech. description: Web2py-based forms application
- Depends on: Postgres, Python 2
- Used by: User
- Related skills: PostGIS, python frameworks and modules (requests, selenium, Web2py)
SeedDMS
- General description:
- Tech. description: PHP-based data store application with Lucene-based fulltext index
- Depends on: PHP, Postgres
- Used by: User
- Related skills: Apache Lucene, ghostscript, LibreOffice (unoconv), imagemagick, MIME types identification
Sigmah
- General description:
- Tech. description: Apache Commons-based forms application
- Depends on: Postgres, Tomcat
- Used by: User
- Related skills: Java development (hibernate, log4j)
Ushahidi
- General description:
- Tech. description: Laravel-based RPC backend with Angular-based frontend
- Depends on: MariaDB, PHP
- Used by: User
- Related skills: JavaScript build tools and frameworks (Angular, Babel, WebPck), PHP build tools and frameworks (composer, Laravel, phinx)