mirror of
				https://github.com/dani-garcia/vaultwarden.git
				synced 2025-10-30 17:58:19 +02:00 
			
		
		
		
	Allow listening on privileged ports (below 1024) as non-root
This is done by running `setcap cap_net_bind_service=+ep` on the executable in the build stage (doing it in the runtime stage creates an extra copy of the executable that bloats the image). This only works when using the BuildKit-based builder, since the `COPY` instruction doesn't copy capabilities on the legacy builder.
This commit is contained in:
		| @@ -29,8 +29,6 @@ FROM vaultwarden/web-vault@sha256:d5f71fb05c4b87935bf51d84140db0f8716cabfe2974fb | ||||
| ########################## BUILD IMAGE  ########################## | ||||
| FROM blackdex/rust-musl:aarch64-musl-stable-1.66.1 as build | ||||
|  | ||||
|  | ||||
|  | ||||
| # Build time options to avoid dpkg warnings and help with reproducible builds. | ||||
| ENV DEBIAN_FRONTEND=noninteractive \ | ||||
|     LANG=C.UTF-8 \ | ||||
| @@ -39,7 +37,6 @@ ENV DEBIAN_FRONTEND=noninteractive \ | ||||
|     CARGO_HOME="/root/.cargo" \ | ||||
|     USER="root" | ||||
|  | ||||
|  | ||||
| # Create CARGO_HOME folder and don't download rust docs | ||||
| RUN --mount=type=cache,target=/root/.cargo/git --mount=type=cache,target=/root/.cargo/registry mkdir -pv "${CARGO_HOME}" \ | ||||
|     && rustup set profile minimal | ||||
| @@ -77,6 +74,12 @@ RUN touch src/main.rs | ||||
| # your actual source files being built | ||||
| RUN --mount=type=cache,target=/root/.cargo/git --mount=type=cache,target=/root/.cargo/registry cargo build --features ${DB} --release --target=aarch64-unknown-linux-musl | ||||
|  | ||||
| # Add the `cap_net_bind_service` capability to allow listening on | ||||
| # privileged (< 1024) ports even when running as a non-root user. | ||||
| # This is only done if building with BuildKit; with the legacy | ||||
| # builder, the `COPY` instruction doesn't carry over capabilities. | ||||
| RUN setcap cap_net_bind_service=+ep target/aarch64-unknown-linux-musl/release/vaultwarden | ||||
|  | ||||
| ######################## RUNTIME IMAGE  ######################## | ||||
| # Create a new stage with a minimal image | ||||
| # because we already have a binary built | ||||
| @@ -93,10 +96,10 @@ RUN [ "cross-build-start" ] | ||||
| # Create data folder and Install needed libraries | ||||
| RUN mkdir /data \ | ||||
|     && apk add --no-cache \ | ||||
|         openssl \ | ||||
|         tzdata \ | ||||
|         ca-certificates \ | ||||
|         curl \ | ||||
|         ca-certificates | ||||
|         openssl \ | ||||
|         tzdata | ||||
|  | ||||
| RUN [ "cross-build-end" ] | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user