ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오픈코드를 핸드폰에서 사용해봅시다.
    IT 2026. 5. 24. 03:02

    텀블러가 코드 관련 기능이 없어져서 ㅠㅠㅠ
    티스토리에 쓰게됨.

     

    Open Code의 웹 UI 기능을 사용해 집컴에 연결해봤다.

     

    이제 왔다갔다 하면서 딸깍 코딩이 가능해졌음.

    그래서 어떻게 했나?

    데스크톱 설정

    나는 EndeavourOS를 사용한다.

    프로그램 설치

    먼저 필요한 것들을 설치하자.

    yay -S opencode-bin tailscale tmux mosh caddy
    1. opencode를 연결해야 하니까
    2. tailscale의 메시 VPN 으로 쉽게 보안을 달성하자
    3. tmux로 세션이 계속 살아있도록 하자
    4. mosh로 모바일에서 shell에 접속이 필요하면 안정적으로 하자
    5. caddy로 https 연결을 지원하도록 리버스 프록시 하자

    테일스케일 설정

    먼저 tailscale을 설정한다.

    # 테일스케일 활성화
    sudo systemctl enable --now tailscaled
    sudo tailscale up
    
    # SSH 설정
    sudo systemctl enable --now sshd
    
    # 방화벽 설정
    sudo firewall-cmd --permanent --zone=trusted --add-interface=tailscale0
    sudo firewall-cmd --permanent --add-service=ssh
    sudo firewall-cmd --reload

     

    이제 Tailscale 정보를 확인하고 사용할 수 있을 것이다.

    Addresses, Machine 정보를 확인가능하다. (뒤에서 사용할 예정)

    tailscale status

     

    Tailscale HTTPS 설정

    나는 HTTPS 를 사용할거니 추가설정을 해준다.

     

    어드민에서 HTTPS 도 활성화 해주자.

     

    이때 이 DNS 이름을 잘 기억해야 함.

     

    인증서를 발급받기 위해 cert를 실행한다.
    MACHINE NAME은 앞서 status에서 볼 수 있고, DNS이름은 .ts.net 가 뒤에 붙은 것이다.

    sudo tailscale cert ${MACHINE_NAME}.${TAILSCALE_DNS_NAME}

     

    HTTPS 를 위한 리버스 프록시

    opencode는 호스트로 https를 지원하지 않으니 리버스 프록시를 사용하자.

    나는 간단하게 설정하기 위해 caddy를 사용했다.

    # caddy 시작
    sudo systemctl enable --now caddy
    
    # 인증서 권한 설정
    sudo chown root:caddy /var/lib/tailscale
    sudo chown root:caddy /var/lib/tailscale/certs
    sudo chmod 750 /var/lib/tailscale
    sudo chmod 750 /var/lib/tailscale/certs
    
    # 인증서 이름들 확인 (보통 ${TAILSCALE_DNS_NAME}.crt + ${TAILSCALE_DNS_NAME}.key 형태)
    sudo ls /var/lib/tailscale/certs
    
    # 설정 편집
    sudo nano /etc/caddy/Caddyfile

     

    이제 설정하자. Address는 앞의 tailscale status 로 확인가능하다.

    ${TAILSCALE_DNS_NAME} {
        # opencode가 4096 포트를 사용함
        reverse_proxy ${TAILSCALE_ADDRESS}:4096
    
        tls ${TAILSCALE_DNS_NAME}.crt ${TAILSCALE_DNS_NAME}.key
    }

     

    다시 시작하여 적용한다.

    sudo caddy fmt --overwrite /etc/caddy/Caddyfile
    sudo systemctl restart caddy

     

    컴퓨터 설정은 끝났다.

    핸드폰 설정

    Termux를 설치한다.

    그리고 Tailscale 앱도 설치하여 로그인한다.

    패키지 업데이트 및 설치

    당연하지만 패키지는 설치해야 한다.

    pkg update
    pkg upgrade
    pkg install openssh mosh

    SSH 설정

    귀찮게 비번 맨날 치기 싫다면 SSH 키 설정하자.

    ssh-keygen -t ed25519
    # 엔터 3번 누르면 됨
    
    ssh-copy-id ${MACHINE}@${TAILSCALE_ADDRESS}

    웹으로 연결해주는 스크립트

    이제 처음 사진처럼 바로 연결하도록 만들자.

    mkdir ~/.termux
    nano ~/.termux/connect.sh

     

    스크립트는 이렇게 작성하면 된다.

    #!/bin/bash
    SERVER="${MACHINE}@${TAILSCALE_ADDRESS}"
    TAILSCALE_IP="${TAILSCALE_ADDRESS}"
    TAILSCALE_HOST="${TAILSCALE_DNS_NAME}"
    LOG="/tmp/opencode.log"
    
    # 1. tmux 세션 확인 및 생성
    echo "🔗 tmux 세션 확인 중..."
    ssh $SERVER \
      "tmux has-session -t main 2>/dev/null || tmux new-session -d -s main"
    
    # 2. opencode 시작 (Caddy가 HTTPS 처리하므로 HTTP로만) 
    echo "🚀 opencode serve 시작..."
    ssh $SERVER \
      "tmux new-window -t main -n opencode \
      'opencode serve --hostname $TAILSCALE_IP 2>&1 | tee $LOG'"
    
    # 3. 포트 감지
    echo "🔍 포트 감지 중..."
    PORT=""
    for i in $(seq 1 30); do
      PORT=$(ssh $SERVER \
        "grep -oP '(?<=http://$TAILSCALE_IP:)\d+' $LOG 2>/dev/null")
      [ -n "$PORT" ] && break
      sleep 0.5
    done
    
    if [ -z "$PORT" ]; then
      echo "❌ 포트 감지 실패"
      exit 1
    fi
    
    # 4. URL 출력 + mosh 접속
    echo "✅ http://$TAILSCALE_IP:$PORT 접속 가능!"
    echo "✅ https://$TAILSCALE_HOST 로 접속"
    termux-open-url "https://$TAILSCALE_HOST"
    mosh $SERVER -- tmux new-session -A -s main

    기타 편의성 스크립트 작성

    이제 실행권한을 주고 편의성을 위해 스크립트를 작성하자.

    chomod +x ~/.termux/connect.sh
    nano ~/.bashrc

     

    이렇게 작성한다.

    function tmux-mosh() {
      mosh "$1" -- tmux new-session -A -s main
    }
    
    alias host-shell="tmux-mosh ${MACHINE}@${TAILSCALE_ADDRESS}"
    alias opencode="~/.termux/connect.sh"

     

    스크립트 로드하고 무지성 포터블 코딩 즐깁시다. 끝.

    source ~/.bashrc

     

    댓글

Designed by black7375.