knot#
OCI Container to run your own tangled knot and host the data of your own repositories.
Pre-built Images#
Pre-built images are available in an ATCR repository starting at v1.12.0-alpha.
docker pull atcr.io/bram.gotink.be/knot
This image differs from the pseudo-official tngl/knot image. The code is the same, but the image is set up differently:
- It is designed to be run with a non-root user (userid 10999), although root works just fine if you prefer
- Allow the OCI runtime to restart the container if anything fails, rather than package an entire init system that manages these programs
Building The Image#
docker build --platform linux/amd64,linux/arm64 -t atcr.io/bram.gotink.be/knot --build-arg VERSION=v1.13.0-alpha .
Setting Up The Image#
This image is designed to work with stricter permissions in e.g. kubernetes.
The container requires three volumes:
| Environment variable | Default value | Usage |
|---|---|---|
KNOT_REPO_SCAN_PATH |
/repositories |
storage directory the repositories |
KNOT_SERVER_DB_PATH |
/data/knotserver.db |
the sqlite database, should be placed inside a volume |
KNOT_SSH_KEYS_PATH |
/ssh-keys |
directory in which to store SSH host keys |
Two environment variables are required:
| Environment variable | Usage |
|---|---|
KNOT_SERVER_HOSTNAME |
Domain name of the server (example.com) |
KNOT_SERVER_OWNER |
Did of the owner (user account) of the knot server (did:plc:yourdidgoeshere) |
The container listens on two ports:
- 5555 handles HTTP traffic and should be mapped onto port 443
- 2222 handles SSH and should be mapped onto port 22