Kiwix Hotspot Imager is a solution for semi-automation of SD-cards creation using a central scheduler, creator workers (to create image files), downloader workers and writer workers (to write images onto real SD-cards).
As manager and scheduler uses different stacks, while both depending on the same tools uses different management scripts
./manage.py makemessages -l fr
django-admin compilemessages
pybabel -v extract -F src/babel.config -k _lz -k _ -k _l -o ./src/locale/messages.pot ./src
pybabel update -i src/locale/messages.pot -d src/locale
pybabel compile -d src/locale/
warehouse
: A container on a machine with plenty of space (must be
able to receive images created by all creators and retain them until
downloaded by downloaders). It is an FTP server which authenticates
through the scheduler.
creator
: A container fetching Tasks from scheduler, creating images
and uploading them to the warehouse.
downloader
: A container downloading images from the warehouse so it
can be written by a writer
worker (shares credentials with writer –
must be on same computer).
writer
: A container writing images to SD-cards. Image files must be
present (downloaded by the downloader
worker).
A non-docker tool installed on the Writers' host to configure and manage the workers:
- SD-slots identification
- Configuration for:
- network
- authentication
- SD-card writers (USB device to Name association)
- Auto start of
downloader
andwriter
containers.
Must be physically accessible, CPU doesn't matter, large space (256G per worker on host).
manager
: A container providing a UI to create orders and manage
users. Technically optional.
mongo
MongoDB container to hold persistent data (Users
,Tokens
,Orders
,Tasks
, etc.)scheduler
: API providing CRUD for persistent Data and managing Authentication for all services.
- Users all have a
username
+password
pair. - Scheduler offers Tokens for
username:password
. - Manager and workers identifies via Token to work the API.
- Creator and Downloader identifies with Warehouse via a Token obtained from Scheduler.
Tokens are 2 fold:
- Access token, 60mn TTL: needed to work the API.
- Refresh token, 30d TTL: allows one to get new Access Token.
- Credentials authentication returns both at once.