From b6f2668c7238f597048dcd1f8a0b49bf16b7c968 Mon Sep 17 00:00:00 2001 From: afterlifepro Date: Sat, 22 Nov 2025 22:43:31 +0000 Subject: [PATCH] absorb knot submodule into not a submodule ? --- .gitmodules | 3 -- commit.sh | 2 +- compose.yml | 1 + knot | 1 - knot/Dockerfile | 40 +++++++++++++++++++ .../s6-rc.d/create-sshd-host-keys/type | 1 + .../s6-rc.d/create-sshd-host-keys/up | 1 + .../s6-rc.d/knotserver/dependencies.d/base | 0 .../etc/s6-overlay/s6-rc.d/knotserver/run | 3 ++ .../etc/s6-overlay/s6-rc.d/knotserver/type | 1 + .../s6-rc.d/sshd/dependencies.d/base | 0 .../sshd/dependencies.d/create-sshd-host-keys | 0 knot/rootfs/etc/s6-overlay/s6-rc.d/sshd/run | 3 ++ knot/rootfs/etc/s6-overlay/s6-rc.d/sshd/type | 1 + .../s6-rc.d/user/contents.d/knotserver | 0 .../s6-overlay/s6-rc.d/user/contents.d/sshd | 0 .../s6-overlay/scripts/create-sshd-host-keys | 21 ++++++++++ .../etc/s6-overlay/scripts/keys-wrapper | 8 ++++ .../authorized_keys_command.conf | 3 ++ .../etc/ssh/sshd_config.d/tangled_sshd.conf | 9 +++++ 20 files changed, 93 insertions(+), 5 deletions(-) delete mode 100644 .gitmodules delete mode 160000 knot create mode 100644 knot/Dockerfile create mode 100644 knot/rootfs/etc/s6-overlay/s6-rc.d/create-sshd-host-keys/type create mode 100644 knot/rootfs/etc/s6-overlay/s6-rc.d/create-sshd-host-keys/up create mode 100644 knot/rootfs/etc/s6-overlay/s6-rc.d/knotserver/dependencies.d/base create mode 100755 knot/rootfs/etc/s6-overlay/s6-rc.d/knotserver/run create mode 100644 knot/rootfs/etc/s6-overlay/s6-rc.d/knotserver/type create mode 100644 knot/rootfs/etc/s6-overlay/s6-rc.d/sshd/dependencies.d/base create mode 100644 knot/rootfs/etc/s6-overlay/s6-rc.d/sshd/dependencies.d/create-sshd-host-keys create mode 100755 knot/rootfs/etc/s6-overlay/s6-rc.d/sshd/run create mode 100644 knot/rootfs/etc/s6-overlay/s6-rc.d/sshd/type create mode 100644 knot/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/knotserver create mode 100644 knot/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/sshd create mode 100755 knot/rootfs/etc/s6-overlay/scripts/create-sshd-host-keys create mode 100644 knot/rootfs/etc/s6-overlay/scripts/keys-wrapper create mode 100644 knot/rootfs/etc/ssh/sshd_config.d/authorized_keys_command.conf create mode 100644 knot/rootfs/etc/ssh/sshd_config.d/tangled_sshd.conf diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 4840571..0000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "knot"] - path = knot - url = https://tangled.org/@tangled.org/knot-docker diff --git a/commit.sh b/commit.sh index 1e7280b..3754407 100755 --- a/commit.sh +++ b/commit.sh @@ -14,7 +14,7 @@ git submodule update --recursive --remote # restart/rebuild all containers docker compose build --no-cache -docker compose up -d --force-recreate +docker compose up -d --force-recreate --remove-orphans # clear out dockerfiles to stop my drive exploding docker system prune -af diff --git a/compose.yml b/compose.yml index af7a314..80bc779 100644 --- a/compose.yml +++ b/compose.yml @@ -15,6 +15,7 @@ services: args: UID: 1000 GID: 1000 + TAG: v1.11.0-alpha restart: unless-stopped ports: - "5555:5555" diff --git a/knot b/knot deleted file mode 160000 index c0af00f..0000000 --- a/knot +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c0af00f2f0baa65b8e5ce4731213c4085d198b0a diff --git a/knot/Dockerfile b/knot/Dockerfile new file mode 100644 index 0000000..4a30308 --- /dev/null +++ b/knot/Dockerfile @@ -0,0 +1,40 @@ +FROM golang:1.24-alpine as builder +ENV KNOT_REPO_SCAN_PATH=/home/git/repositories +ENV CGO_ENABLED=1 + +ARG TAG='v1.10.0-alpha' + +WORKDIR /app +RUN apk add git gcc musl-dev +RUN git clone -b ${TAG} https://tangled.org/@tangled.org/core . +RUN go build -o /usr/bin/knot -ldflags '-s -w -extldflags "-static"' ./cmd/knot + +FROM alpine:edge +EXPOSE 5555 +EXPOSE 22 + +LABEL org.opencontainers.image.title='knot' +LABEL org.opencontainers.image.description='data server for tangled' +LABEL org.opencontainers.image.source='https://tangled.org/@tangled.org/knot-docker' +LABEL org.opencontainers.image.url='https://tangled.org' +LABEL org.opencontainers.image.vendor='tangled.org' +LABEL org.opencontainers.image.licenses='MIT' + +ARG UID=1000 +ARG GID=1000 + +COPY rootfs . +RUN chmod 755 /etc +RUN chmod -R 755 /etc/s6-overlay +RUN apk add shadow s6-overlay execline openssl openssh git curl bash +RUN groupadd -g $GID -f git +RUN useradd -u $UID -g $GID -d /home/git git +RUN openssl rand -hex 16 | passwd --stdin git +RUN mkdir -p /home/git/repositories && chown -R git:git /home/git +COPY --from=builder /usr/bin/knot /usr/bin +RUN mkdir /app && chown -R git:git /app + +HEALTHCHECK --interval=60s --timeout=30s --start-period=5s --retries=3 \ + cmd curl -f http://localhost:5555 || exit 1 + +ENTRYPOINT ["/init"] diff --git a/knot/rootfs/etc/s6-overlay/s6-rc.d/create-sshd-host-keys/type b/knot/rootfs/etc/s6-overlay/s6-rc.d/create-sshd-host-keys/type new file mode 100644 index 0000000..bdd22a1 --- /dev/null +++ b/knot/rootfs/etc/s6-overlay/s6-rc.d/create-sshd-host-keys/type @@ -0,0 +1 @@ +oneshot diff --git a/knot/rootfs/etc/s6-overlay/s6-rc.d/create-sshd-host-keys/up b/knot/rootfs/etc/s6-overlay/s6-rc.d/create-sshd-host-keys/up new file mode 100644 index 0000000..d25eb18 --- /dev/null +++ b/knot/rootfs/etc/s6-overlay/s6-rc.d/create-sshd-host-keys/up @@ -0,0 +1 @@ +/etc/s6-overlay/scripts/create-sshd-host-keys diff --git a/knot/rootfs/etc/s6-overlay/s6-rc.d/knotserver/dependencies.d/base b/knot/rootfs/etc/s6-overlay/s6-rc.d/knotserver/dependencies.d/base new file mode 100644 index 0000000..e69de29 diff --git a/knot/rootfs/etc/s6-overlay/s6-rc.d/knotserver/run b/knot/rootfs/etc/s6-overlay/s6-rc.d/knotserver/run new file mode 100755 index 0000000..a210fc4 --- /dev/null +++ b/knot/rootfs/etc/s6-overlay/s6-rc.d/knotserver/run @@ -0,0 +1,3 @@ +#!/command/with-contenv ash + +exec s6-setuidgid git /usr/bin/knot server diff --git a/knot/rootfs/etc/s6-overlay/s6-rc.d/knotserver/type b/knot/rootfs/etc/s6-overlay/s6-rc.d/knotserver/type new file mode 100644 index 0000000..5883cff --- /dev/null +++ b/knot/rootfs/etc/s6-overlay/s6-rc.d/knotserver/type @@ -0,0 +1 @@ +longrun diff --git a/knot/rootfs/etc/s6-overlay/s6-rc.d/sshd/dependencies.d/base b/knot/rootfs/etc/s6-overlay/s6-rc.d/sshd/dependencies.d/base new file mode 100644 index 0000000..e69de29 diff --git a/knot/rootfs/etc/s6-overlay/s6-rc.d/sshd/dependencies.d/create-sshd-host-keys b/knot/rootfs/etc/s6-overlay/s6-rc.d/sshd/dependencies.d/create-sshd-host-keys new file mode 100644 index 0000000..e69de29 diff --git a/knot/rootfs/etc/s6-overlay/s6-rc.d/sshd/run b/knot/rootfs/etc/s6-overlay/s6-rc.d/sshd/run new file mode 100755 index 0000000..a7efea4 --- /dev/null +++ b/knot/rootfs/etc/s6-overlay/s6-rc.d/sshd/run @@ -0,0 +1,3 @@ +#!/usr/bin/execlineb -P + +/usr/sbin/sshd -e -D diff --git a/knot/rootfs/etc/s6-overlay/s6-rc.d/sshd/type b/knot/rootfs/etc/s6-overlay/s6-rc.d/sshd/type new file mode 100644 index 0000000..5883cff --- /dev/null +++ b/knot/rootfs/etc/s6-overlay/s6-rc.d/sshd/type @@ -0,0 +1 @@ +longrun diff --git a/knot/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/knotserver b/knot/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/knotserver new file mode 100644 index 0000000..e69de29 diff --git a/knot/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/sshd b/knot/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/sshd new file mode 100644 index 0000000..e69de29 diff --git a/knot/rootfs/etc/s6-overlay/scripts/create-sshd-host-keys b/knot/rootfs/etc/s6-overlay/scripts/create-sshd-host-keys new file mode 100755 index 0000000..e435536 --- /dev/null +++ b/knot/rootfs/etc/s6-overlay/scripts/create-sshd-host-keys @@ -0,0 +1,21 @@ +#!/usr/bin/execlineb -P + +foreground { + if -n { test -d /etc/ssh/keys } + mkdir /etc/ssh/keys +} + +foreground { + if -n { test -f /etc/ssh/keys/ssh_host_rsa_key } + ssh-keygen -t rsa -f /etc/ssh/keys/ssh_host_rsa_key -q -N "" +} + +foreground { + if -n { test -f /etc/ssh/keys/ssh_host_ecdsa_key } + ssh-keygen -t rsa -f /etc/ssh/keys/ssh_host_ecdsa_key -q -N "" +} + +foreground { + if -n { test -f /etc/ssh/keys/ssh_host_ed25519_key } + ssh-keygen -t rsa -f /etc/ssh/keys/ssh_host_ed25519_key -q -N "" +} diff --git a/knot/rootfs/etc/s6-overlay/scripts/keys-wrapper b/knot/rootfs/etc/s6-overlay/scripts/keys-wrapper new file mode 100644 index 0000000..e35ffc3 --- /dev/null +++ b/knot/rootfs/etc/s6-overlay/scripts/keys-wrapper @@ -0,0 +1,8 @@ +#!/bin/sh + +# Execute the knot keys command with proper shell context +exec /bin/sh -c '/usr/bin/knot keys -output authorized-keys \ + -internal-api "http://${KNOT_SERVER_INTERNAL_LISTEN_ADDR:-localhost:5444}" \ + -git-dir "${KNOT_REPO_SCAN_PATH:-/home/git/repositories}" \ + -log-path "/tmp/knotguard.log"' + diff --git a/knot/rootfs/etc/ssh/sshd_config.d/authorized_keys_command.conf b/knot/rootfs/etc/ssh/sshd_config.d/authorized_keys_command.conf new file mode 100644 index 0000000..ec43e5b --- /dev/null +++ b/knot/rootfs/etc/ssh/sshd_config.d/authorized_keys_command.conf @@ -0,0 +1,3 @@ +Match User git + AuthorizedKeysCommand /usr/bin/knot keys -o authorized-keys -git-dir /home/git/repositories + AuthorizedKeysCommandUser nobody diff --git a/knot/rootfs/etc/ssh/sshd_config.d/tangled_sshd.conf b/knot/rootfs/etc/ssh/sshd_config.d/tangled_sshd.conf new file mode 100644 index 0000000..d75f31e --- /dev/null +++ b/knot/rootfs/etc/ssh/sshd_config.d/tangled_sshd.conf @@ -0,0 +1,9 @@ +HostKey /etc/ssh/keys/ssh_host_rsa_key +HostKey /etc/ssh/keys/ssh_host_ecdsa_key +HostKey /etc/ssh/keys/ssh_host_ed25519_key + +PasswordAuthentication no + +Match User git + AuthorizedKeysCommand /etc/s6-overlay/scripts/keys-wrapper + AuthorizedKeysCommandUser nobody -- 2.51.2