This commit is contained in:
tavo 2025-08-02 11:34:33 -06:00
parent 393c8f3d14
commit 8f2e1b8006
4 changed files with 84 additions and 0 deletions

3
clink/.env.example Normal file
View file

@ -0,0 +1,3 @@
TS_HOSTNAME=clink
TS_AUTHKEY=tskey-client-nnn-nnn
TS_EXTRA_ARGS=--advertise-tags=tag:container

18
clink/Dockerfile Normal file
View file

@ -0,0 +1,18 @@
FROM debian:bookworm
RUN apt-get update && apt-get install -y --no-install-recommends \
git \
build-essential \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
RUN git clone https://git.swurl.xyz/swirl/clink.git /tmp/clink && \
make -C /tmp/clink && make -C /tmp/clink install-bin && \
rm -rf /tmp/clink
RUN mkdir /clink-data
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
ENTRYPOINT ["docker-entrypoint.sh"]

57
clink/docker-compose.yml Normal file
View file

@ -0,0 +1,57 @@
services:
ts-clink:
image: tailscale/tailscale:latest
container_name: ts-clink
restart: unless-stopped
hostname: ${TS_HOSTNAME}
environment:
- TS_AUTHKEY
- TS_EXTRA_ARGS
- TS_SERVE_CONFIG=/ts/serve.json
volumes:
- tailscale:/var/lib/tailscale
devices:
- /dev/net/tun:/dev/net/tun
cap_add:
- net_admin
- sys_module
configs:
- source: serve-config
target: /ts/serve.json
clink:
build: .
container_name: clink
network_mode: service:ts-clink
depends_on:
- ts-clink
volumes:
- clink-data:/clink-data
# Optional: Random seed generated, or use deterministic seed
#environment:
#- PB_SECRET
restart: unless-stopped
volumes:
clink-data:
tailscale:
configs:
serve-config:
content: |
{
"TCP": {
"443": {
"HTTPS": true
}
},
"Web": {
"$${TS_CERT_DOMAIN}:443": {
"Handlers": {
"/": {
"Proxy": "http://127.0.0.1:8081"
}
}
}
},
"AllowFunnel": {
"$${TS_CERT_DOMAIN}:443": false
}
}

View file

@ -0,0 +1,6 @@
#!/bin/sh
set -e
SECRET="${PB_SECRET:-$(head -c 32 /dev/urandom | sha256sum | cut -d' ' -f1)}"
exec clink -d /clink-data -p 8081 -s "$SECRET" -k