#!/usr/bin/env bash set -euo pipefail STATE_DIR="${TS_STATE_DIR:-/var/lib/tailscale}" SOCKET="${TS_SOCKET:-/var/run/tailscale/tailscaled.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}" mkdir -p \ "$STATE_DIR" \ "$(dirname "$SOCKET")" \ "$RCLONE_MOUNT_DIR" \ "$RCLONE_CACHE_DIR" 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 "$@"