블로그

tTerm, 이제 브라우저에서

지금까지 tTerm은 Telegram 안에 있었어요. 채팅에서 바로 서버로 명령을 보내는 방식이었죠. 오늘은 브라우저에서 쓰는 진짜 터미널, tTerm Web을 공개해요. 모든 서버와 컴퓨터를 탭 하나에서 다루고, 명령은 하나하나 별도의 블록으로 나오며, 기기에 키를 둘 필요가 없어요.

tTerm Web의 모습: 왼쪽에는 프로젝트별 머신, 위쪽에는 탭, 명령은 하나하나 별도의 블록으로.

봇이 있는데도 브라우저가 필요한 이유

휴대폰만 있을 때는 봇이 정말 편해요. 서비스를 재시작하거나, 디스크를 확인하거나, 설치 프로그램의 질문에 답할 때요. 하지만 긴 작업에는 큰 화면이 필요해요. 여러 탭을 나란히 띄우고, vim과 htop을 전체 화면으로 쓰고, 어제 실행한 명령을 쉽게 찾을 수 있는 기록이 있어야 하죠.

tTerm Web은 그래서 만들었어요. 노트북, 태블릿, 휴대폰의 어떤 브라우저에서든 열리고, 작업하는 기기에는 아무것도 설치할 필요가 없어요.

명령마다 별도의 블록

일반 터미널에서는 모든 것이 하나의 흐름으로 이어져서, 한 명령이 어디서 끝나고 다음 명령이 어디서 시작됐는지 눈으로 찾아야 해요. tTerm에서는 명령마다 별도의 블록으로 나와요. 명령, 출력, 종료 코드, 실행 시간, 디렉터리, git 브랜치가 한 블록에 담겨요.

블록은 출력까지 통째로 복사하거나, 접거나, 다시 실행할 수 있어요. 명령이 실행되는 동안에는 출력이 실시간으로 흘러나오고, 끝나면 블록은 선택하고 복사하기 쉬운 일반 텍스트로 정리돼요.

에디터 같은 입력 줄

맨 아래에는 별도의 입력 줄이 있어요. Shift+Enter로 줄을 바꾸고, 기록에 있는 명령이 회색으로 제안되며, Tab으로 자동 완성돼요. 기록은 저희 쪽에 저장되기 때문에 모든 기기에서 같아요.

입력 줄 위에는 지금 위치, 즉 디렉터리와 브랜치가 보여요. 이걸 클릭해서 목록에서 다른 걸 고르면 cd나 git switch가 일반 블록으로 실행돼요. 그리고 되돌릴 수 없는 위험한 명령 앞에서는 tTerm이 한 번 더 물어봐요.

vim, htop, sudo

전체 화면 프로그램은 터미널 영역 전체에 열리고 평소처럼 작동해요. sudo도 마찬가지예요. 블록이 필요 없다면 클래식 모드도 있어요. 익숙한 방식 그대로, 하나로 이어지는 터미널이에요.

탭과 함께 닫히지 않는 터미널

터미널은 브라우저가 아니라 저희 서버에 있어요. 서버에서 빌드하는 도중에 노트북을 덮어도 빌드는 계속되고 출력도 남아요. 다른 기기에서 tTerm을 열면 터미널이 그대로 있어요.

여러 프로젝트의 탭이 나란히 열리고, P/web-01, A/api-prod처럼 프로젝트 코드가 붙어요. Cmd+K를 누르면 팔레트가 열려요. 어떤 터미널로든 이동하거나, 아무 머신에서나 새 터미널을 열거나, 동작을 실행할 수 있어요.

머신 연결 방법

Linux 서버는 명령 한 줄로 연결돼요. 머신을 추가할 때 tTerm Web이 이 명령을 보여 주고, 서버에서 실행하면 돼요:

$ curl -sSL https://connect.tterm.net/s/… | sudo sh

설치 스크립트는 서버에 tterm이라는 사용자를 만들고, 이 사용자의 authorized_keys에 한 줄을 추가하고, /etc/sudoers.d 안의 별도 파일로 sudo 권한을 줘요. sshd_config는 건드리지 않고, sshd를 재시작하지 않으며, 포트도 열지 않아요. 몇 초 뒤 서버가 목록에 나타나요.

macOS나 Linux 컴퓨터는 작은 에이전트로 연결돼요. 에이전트는 사용자 계정으로 실행되고 저희 서버로 스스로 연결하기 때문에, 인바운드 포트가 필요 없고 컴퓨터가 NAT 뒤에 있어도 돼요. 에이전트는 명령 한 줄로 제거할 수 있어요.

보안

저희는 사용자의 머신에 연결하기 때문에, 접근 권한을 쉽게 주고 똑같이 쉽게 회수할 수 있도록 만들었어요.

  • 키를 맡길 필요가 없어요. tTerm은 연결할 때마다 본인 이름이 담긴 새 SSH 인증서에 서명해요. 이 인증서는 그 서버 하나에서만 유효하고, 2분 뒤에는 더 이상 쓸 수 없어요.
  • 서명은 따로. 서명에 쓰는 키는 네트워크가 없는 별도 프로세스에 있어요. 메인 프로그램은 키를 읽을 수 없고 서명만 요청할 수 있으며, 모든 서명은 기록돼요.
  • 중개자 없음. tTerm 서버는 EU에 있어요. 페이지와 터미널은 이 서버로 바로 연결돼요. Cloudflare는 DNS만 맡고 있어서 명령을 전혀 보지 못해요.
  • 회수도 쉽게. tTerm에서 서버를 삭제하면 tTerm이 그 서버에서 자기 접근 권한을 직접 제거해요. 서버가 응답하지 않으면 서버에서 실행할 명령을 tTerm이 보여 줘요. 설치 스크립트가 설정한 나머지를 제거하는 방법은 스크립트 맨 위에 적혀 있어요.
  • 오픈 소스. tTerm Web과 에이전트는 AGPL-3.0 라이선스로 공개된 오픈 소스예요. 설치 스크립트는 짧으니 실행하기 전에 한번 읽어 보세요.

비용

tTerm Web이 베타인 동안에는 누구나 무료예요.

501인당 머신 수
24열린 터미널 수
30출력 포함 기록 보관 일수

유료 요금제는 나중에 나오고, 충분히 미리 알려 드릴게요.

봇은 어떻게 되나요?

@tTermNetBot은 그대로 남아서 계속 작동해요. 휴대폰만 있을 때 채팅에서 바로 서버에 명령을 보낼 수 있어요. 지금은 봇과 웹 앱이 따로 운영되고, 머신 목록도 각자 따로 있어요. 나중에 둘을 하나로 합칠 거예요.

앞으로의 계획

다음으로 크게 준비하는 건 팀 작업이에요: 프로젝트 역할, 공유 명령 로그, 동료의 터미널 지켜보기. 지켜보는 동안 상대는 누가 보고 있는지 항상 알 수 있어요. Windows 컴퓨터는 아직 지원하지 않아요. 나중에 지원할 예정이에요.

tTerm Web 써 보기

이메일로 로그인하세요. 처음에는 코드를 받고, 그다음부터 내 기기에서는 짧은 코드면 충분해요. 첫 서버는 1분이면 연결돼요.

무료로 시작하기

블로그의 다른 글

모든 글
모든 글