cloudflared-tunnel/cloudflared-tunnel/DEBIAN/postinst
2026-09-19 00:40:33 +00:00

55 lines
2.3 KiB
Bash
Executable File

#!/bin/sh
set -e
if [ "$1" = configure ]; then
# Unprivileged system account the daemon runs as. It only makes outbound
# connections and proxies to localhost, so it needs no root privileges.
if ! getent passwd cloudflared >/dev/null; then
adduser --system --group --no-create-home --home /nonexistent --quiet cloudflared
fi
fi
if [ "$1" = configure ] || [ "$1" = abort-upgrade ] || [ "$1" = abort-deconfigure ] || [ "$1" = abort-remove ]; then
# Update timer: enabled on first install, and an admin's later `systemctl
# disable` survives upgrades (the same logic dh_installsystemd generates).
deb-systemd-helper unmask cloudflared-update.timer >/dev/null || true
if deb-systemd-helper --quiet was-enabled cloudflared-update.timer; then
deb-systemd-helper enable cloudflared-update.timer >/dev/null || true
else
deb-systemd-helper update-state cloudflared-update.timer >/dev/null || true
fi
if [ -d /run/systemd/system ]; then
systemctl --system daemon-reload >/dev/null || true
deb-systemd-invoke start cloudflared-update.timer >/dev/null || true
# cloudflared-tunnel-setup enables the tunnel, not the package. On upgrade,
# restart it if it's running so a changed unit file takes effect.
systemctl try-restart cloudflared-tunnel.service >/dev/null || true
fi
fi
# First install only ($2 is the previously-configured version on upgrade). The
# package ships no tunnel config, so tell the admin how to register one.
if [ "$1" = configure ] && [ -z "$2" ]; then
cat <<'EOF'
cloudflared-tunnel is installed, but no tunnel is configured yet. Pick a mode:
# Named tunnel on your own domain (prints a URL to log in to Cloudflare):
sudo cloudflared-tunnel-setup --hostname app.example.com --port 3000
# Dashboard-managed tunnel (Zero Trust > Networks > Tunnels; copy the token,
# then set that hostname's service to http://localhost:PORT in the dashboard):
sudo cloudflared-tunnel-setup --token <TUNNEL_TOKEN> --port 3000
# Random trycloudflare.com URL, no Cloudflare account needed (testing only):
sudo cloudflared-tunnel-setup --quick --port 3000
cloudflared-tunnel.service stays stopped until you run one of the above.
Details: cloudflared-tunnel-setup --help, and
/usr/share/doc/cloudflared-tunnel/README.Debian
EOF
fi
exit 0