From de3ab1d51927c6019e63426ddd0f506a7560f3c1 Mon Sep 17 00:00:00 2001 From: Anirudh Oppiliappan Date: Wed, 4 Jun 2025 19:08:57 +0300 Subject: [PATCH] docker: move to @tangled.sh/knot-docker Signed-off-by: Anirudh Oppiliappan --- docker/Dockerfile | 37 ------------------- docker/docker-compose.yml | 33 ----------------- .../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 docker/rootfs/etc/s6-overlay/s6-rc.d/sshd/run | 3 -- .../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/ssh/sshd_config.d/tangled_sshd.conf | 9 ----- docs/knot-hosting.md | 22 +++-------- 16 files changed, 5 insertions(+), 127 deletions(-) delete mode 100644 docker/Dockerfile delete mode 100644 docker/docker-compose.yml delete mode 100644 docker/rootfs/etc/s6-overlay/s6-rc.d/create-sshd-host-keys/type delete mode 100644 docker/rootfs/etc/s6-overlay/s6-rc.d/create-sshd-host-keys/up delete mode 100644 docker/rootfs/etc/s6-overlay/s6-rc.d/knotserver/dependencies.d/base delete mode 100755 docker/rootfs/etc/s6-overlay/s6-rc.d/knotserver/run delete mode 100644 docker/rootfs/etc/s6-overlay/s6-rc.d/knotserver/type delete mode 100644 docker/rootfs/etc/s6-overlay/s6-rc.d/sshd/dependencies.d/base delete mode 100644 docker/rootfs/etc/s6-overlay/s6-rc.d/sshd/dependencies.d/create-sshd-host-keys delete mode 100755 docker/rootfs/etc/s6-overlay/s6-rc.d/sshd/run delete mode 100644 docker/rootfs/etc/s6-overlay/s6-rc.d/sshd/type delete mode 100644 docker/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/knotserver delete mode 100644 docker/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/sshd delete mode 100755 docker/rootfs/etc/s6-overlay/scripts/create-sshd-host-keys delete mode 100644 docker/rootfs/etc/ssh/sshd_config.d/tangled_sshd.conf diff --git a/docker/Dockerfile b/docker/Dockerfile deleted file mode 100644 index 891e68f4..00000000 --- a/docker/Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -FROM docker.io/golang:1.24-alpine3.21 AS build - -ENV CGO_ENABLED=1 -WORKDIR /usr/src/app -COPY go.mod go.sum ./ - -RUN apk add --no-cache gcc musl-dev -RUN go mod download - -COPY . . -RUN go build -v \ - -o /usr/local/bin/knot \ - -ldflags='-s -w -extldflags "-static"' \ - ./cmd/knot - -FROM docker.io/alpine:3.21 - -LABEL org.opencontainers.image.title=Tangled -LABEL org.opencontainers.image.description="Tangled is a decentralized and open code collaboration platform, built on atproto." -LABEL org.opencontainers.image.vendor=Tangled.sh -LABEL org.opencontainers.image.licenses=MIT -LABEL org.opencontainers.image.url=https://tangled.sh -LABEL org.opencontainers.image.source=https://tangled.sh/@tangled.sh/core - -RUN apk add --no-cache shadow s6-overlay execline openssh git && \ - adduser --disabled-password git && \ - # We need to set password anyway since otherwise ssh won't work - head -c 32 /dev/random | base64 | tr -dc 'a-zA-Z0-9' | passwd git --stdin && \ - mkdir /app && mkdir /home/git/repositories - -COPY --from=build /usr/local/bin/knot /usr/local/bin -COPY docker/rootfs/ . - -EXPOSE 22 -EXPOSE 5555 - -ENTRYPOINT ["/bin/sh", "-c", "chown git:git /app && chown git:git /home/git/repositories && /init"] diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml deleted file mode 100644 index 7a1ad948..00000000 --- a/docker/docker-compose.yml +++ /dev/null @@ -1,33 +0,0 @@ -services: - knot: - build: - context: .. - dockerfile: docker/Dockerfile - environment: - KNOT_SERVER_HOSTNAME: ${KNOT_SERVER_HOSTNAME} - KNOT_SERVER_SECRET: ${KNOT_SERVER_SECRET} - KNOT_SERVER_DB_PATH: "/app/knotserver.db" - KNOT_REPO_SCAN_PATH: "/home/git/repositories" - volumes: - - "./keys:/etc/ssh/keys" - - "./repositories:/home/git/repositories" - - "./server:/app" - ports: - - "2222:22" - frontend: - image: caddy:2-alpine - command: > - caddy - reverse-proxy - --from ${KNOT_SERVER_HOSTNAME} - --to knot:5555 - depends_on: - - knot - ports: - - "443:443" - - "443:443/udp" - volumes: - - caddy_data:/data - restart: always -volumes: - caddy_data: diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/create-sshd-host-keys/type b/docker/rootfs/etc/s6-overlay/s6-rc.d/create-sshd-host-keys/type deleted file mode 100644 index bdd22a18..00000000 --- a/docker/rootfs/etc/s6-overlay/s6-rc.d/create-sshd-host-keys/type +++ /dev/null @@ -1 +0,0 @@ -oneshot diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/create-sshd-host-keys/up b/docker/rootfs/etc/s6-overlay/s6-rc.d/create-sshd-host-keys/up deleted file mode 100644 index d25eb18e..00000000 --- a/docker/rootfs/etc/s6-overlay/s6-rc.d/create-sshd-host-keys/up +++ /dev/null @@ -1 +0,0 @@ -/etc/s6-overlay/scripts/create-sshd-host-keys diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/knotserver/dependencies.d/base b/docker/rootfs/etc/s6-overlay/s6-rc.d/knotserver/dependencies.d/base deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/knotserver/run b/docker/rootfs/etc/s6-overlay/s6-rc.d/knotserver/run deleted file mode 100755 index 3d5ecf1b..00000000 --- a/docker/rootfs/etc/s6-overlay/s6-rc.d/knotserver/run +++ /dev/null @@ -1,3 +0,0 @@ -#!/command/with-contenv ash - -exec s6-setuidgid git /usr/local/bin/knot server diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/knotserver/type b/docker/rootfs/etc/s6-overlay/s6-rc.d/knotserver/type deleted file mode 100644 index 5883cff0..00000000 --- a/docker/rootfs/etc/s6-overlay/s6-rc.d/knotserver/type +++ /dev/null @@ -1 +0,0 @@ -longrun diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/sshd/dependencies.d/base b/docker/rootfs/etc/s6-overlay/s6-rc.d/sshd/dependencies.d/base deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/sshd/dependencies.d/create-sshd-host-keys b/docker/rootfs/etc/s6-overlay/s6-rc.d/sshd/dependencies.d/create-sshd-host-keys deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/sshd/run b/docker/rootfs/etc/s6-overlay/s6-rc.d/sshd/run deleted file mode 100755 index a7efea47..00000000 --- a/docker/rootfs/etc/s6-overlay/s6-rc.d/sshd/run +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/execlineb -P - -/usr/sbin/sshd -e -D diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/sshd/type b/docker/rootfs/etc/s6-overlay/s6-rc.d/sshd/type deleted file mode 100644 index 5883cff0..00000000 --- a/docker/rootfs/etc/s6-overlay/s6-rc.d/sshd/type +++ /dev/null @@ -1 +0,0 @@ -longrun diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/knotserver b/docker/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/knotserver deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/sshd b/docker/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/sshd deleted file mode 100644 index e69de29b..00000000 diff --git a/docker/rootfs/etc/s6-overlay/scripts/create-sshd-host-keys b/docker/rootfs/etc/s6-overlay/scripts/create-sshd-host-keys deleted file mode 100755 index e4355360..00000000 --- a/docker/rootfs/etc/s6-overlay/scripts/create-sshd-host-keys +++ /dev/null @@ -1,21 +0,0 @@ -#!/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/docker/rootfs/etc/ssh/sshd_config.d/tangled_sshd.conf b/docker/rootfs/etc/ssh/sshd_config.d/tangled_sshd.conf deleted file mode 100644 index f09360eb..00000000 --- a/docker/rootfs/etc/ssh/sshd_config.d/tangled_sshd.conf +++ /dev/null @@ -1,9 +0,0 @@ -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 /usr/local/bin/knot keys -o authorized-keys - AuthorizedKeysCommandUser nobody diff --git a/docs/knot-hosting.md b/docs/knot-hosting.md index 5b88ebac..057e6ba7 100644 --- a/docs/knot-hosting.md +++ b/docs/knot-hosting.md @@ -7,25 +7,13 @@ So you want to run your own knot server? Great! Here are a few prerequisites: 3. A valid SSL certificate for your domain. There's a couple of ways to get started: -* NixOS: refer to [flake.nix](https://tangled.sh/@tangled.sh/core/blob/master/flake.nix) -* Docker: Documented below. +* NixOS: refer to +[flake.nix](https://tangled.sh/@tangled.sh/core/blob/master/flake.nix) +* Docker: Documented at +[@tangled.sh/knot-docker](https://tangled.sh/@tangled.sh/knot-docker) +(community maintained: support is not guaranteed!) * Manual: Documented below. -## docker setup - -Clone this repository: - -``` -git clone https://tangled.sh/@tangled.sh/core -``` - -Modify the `docker/docker-compose.yml`, specifically the -`KNOT_SERVER_SECRET` and `KNOT_SERVER_HOSTNAME` env vars. Then run: - -``` -docker compose -f docker/docker-compose.yml up -``` - ## manual setup First, clone this repository: -- 2.51.2