FROM golang:1.23-alpine AS build RUN apk add git go gcc musl-dev RUN git clone https://tangled.sh/@tangled.sh/core /src WORKDIR /src ENV CGO_ENABLED=1 RUN go mod download RUN go build -o ./bin/knotserver ./cmd/knotserver RUN go build -o ./bin/keyfetch ./cmd/keyfetch RUN go build -o ./bin/repoguard ./cmd/repoguard FROM alpine RUN apk add git openssh-server su-exec RUN addgroup -g 1000 git && \ adduser -D -u 1000 -G git -h /home/git git && \ mkdir -p /home/git && \ chown -R git:git /home/git && \ passwd -u git COPY --from=build /src/bin/knotserver /usr/bin/knotserver COPY --from=build /src/bin/keyfetch /usr/bin/keyfetch COPY --from=build /src/bin/repoguard /usr/bin/repoguard COPY sshd_config /etc/ssh/sshd_config COPY entrypoint.sh /entrypoint.sh ENV KNOT_REPO_SCAN_PATH=/home/git ENV KNOT_REPO_MAIN_BRANCH=main ENV KNOT_SERVER_DB_PATH=/home/git/knotserver.db ENV APPVIEW_ENDPOINT=https://tangled.sh ENV KNOT_SERVER_INTERNAL_LISTEN_ADDR=0.0.0.0:5444 ENV KNOT_SERVER_LISTEN_ADDR=0.0.0.0:5555 ENTRYPOINT ["/entrypoint.sh"]