Self-hosted HTML artifact publisher. Single Go binary, SQLite metadata, HTML on disk. Features: password-protected artifacts, per-artifact expiration, admin dashboard with view metrics (privacy-preserving daily-salt visitor hash, sparklines, 30-day SVG chart, top referrers), rate-limited unlock endpoint. Packaged as a Docker image (two-stage, CGO_ENABLED=0, pure-Go SQLite). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
19 lines
618 B
Docker
19 lines
618 B
Docker
FROM golang:1.23-alpine AS build
|
|
WORKDIR /src
|
|
ENV CGO_ENABLED=0 GOFLAGS=-buildvcs=false
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
COPY . .
|
|
RUN go build -ldflags="-s -w" -o /out/artifacto ./cmd/artifacto
|
|
|
|
FROM alpine:3.20
|
|
RUN apk add --no-cache ca-certificates tzdata wget && adduser -D -u 10001 app
|
|
COPY --from=build /out/artifacto /usr/local/bin/artifacto
|
|
VOLUME /data
|
|
RUN mkdir -p /data && chown app:app /data
|
|
USER app
|
|
EXPOSE 3000
|
|
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
|
|
CMD wget -qO- http://localhost:3000/healthz >/dev/null 2>&1 || exit 1
|
|
ENTRYPOINT ["/usr/local/bin/artifacto"]
|