An open API service indexing awesome lists of open source software.

https://github.com/offspot/imager-service

Create Kiwix Hotspot images online
https://github.com/offspot/imager-service

kiwix offline raspberry-pi sd-card wikipedia

Last synced: 11 days ago
JSON representation

Create Kiwix Hotspot images online

Awesome Lists containing this project

README

          

# Kiwix Imager Service

[Kiwix Hotspot](https://www.kiwix.org/en/downloads/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).

[![CodeFactor](https://www.codefactor.io/repository/github/offspot/imager-service/badge)](https://www.codefactor.io/repository/github/offspot/imager-service)
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)

## i18n

As manager and scheduler uses different stacks, while both depending on the same tools
uses different management scripts

### manager

```sh
./manage.py makemessages -l fr
django-admin compilemessages
```

### scheduler

```sh
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

`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

`creator`: A container fetching Tasks from scheduler, creating images
and uploading them to the warehouse.

## Downloader

`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

`writer`: A container writing images to SD-cards. Image files must be
present (downloaded by the `downloader` worker).

## Writer Host (whost)

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` and `writer` containers.

Must be physically accessible, CPU doesn't matter, large space (256G
per worker on host).

## Manager

`manager`: A container providing a UI to create orders and manage
users. Technically optional.

## Scheduler

* `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.

## Authentication

* 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.

## License

[GPLv3](https://www.gnu.org/licenses/gpl-3.0) or later, see
[LICENSE](LICENSE) for more details.