iroh Docker & Self-Hosted Deployment

GitHub

IP addresses break, dial keys instead. A library that adds QUIC + NAT Traversal to your apps.

1. Pull Image (DOCKERHUB) docker pull n0-computer/iroh:latest
2. Docker Run (1-Click Launch) docker run -d --name iroh -p 80:80 --restart always n0-computer/iroh:latest
3. Podman Run podman run -d --name iroh -p 80:80 --restart always n0-computer/iroh:latest
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/n0-computer/iroh:latest
5. ORAS Pull (OCI Artifact) oras pull n0-computer/iroh:latest
docker/Dockerfile
FROM rust:alpine AS chef

RUN update-ca-certificates
RUN apk add --no-cache musl-dev openssl-dev pkgconfig
RUN cargo install cargo-chef
WORKDIR /iroh

FROM chef AS planner
COPY . .
RUN cargo chef prepare  --recipe-path recipe.json

### Builder image
FROM chef AS rust_builder

RUN update-ca-certificates
RUN apk add --no-cache musl-dev openssl-dev pkgconfig

COPY --from=planner /iroh/recipe.json recipe.json
# Build dependencies - this is the caching Docker layer!
RUN cargo chef cook --release --recipe-path recipe.json

WORKDIR /iroh

# copy entire workspace
COPY . .

RUN cargo build --release --all-features

### Target image
FROM alpine:latest AS iroh-relay

RUN apk update && apk add ca-certificates && update-ca-certificates

# Copy our build, changing owndership to distroless-provided "nonroot" user,
# (65532:65532)
COPY --from=rust_builder /iroh/target/release/iroh-relay /iroh-relay

RUN chmod +x /iroh-relay

WORKDIR /

# expose the default ports
# http, https, metrics
EXPOSE  80 443 3478/udp 9090
ENTRYPOINT ["/iroh-relay"]
CMD [""]

### Target image
FROM alpine:latest AS iroh-dns-server

RUN apk update && apk add ca-certificates && update-ca-certificates

# Copy our build, changing owndership to distroless-provided "nonroot" user,
# (65532:65532)
COPY --from=rust_builder /iroh/target/release/iroh-dns-server /iroh-dns-server

RUN chmod +x /iroh-dns-server

WORKDIR /

# expose the default ports
# dns, metrics
EXPOSE 53/udp 9090
ENTRYPOINT ["/iroh-dns-server"]
CMD [""]