Files
idx-template/docker/entrypoint.sh
kenzuya 0132b4aa7c Update
2026-03-11 01:37:40 +07:00

105 lines
2.7 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
STATE_DIR="${TS_STATE_DIR:-/var/lib/tailscale}"
SOCKET="${TS_SOCKET:-/var/run/tailscale/tailscaled.sock}"
DOCKER_HOST="${DOCKER_HOST:-unix:///tmp/docker.sock}"
RCLONE_CONFIG="${RCLONE_CONFIG:-/etc/rclone/rclone.conf}"
RCLONE_REMOTE="${RCLONE_REMOTE:-ketuakenzuya:}"
RCLONE_MOUNT_DIR="${RCLONE_MOUNT_DIR:-/mnt/ketuakenzuya}"
RCLONE_CACHE_DIR="${RCLONE_CACHE_DIR:-/tmp/rclone}"
RCLONE_CACHE_MAX_SIZE="${RCLONE_CACHE_MAX_SIZE:-4G}"
export DOCKER_HOST
mkdir -p \
"$STATE_DIR" \
"$(dirname "$SOCKET")" \
"$RCLONE_MOUNT_DIR" \
"$RCLONE_CACHE_DIR"
mkdir -p /etc/profile.d /root/.config/fish/conf.d
printf "export DOCKER_HOST='%s'\n" "$DOCKER_HOST" > /etc/profile.d/docker-host.sh
printf "set -gx DOCKER_HOST '%s'\n" "$DOCKER_HOST" > /etc/fish/conf.d/docker-host.fish
printf "set -gx DOCKER_HOST '%s'\n" "$DOCKER_HOST" > /root/.config/fish/conf.d/docker-host.fish
extra_args=()
if [[ -n "${TS_EXTRA_ARGS:-}" ]]; then
# shellcheck disable=SC2206
extra_args=( ${TS_EXTRA_ARGS} )
fi
up_args=()
if [[ -n "${TS_UP_ARGS:-}" ]]; then
# shellcheck disable=SC2206
up_args=( ${TS_UP_ARGS} )
fi
declare -a bg_pids=()
cleanup() {
for pid in "${bg_pids[@]}"; do
kill "$pid" 2>/dev/null || true
done
for pid in "${bg_pids[@]}"; do
wait "$pid" 2>/dev/null || true
done
}
trap cleanup EXIT
if [[ "${START_TAILSCALED:-1}" == "1" ]]; then
if [[ ! -c /dev/net/tun ]]; then
echo "warning: /dev/net/tun tidak tersedia, tailscaled tidak dijalankan" >&2
else
tailscaled \
--state="${STATE_DIR}/tailscaled.state" \
--socket="$SOCKET" \
"${extra_args[@]}" &
bg_pids+=( "$!" )
if [[ -n "${TS_AUTHKEY:-}" || ${#up_args[@]} -gt 0 ]]; then
for _ in {1..30}; do
if tailscale --socket="$SOCKET" status >/dev/null 2>&1; then
break
fi
sleep 1
done
tailscale --socket="$SOCKET" up \
${TS_AUTHKEY:+--auth-key="$TS_AUTHKEY"} \
"${up_args[@]}"
fi
fi
fi
extra_rclone_args=()
if [[ -n "${RCLONE_EXTRA_ARGS:-}" ]]; then
# shellcheck disable=SC2206
extra_rclone_args=( ${RCLONE_EXTRA_ARGS} )
fi
if [[ "${START_RCLONE:-1}" == "1" ]]; then
if [[ ! -c /dev/fuse ]]; then
echo "warning: /dev/fuse tidak tersedia, rclone mount tidak dijalankan" >&2
elif [[ ! -f "$RCLONE_CONFIG" ]]; then
echo "warning: config rclone tidak ditemukan di $RCLONE_CONFIG, mount tidak dijalankan" >&2
else
rclone mount \
--config "$RCLONE_CONFIG" \
--cache-dir "$RCLONE_CACHE_DIR" \
--vfs-cache-mode full \
--vfs-cache-max-size "$RCLONE_CACHE_MAX_SIZE" \
"${extra_rclone_args[@]}" \
"$RCLONE_REMOTE" \
"$RCLONE_MOUNT_DIR" &
bg_pids+=( "$!" )
fi
fi
if [[ $# -eq 0 ]]; then
exec fish
fi
exec "$@"