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
- Host: GitHub
- URL: https://github.com/offspot/imager-service
- Owner: offspot
- License: gpl-3.0
- Created: 2018-07-06T17:26:03.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2025-12-04T14:46:40.000Z (about 2 months ago)
- Last Synced: 2025-12-06T18:49:26.268Z (about 2 months ago)
- Topics: kiwix, offline, raspberry-pi, sd-card, wikipedia
- Language: Python
- Homepage: https://imager.kiwix.org/
- Size: 104 MB
- Stars: 19
- Watchers: 4
- Forks: 9
- Open Issues: 77
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
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).
[](https://www.codefactor.io/repository/github/offspot/imager-service)
[](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.