diff --git a/.gitignore b/.gitignore
index 1c7d6bd1f477b67d97e4f60c39326d723ee596bb..6e0dac05e1977e32cc21418ad39fd13ba2c265d9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,6 @@ deploy/*
 .mypy_cache
 *.swp
 *.swo
-vpnweb
+./vpnweb
 public/*
 test/integration/sipcli/sipcli
diff --git a/Dockerfile b/Dockerfile
index db70f3df486313e159352c85dd7fc2c5d400521d..441b870805ec54facf93666bd66b5e9b34b6b13a 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,20 +1,19 @@
-FROM debian:buster AS build
-RUN apt-get -q update && env DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
-    build-essential pkg-config golang-go git ca-certificates openvpn \
-    && rm -rf /var/lib/apt/lists/*
+FROM debian:bullseye AS build
+RUN apt-get -q update \
+  && env DEBIAN_FRONTEND=noninteractive apt-get install -qy --no-install-recommends \
+  build-essential \
+  pkg-config \
+  golang-go \
+  git \
+  ca-certificates \
+  openvpn \
+  && apt-get clean \
+  && rm -rf /var/lib/apt/lists/*
 
-# don't need to do bash tricks to keep the layers small, as this is a multi-stage build
-ENV GOPATH=/go
-WORKDIR $GOPATH
-#RUN go get -u 0xacab.org/leap/vpnweb
+ADD . /src
+RUN cd /src && go build -o vpnweb && strip vpnweb
 
-COPY . /vpnweb
-RUN cd /vpnweb && go build
-RUN strip /vpnweb/vpnweb
+FROM registry.git.autistici.org/ai3/docker/s6-base
 
-FROM registry.git.autistici.org/ai3/docker/chaperone-base
-
-COPY --from=build /vpnweb/vpnweb /usr/local/bin/vpnweb
-COPY chaperone.d/ /etc/chaperone.d
-
-ENTRYPOINT ["/usr/local/bin/chaperone"]
+COPY --from=build /src/vpnweb /usr/local/bin/vpnweb
+COPY docker/conf /etc/
diff --git a/chaperone.d/vpnweb.conf b/chaperone.d/vpnweb.conf
deleted file mode 100644
index a4cc02a62c851c2b5298e1186436c303fb1603a9..0000000000000000000000000000000000000000
--- a/chaperone.d/vpnweb.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-vpnweb-server.service: {
-     command: "/bin/sh -c 'exec /usr/local/bin/vpnweb'",
-     exit_kills: false
-}
diff --git a/docker/conf/services.d/vpnweb/finish b/docker/conf/services.d/vpnweb/finish
new file mode 100755
index 0000000000000000000000000000000000000000..638353042df99253956fafce7edcf8186a06a140
--- /dev/null
+++ b/docker/conf/services.d/vpnweb/finish
@@ -0,0 +1,3 @@
+#!/usr/bin/execlineb -S0 
+
+s6-svscanctl -t /var/run/s6/services
diff --git a/docker/conf/services.d/vpnweb/run b/docker/conf/services.d/vpnweb/run
new file mode 100755
index 0000000000000000000000000000000000000000..898d85118bc908f4aa046094426dcf74fe6b5956
--- /dev/null
+++ b/docker/conf/services.d/vpnweb/run
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec /usr/local/bin/vpnweb