Ktistec in the pasture

Ktistec 3.13.0 (peers/ktistec.sh): built from its tag (images/ktistec, its own Dockerfile pinned), set up through its
API. scenarios/ktistec.sh, 27 checks, twice in a row: follows, posts, replies, likes and boosts with their undos both
ways, its poll and alice's vote, FEP-044f quotes both ways, edits and deletions both ways, the unfollow, statistics. It
is driven through the part of the Mastodon API it speaks and its own outbox API, and read from a copy of its SQLite
database, since its API counts no likes or boosts. CLAUDE.md also asks that a change to what PrivaPub sends be run
against every peer before it is committed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LsXgEaXee4GCU1hwYgPJXw
This commit is contained in:
thepraandClaude Opus 5.5 committed 2026-10-06 14:09:29 +02:00
1 parent b478049303
commit 9872b78677
7 files changed
+218

No files matched your search

@@ -0,0 +1,24 @@
# Ktistec 3.13.0 from its tag: the project publishes no image. Its own Dockerfile, pinned: a static server built with
# Crystal, its scripts and styles with node
FROM docker.io/crystallang/crystal:1.19.1-alpine AS builder
RUN apk -U --no-progress add make sqlite-static yaml-dev musl-dev gc-dev gc-static pcre2-dev pcre2-static gmp-dev gmp-static
WORKDIR /build
RUN git clone --branch v3.13.0 --depth 1 https://github.com/toddsundsted/ktistec .
RUN shards install --production
RUN crystal build src/ktistec/server.cr --static --no-debug --release
FROM docker.io/library/node:22-alpine AS nodebuilder
WORKDIR /build
COPY --from=builder /build /build
RUN npm ci && npm run build
FROM docker.io/library/alpine:3.22
RUN apk -U --no-progress --no-cache add tzdata
WORKDIR /app
COPY --from=nodebuilder /build/etc /app/etc
COPY --from=nodebuilder /build/public /app/public
COPY --from=nodebuilder /build/server /bin/server
RUN mkdir /db && ln -s /app/public/uploads /uploads
ENV KTISTEC_DB=/db/ktistec.db
EXPOSE 3000
CMD ["/bin/server"]