Warning
This is prototype-phase software, please use with caution!
cliicckkkkk, cliickkkk
https://hub.docker.com/r/meltyness/ratchet-cycle
This is some glue code / an installer / deployment model for:
The docker image is built simply with a docker command like this:
docker build --no-cache -t ratchet-cycle .Once ratchet-cycle is installed, a container can be launched with.
# Replace RATCHET_PAWL_MASKING_KEY with something private, non-obvious, and permanent.
docker run \ # Command docker to open a new container
-p 49:4449 \ # Exposing the container's port 4449 as port 49 on the host
-p 443:8000 \ # Exposing the container's port 8000 as port 443 on the host
-e RATCHET_PAWL_MASKING_KEY=$MY_SECURE_KEY \ # Using a secure key stored in a shell variable, which will be placed into the container environment every start.
--memory 1G \ # Permitting at most 1G of RAM
--memory-swap 1G \ # Forbidding any swap exceeding this memory constraint. https://docs.docker.com/engine/containers/resource_constraints/#--memory-swap-details
meltyness/ratchet-cycle
# Monitor output for the initial username and password.Or in powershell:
docker run `
-p 49:4449 `
-p 443:8000 `
-e RATCHET_PAWL_MASKING_KEY=$MY_SECURE_KEY `
--memory 1G `
--memory-swap 1G `
meltyness/ratchet-cycleAnd navigate to https://localhost which will have a self-signed hosted HTTPS site for you to administer ratchet.
ratchet-pawl writes out a file called ratchet_db.redb. That file is encrypted using the AES256 key written in RATCHET_PAWL_MASKING_KEY, so if you intend to recover it then you could ensure that the same key is used from one deployment to another; for example if a volume-container architectural separation is desired.
On first launch, an API key is intialized and written into the embedded database. The same API key is spewed to stdout by ratchet-pawl and then scooped up by ratchet-cycle and handed over to the clients, creds, and long-poll commands.
Speaking of which, ratchet associates to pawl through the following 3 interfaces:
clientswhich lists TACACS+ client networks and their associated keyscredswhich lists authenticateable users, and the hash of their passwordlong-pollwhich waits until clients or creds contain interesting changes, whichratchetthen scoops up, at its leisure. There's also an update serial that can be exchanged so no updates are missed.

