Bun 모노레포: 웹 터미널 UI + Bun 서버(WebSocket/PTY).
한 번에 서버 + 웹 실행 (권장)
프로젝트 루트에서 아래 한 줄만 실행하면 터미널 서버(12308)와 웹(11300)이 같이 뜹니다.
bun run dev그다음 브라우저에서 http://localhost:11300 접속 → 사이드바 터미널 클릭 → /terminal에서 쉘 사용.
개별 실행이 필요할 때:
- 터미널 서버만 (포트 12308):
bun run dev:server - 웹만 (포트 11300):
bun run dev:web
웹 터미널에서 "연결이 종료되었습니다"가 나오면 → 터미널 서버가 꺼져 있는 것입니다. 루트에서 bun run dev로 다시 띄우거나, 재연결 버튼으로 다시 시도하세요.
루트에 .env를 두거나 .env.example을 복사해 사용하세요.
| 변수 | 설명 |
|---|---|
SSH_AGENT_USER_CWD |
agok 터미널 작업 디렉터리. 절대 경로 또는 프로젝트 루트 기준 상대 경로. 미설정 시 documents/users/agok 사용. |
channel N: open failed: connect failed: Connection refused 가 나오는 이유
SSH -L 포워딩은 “로컬 포트 → 원격 포트”만 터널해 줍니다. 원격 서버에서 11300, 12308에 서비스가 떠 있어야 연결이 됩니다. 원격에서 앱을 안 켜 두고 터널만 만들면 Connection refused 가 납니다.
순서 (원격에서 쓸 때)
-
원격 서버에서 먼저 앱 실행
원격 호스트에 SSH로 접속한 뒤, 그 안에서 프로젝트 루트로 가서 서버+웹을 띄웁니다.ssh your-server cd /path/to/ssh-agent-web # 실제 경로로 변경 bun run dev
이렇게 하면 원격에서 11300(웹), 12308(터미널 서버)이 동시에 떠 있습니다. 이 터미널은 그대로 두세요.
-
로컬에서 포워딩용 SSH 연결
로컬 PC에서 다른 터미널을 열고, 포워딩만 하는 SSH 세션을 엽니다.ssh -L 11300:localhost:11300 -L 12308:localhost:12308 your-server
또는
~/.ssh/config에 넣어 두었다면:ssh your-server
(config 예시는 아래 참고)
-
브라우저에서 접속
로컬 브라우저에서http://localhost:11300접속 → 사이드바 터미널로 들어가면 원격 쉘이 열립니다.
요약: Connection refused 는 “원격 쪽에 11300/12308 리스닝이 없다”는 뜻이므로, 반드시 1번(원격에서 bun run dev)을 먼저 한 다음 2번 SSH 포워딩을 하면 됩니다.
~/.ssh/config 예시
Host your-server
LocalForward 11300 localhost:11300
LocalForward 12308 localhost:12308