diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..ced5636
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,17 @@
+ARG DEBIAN_RELEASE=buster
+FROM docker.io/debian:$DEBIAN_RELEASE-slim
+ARG DEBIAN_RELEASE
+COPY pubkey.gpg entrypoint.sh /
+ENV DEBIAN_FRONTEND noninteractive
+RUN true && \
+	apt update && \
+	apt install -y gnupg ca-certificates libcap2-bin haproxy && \
+	apt-key add /pubkey.gpg && \
+	echo "deb http://pkg.cloudflareclient.com/ $DEBIAN_RELEASE main" > /etc/apt/sources.list.d/cloudflare-client.list && \
+	apt update && \
+	apt install cloudflare-warp -y && \
+	apt clean -y && \
+	chmod +x /entrypoint.sh
+
+EXPOSE 40000/tcp
+ENTRYPOINT [ "/entrypoint.sh" ]
diff --git a/entrypoint.sh b/entrypoint.sh
new file mode 100755
index 0000000..ab810ad
--- /dev/null
+++ b/entrypoint.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+yes | warp-cli status
+
+(
+while ! warp-cli register; do
+	sleep 1
+	>&2 echo "Awaiting warp-svc become online..."
+done
+warp-cli set-mode proxy
+warp-cli set-proxyport 40001
+warp-cli connect
+) &
+
+exec warp-svc
diff --git a/pubkey.gpg b/pubkey.gpg
new file mode 100644
index 0000000..0ca77c5
--- /dev/null
+++ b/pubkey.gpg
@@ -0,0 +1,29 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBGC6fSgBEADcsLdt3UbcPFzge7+ukvBtvHpgMZ8y36LxNCfjClbZjioRGwg2
+78mQdDSj1YBoQNVUtKV/6A1aFe9XJp5Hn40TM/CbI8RneKH9kUUyMqHWwjClAV8S
+dVa7FxgTTapN23bYAnxb0Z0yGfZTdDhTBjLG5OcH/59SNhzY9r2ToR5VjHhMGPV0
+qsQMfuknhSwbNCJLyQSEgh0vZKy4qdQOLCWEhZ0wccNQONXPcgIKw4nPCZubMI5P
+SJEaEL4RPJiacOFdkkWq7NOeU81L5YdwTKghIiC0LAw37/5PTkbu8tCAt3gnkbag
+UZQZW9FrKDuRQEJuBduFuMZBEtWTGqsAcOfrOT2pRahu953frHHhnv2/HohTGfM4
+PA9agFZlFXYMyxZvZr5VVQF8DSiq8h9iVJsrpdDaXeFniR6S8UkDFEVMEIzu5Zbu
+gTCe9ByZMnCz6L/KQrBf+v+FtEGxm82EBfxP1MWmh6hfRBhG4MsideUFfdxoazcl
+erItXSsufMuzetItT+AL4KQKpo1wygOk2cqBeqk16imUp8LFH27NiYDi80AvmGw+
+08k/UWAGuuZE+MqZhRGP4Xhc+IDJjiUj1qzj05Zg5kmbCZHwNujHMgTDIc41BkFU
+vcPDtadMEVNtU+O5WSoulJhVa+lcxiwqYBf4gbefUXyWRaEpY41aFQ2ITQARAQAB
+tDZDbG91ZGZsYXJlIFBhY2thZ2UgUmVwb3NpdG9yeSA8c3VwcG9ydEBjbG91ZGZs
+YXJlLmNvbT6JAlgEEwEIAEIWIQRnWaAqqcyol4MXMWBECPYng1uKywUCYLp9KAIb
+AwUJA8JnAAULCQgHAgMiAgEGFQoJCAsCBBYCAwECHgcCF4AACgkQRAj2J4NbissH
+YRAAy50sq5fFhyzregc+FPz9NPbagr/IlKheaJqninrDORHMgm+4zKtZaKegjpJR
+qh+jpvh2Lcfkgb/oXeg9SASvopt0jUfs+y6kfnYviFSySZrJGPFGCi5qliZOrFGm
+0B4dP4hiYa1cdt3pyscTu9O+yZIMxpIgx06L9SGrn3sg6uEuCjoQHFYjPFSSdomm
+iYGzPQQoI75gnkorctWy0E49DqipzAtpk7S9kS+pS/O9C+/YBcxs3iMVCbuB9mId
+xB24LAvcBF1lZUWrtd6Y3xxNdgLx1JqSRREyqh0safgtko736HUBTjCjve3cJryO
+3WGNmT+9+2YS3MbZMJw/HLaUaadByfZbe8ERRWGZBK85Iu4SDEJXtqyoAIgbaIrS
+QiWKggmQvJ/JkO3gZbpJV7zG4wYYVZ+qDPV8N+PXsDbNQAXsQ2FLMKCJcDSHVWdV
+xYc9aatqrei2kB+3u/1N4vzX02wL20yg5OQ2oPdceXOYqVG6BQlb/u6ivunhbxM+
+Y5bRWb2aT/2Ry52djxqsj+08KaL/ybjshjWITyLCVJA19Cg2JtSqOpZ8z1ED5h8A
+BS7vkeayWQ8osLCrVJaveAOvm94xf+ZptRCDrYbmzeyXWGS8qB33DRHEPGNzoGMJ
+wtEpBPfxh46uL2knvuFefJtxdoTttBko+S1wYQ5LHdaFFmI=
+=OiPd
+-----END PGP PUBLIC KEY BLOCK-----