Commit 389367a7 authored by jan.koester's avatar jan.koester
Browse files

test

parent 49e11bcb
Loading
Loading
Loading
Loading
Loading
+4 −0
Changes for Dockerfile: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -28,6 +28,10 @@ RUN git clone https://tuxist.de/git/jan.koester/libconfplus.git
RUN mkdir libconfplus/build
RUN cd libconfplus/build && cmake ../ -G Ninja -DCMAKE_CXX_FLAGS="-fPIC" && ninja install

RUN git clone https://tuxist.de/git/jan.koester/libparitypp.git && \
    mkdir libparitypp/build && \
    cd libparitypp/build && cmake ../ -G Ninja && ninja install

RUN git clone https://tuxist.de/git/jan.koester/authdb.git
RUN mkdir authdb/build
RUN cd authdb/build && cmake ../ -G Ninja -DDATAPATH:PATH=/usr/local/share/authdb && ninja install

test/docker/.gitignore

0 → 100644
+1 −0
Changes for test/docker/.gitignore: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
certs/

test/docker/Dockerfile

0 → 100644
+58 −0
Changes for test/docker/Dockerfile: 58 added lines, 0 removed lines.
Original line number Diff line number Diff line
FROM node:alpine AS build
WORKDIR /build

RUN apk update --no-cache && apk upgrade --no-cache
RUN apk add --no-cache cmake ninja clang alpine-sdk yaml-dev brotli-dev json-c-dev util-linux-dev

RUN git clone https://tuxist.de/git/jan.koester/libcmdplus.git && \
    mkdir libcmdplus/build && \
    cd libcmdplus/build && cmake ../ -G Ninja -DCMAKE_CXX_FLAGS="-fPIC" && ninja install

RUN git clone https://tuxist.de/git/tuxist/uuidplus.git && \
    mkdir uuidplus/build && \
    cd uuidplus/build && cmake ../ -G Ninja && ninja install

RUN git clone https://tuxist.de/git/jan.koester/libnetplus.git && \
    mkdir libnetplus/build && \
    cd libnetplus/build && cmake ../ -G Ninja && ninja install

RUN git clone https://tuxist.de/git/jan.koester/libhtmlpp.git && \
    mkdir libhtmlpp/build && \
    cd libhtmlpp/build && cmake ../ -G Ninja && ninja install

RUN git clone https://tuxist.de/git/jan.koester/libhttppp.git && \
    mkdir libhttppp/build && \
    cd libhttppp/build && cmake ../ -G Ninja && ninja install

RUN git clone https://tuxist.de/git/jan.koester/libconfplus.git && \
    mkdir libconfplus/build && \
    cd libconfplus/build && cmake ../ -G Ninja -DCMAKE_CXX_FLAGS="-fPIC" && ninja install

RUN git clone https://tuxist.de/git/tuxist/libparitypp.git && \
    mkdir libparitypp/build && \
    cd libparitypp/build && cmake ../ -G Ninja && ninja install

RUN git clone https://tuxist.de/git/jan.koester/authdb.git && \
    mkdir authdb/build && \
    cd authdb/build && cmake ../ -G Ninja -DDATAPATH:PATH=/usr/local/share/authdb && ninja install

# --- Runtime stage ---
FROM node:alpine

RUN addgroup authdb && \
    adduser authdb -h /var/lib/authdb -S -G authdb

RUN apk update && apk upgrade && \
    apk add --no-cache yaml brotli openssl json-c libuuid libstdc++

RUN mkdir -p /etc/authdb/certs /usr/local/share/authdb /var/log/authdb && \
    chown authdb:authdb /var/lib/authdb /var/log/authdb

COPY --from=build /usr/local/bin/authdb /usr/local/bin/
COPY --from=build /usr/local/lib /usr/local/lib/
COPY --from=build /usr/local/share/authdb /usr/local/share/authdb/

# Ports: 9090 = HTTP API, 4433 = cluster QUIC
EXPOSE 9090 4433

CMD ["authdb", "-f", "true", "-c", "yaml:///etc/authdb/config.yaml"]

test/docker/README.md

0 → 100644
+46 −0
Changes for test/docker/README.md: 46 added lines, 0 removed lines.
Original line number Diff line number Diff line
# authdb Cluster Test (Docker)

3-node authdb cluster using Reed-Solomon erasure coding (k=2 data, m=1 parity).

## Setup

```bash
# 1. Generate TLS certificates
./gen-certs.sh

# 2. Build and start the cluster
docker compose up --build
```

## Ports

| Node  | HTTP API    | Cluster (QUIC) |
|-------|-------------|----------------|
| node1 | localhost:9091 | internal:4433 |
| node2 | localhost:9092 | internal:4433 |
| node3 | localhost:9093 | internal:4433 |

## Test

Open any node's web UI to run the initial wizard:

```
https://localhost:9091/settings/index
https://localhost:9092/settings/index
https://localhost:9093/settings/index
```

Data written to one node is replicated to the other two via the cluster backend.

## Stop

```bash
docker compose down
```

## Files

- `gen-certs.sh` — Generates DER certificates for all 3 nodes
- `config-node{1,2,3}.yaml` — Per-node configuration (each peers with the other 2)
- `Dockerfile` — Multi-stage Alpine build including libparitypp
- `docker-compose.yml` — 3 containers on a shared bridge network
+20 −0
Changes for test/docker/config-node2.yaml: 20 added lines, 0 removed lines.
Original line number Diff line number Diff line
AUTHDB:
    PLUGINS:
        PATH: "/usr/local/lib/authdb/plugins"
    SSL:
        KEY: /etc/authdb/certs/node2-key.der
        CERT: /etc/authdb/certs/node2-cert.der
    PORT: 9090
    BIND: "0.0.0.0"
    MAXCONN: 1024
    CLUSTER:
        ENABLE: "true"
        BIND: "0.0.0.0"
        PORT: 4433
        AUTH_NAME: "cluster"
        AUTH_KEY: "testclusterkey123"
        DATA_BLOCKS: 2
        PARITY_BLOCKS: 1
        PEERS:
            - "node1:4433"
            - "node3:4433"
Loading