From 04992fc57d739d370dd653e14da9cafd69c463e8 Mon Sep 17 00:00:00 2001 From: Peter Cai Date: Tue, 22 Nov 2022 10:03:44 -0500 Subject: [PATCH 1/2] Add custom headscale dockerfile --- headscale/Dockerfile | 33 +++++++++++++++++++++++++++++++++ headscale/app.sh | 5 +++++ 2 files changed, 38 insertions(+) create mode 100644 headscale/Dockerfile create mode 100644 headscale/app.sh diff --git a/headscale/Dockerfile b/headscale/Dockerfile new file mode 100644 index 0000000..fc7de01 --- /dev/null +++ b/headscale/Dockerfile @@ -0,0 +1,33 @@ +# Builder image +FROM docker.io/golang:1.19.0-bullseye AS build +ARG VERSION=v0.17.0-beta4 +ENV GOPATH /go + +RUN apt-get install -y git && \ + git clone https://github.com/juanfont/headscale -b $VERSION /go/src/headscale + +WORKDIR /go/src/headscale + +RUN go mod download + +RUN CGO_ENABLED=0 GOOS=linux go install -tags ts2019 -ldflags="-s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=$VERSION" -a ./cmd/headscale +RUN strip /go/bin/headscale +RUN test -e /go/bin/headscale + +# Production image +# Note that we do not use "distroless" because we actually want to have a shell in the image +# to run app.sh (in order to perform custom initialization) +FROM docker.io/golang:1.19.0-bullseye + +COPY --from=build /go/bin/headscale /bin/headscale +ENV TZ UTC + +ADD app.sh / + +RUN chmod +x /app.sh + +EXPOSE 8080/tcp +# State path +# Note that configuration should be mounted or added in /etc/headscale +VOLUME /var/lib/headscale +CMD ["/app.sh"] diff --git a/headscale/app.sh b/headscale/app.sh new file mode 100644 index 0000000..0b38f73 --- /dev/null +++ b/headscale/app.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +touch /var/lib/headscale/db.sqlite +mkdir /var/lib/headscale/.cache +exec headscale -c /etc/headscale/config.yaml serve From 7942c91188ad6cbabe8c0bd5080c3ae33689971a Mon Sep 17 00:00:00 2001 From: Peter Cai Date: Tue, 22 Nov 2022 10:15:29 -0500 Subject: [PATCH 2/2] Add uptime-kuma image with tailscale --- uptime-kuma-tailscale/Dockerfile | 21 +++++++++++++++++++++ uptime-kuma-tailscale/run.sh | 6 ++++++ 2 files changed, 27 insertions(+) create mode 100644 uptime-kuma-tailscale/Dockerfile create mode 100644 uptime-kuma-tailscale/run.sh diff --git a/uptime-kuma-tailscale/Dockerfile b/uptime-kuma-tailscale/Dockerfile new file mode 100644 index 0000000..45da3c6 --- /dev/null +++ b/uptime-kuma-tailscale/Dockerfile @@ -0,0 +1,21 @@ +# Uptime Kuma image with an ephemeral Tailscale daemon included +# Used on fly.io because it does not support sidecar containers +# The tailscale ephemeral key should be provided via the env variable TAILSCALE_KEY +# custom tailscale control plane can be specified with TAILSCALE_SERVER +FROM louislam/uptime-kuma:1.18.5 +# Default tailscale login server +ENV TAILSCALE_SERVER=https://controlplane.tailscale.com +ENV TAILSCALE_HOSTNAME=uptime-kuma + +RUN apt update && apt install -y curl bash iptables + +RUN curl -fsSL https://pkgs.tailscale.com/stable/debian/bullseye.noarmor.gpg | tee /usr/share/keyrings/tailscale-archive-keyring.gpg +RUN curl -fsSL https://pkgs.tailscale.com/stable/debian/bullseye.tailscale-keyring.list | tee /etc/apt/sources.list.d/tailscale.list + +RUN apt update && apt install -y tailscale + +COPY run.sh / + +RUN chmod +x /run.sh + +CMD [ "/run.sh" ] diff --git a/uptime-kuma-tailscale/run.sh b/uptime-kuma-tailscale/run.sh new file mode 100644 index 0000000..5de8d4b --- /dev/null +++ b/uptime-kuma-tailscale/run.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +/usr/sbin/tailscaled -state=mem: & +sleep 1 +tailscale up --login-server=$TAILSCALE_SERVER --authkey=$TAILSCALE_KEY --hostname=$TAILSCALE_HOSTNAME +node /app/server/server.js