IP addresses break, dial keys instead. A library that adds QUIC + NAT Traversal to your apps.
docker pull n0-computer/iroh:latest
docker run -d --name iroh -p 80:80 --restart always n0-computer/iroh:latest
podman run -d --name iroh -p 80:80 --restart always n0-computer/iroh:latest
skopeo inspect docker://docker.io/n0-computer/iroh:latest
oras pull n0-computer/iroh:latest
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 [""]