S21 Phone
Webzine/ Scripts/ easy.sh · 초심자 1줄
Scripts · lakme-audio

easy.sh · 초심자 1줄

Source viewer · g/easy.sh

Source · g/easy.sh Kind · code S21 Phone Editorial
g/easy.sh
#!/usr/bin/env bash
# ==============================================================================
# g/easy.sh — 초심자 전용 · 리버스 엔지니어링 최단 경로
# ==============================================================================
# 목표: 결정 최소화. 앱 2개 설치 후, Termux에 이 한 줄만.
#
#   bash <(curl -sL https://raw.githubusercontent.com/helena751107/helena_phone/main/g/easy.sh)
#
# 기본 동작 (질문 거의 없음):
#   1) Termux 패키지
#   2) Ubuntu proot (없으면 설치)
#   3) Ubuntu 안에서 /root/work 에 helena_phone 클론
#   4) 시작 치트시트 출력 + 저장
#
# 명의 기본값 = 큰누나 계정 (변수로 변경 가능)
#   OWNER_GITHUB  WORK_DIR  TEMPLATE_REPO
# ==============================================================================

set -euo pipefail

OWNER_GITHUB="${OWNER_GITHUB:-}"                          # 정체(내 계정) — 고정값 금지(교재)
TEMPLATE_REPO="${TEMPLATE_REPO:-helena751107/helena_phone}"
WORK_DIR="${WORK_DIR:-/root/work}"
# 초심자: 토큰 없이 public clone (나중에 push 할 때만 토큰)

G() { printf '\033[0;32m✅ %s\033[0m\n' "$*"; }
Y() { printf '\033[1;33m⚠️  %s\033[0m\n' "$*"; }
B() { printf '\033[0;34m📌 %s\033[0m\n' "$*"; }
R() { printf '\033[0;31m❌ %s\033[0m\n' "$*"; }

banner() {
  cat << EOF

══════════════════════════════════════
  📱 S21 쉬운 설치 (easy)
  앱 2개 깐 뒤 → 이 스크립트 1번
  명의 템플릿: ${TEMPLATE_REPO}
══════════════════════════════════════

EOF
}

need_termux() {
  if [ -z "${PREFIX:-}" ] && [ ! -d /data/data/com.termux ]; then
    R "Termux 앱 안에서 실행하세요."
    echo "  1) F-Droid 설치: https://f-droid.org/"
    echo "  2) Termux 검색 → 설치"
    echo "  3) Termux:API 도 설치"
    echo "  4) Termux 열고 아래 한 줄 다시:"
    echo "     bash <(curl -sL https://raw.githubusercontent.com/helena751107/helena_phone/main/g/easy.sh)"
    exit 1
  fi
}

step_termux_host() {
  B "Termux 패키지 동기화…"
  pkg update -y 2>/dev/null || true
  pkg upgrade -y 2>/dev/null || true
  pkg install -y proot-distro git curl termux-api 2>/dev/null || pkg install -y proot-distro git curl
  G "패키지 OK"

  if command -v termux-setup-storage >/dev/null 2>&1; then
    termux-setup-storage 2>/dev/null || true
    G "저장소 권한 (팝업 뜨면 허용)"
  fi

  if proot-distro list 2>/dev/null | grep -qi ubuntu; then
    G "Ubuntu 이미 있음"
  else
    B "Ubuntu 설치 중 (몇 분, 화면 가만히)…"
    proot-distro install ubuntu
    G "Ubuntu OK"
  fi
}

# runs inside ubuntu via proot-distro login
ubuntu_bootstrap() {
  set -e
  export DEBIAN_FRONTEND=noninteractive
  apt-get update -qq
  apt-get install -y -qq git curl ca-certificates python3 2>/dev/null || apt-get install -y git curl ca-certificates python3

  WORK_DIR="${WORK_DIR:-/root/work}"
  TEMPLATE_REPO="${TEMPLATE_REPO:-helena751107/helena_phone}"
  OWNER_GITHUB="${OWNER_GITHUB:-}"

  if [ -d "$WORK_DIR/.git" ]; then
    echo "✅ 이미 워크스페이스 있음: $WORK_DIR"
    git -C "$WORK_DIR" pull --ff-only 2>/dev/null || true
  else
    echo "📌 클론 ${TEMPLATE_REPO} → ${WORK_DIR}"
    git clone --depth 1 "https://github.com/${TEMPLATE_REPO}.git" "$WORK_DIR"
  fi

  mkdir -p "$WORK_DIR/configs"
  cat > "$WORK_DIR/S21-START.txt" << EOF
════════════════════════════════════
S21 시작 쪽지 (초심자)
════════════════════════════════════
명의(OWNER) 템플릿: ${OWNER_GITHUB}
폴더: ${WORK_DIR}

매일 하는 일:
  1) Termux 실행
  2) 입력:  proot-distro login ubuntu
  3) 입력:  cd /root/work
  4) 웹 보기(폰 브라우저):
     https://${OWNER_GITHUB}.github.io/helena_phone/

나중에 필요할 때만 (필수로 안 함):
  · GitHub 토큰, DeepSeek 키
  · bash g/install.sh   ← 고급 설치
  · claude / grok

도움말:
  cat /root/work/install-guide.html   (웹)
  cat /root/work/S21-START.txt
════════════════════════════════════
EOF

  # tiny env example without secrets
  cat > "$WORK_DIR/configs/easy-env.sh" << EOF
# 초심자용 — 나중에 키 넣을 때만 수정
export OWNER_GITHUB="${OWNER_GITHUB}"
export TEMPLATE_REPO="${TEMPLATE_REPO}"
export WORK_DIR="${WORK_DIR}"
# export GITHUB_USER="작업계정"
# export GITHUB_TOKEN="ghp_..."
# export DEEPSEEK_API_KEY="sk-..."
EOF

  echo ""
  echo "══════════════════════════════════════"
  echo "  ✅ 쉬운 설치 끝"
  echo "══════════════════════════════════════"
  echo ""
  cat "$WORK_DIR/S21-START.txt"
  echo ""
  echo "지금 바로:"
  echo "  cd ${WORK_DIR} && ls"
  echo "브라우저:"
  echo "  https://${OWNER_GITHUB}.github.io/helena_phone/"
  echo ""
}

# ── MAIN ───────────────────────────────────────────────────────────────────
banner

# 정체(계정) 필수 — 교재. 각자 자기 계정.
if [ -z "$OWNER_GITHUB" ]; then
  read -rp "  내 GitHub 계정(정체) 입력: " OWNER_GITHUB
fi
if [ -z "$OWNER_GITHUB" ]; then
  R "계정 없이 진행 불가. export OWNER_GITHUB=내계정 후 다시 실행."
  exit 1
fi

# Already inside Ubuntu proot?
if [ -f /etc/os-release ] && grep -qi ubuntu /etc/os-release && [ ! -d /data/data/com.termux ]; then
  B "Ubuntu 안에서 실행 중 → 워크스페이스만 준비"
  ubuntu_bootstrap
  exit 0
fi

need_termux
step_termux_host

B "Ubuntu 들어가서 레포 준비…"
# export vars into ubuntu
proot-distro login ubuntu -- bash -lc "
  export WORK_DIR='${WORK_DIR}'
  export TEMPLATE_REPO='${TEMPLATE_REPO}'
  export OWNER_GITHUB='${OWNER_GITHUB}'
  $(declare -f ubuntu_bootstrap)
  ubuntu_bootstrap
"

cat << EOF

▶ 다음 한 줄만 기억하세요 (매일):

   proot-distro login ubuntu
   cd /root/work
   cat S21-START.txt

▶ 웹 (성공 확인):

   https://${OWNER_GITHUB}.github.io/helena_phone/

   ⚠️ 이 주소는 GitHub에 repo를 만들고 push + Pages 활성화를 해야 열려요.
      easy.sh는 클론만 하고 GitHub 배포는 안 해요. (자동 배포 = g/workstation.sh)
      수동: 1) github.com/new 로 helena_phone 생성  2) push  3) Settings→Pages→GitHub Actions

▶ 키·푸시·에이전트는 나중에:
   매뉴얼 install-guide.html 또는 g/install.sh

EOF

원본 파일: g/easy.sh · Webzine code viewer (no execution)