{"id":51621342,"url":"https://github.com/likescape/ttyd-tmux","last_synced_at":"2026-07-12T20:30:20.912Z","repository":{"id":369035494,"uuid":"1288033544","full_name":"likescape/ttyd-tmux","owner":"likescape","description":"tmux 작업 공간을 웹브라우저로 여는 도구 — Tailscale 폐쇄망, 명령 한 줄","archived":false,"fork":false,"pushed_at":"2026-07-03T08:27:22.000Z","size":12,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-03T10:24:22.314Z","etag":null,"topics":["bash","remote-access","self-hosted","ssh","tailscale","tmux","ttyd","web-terminal"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/likescape.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-07-03T08:05:01.000Z","updated_at":"2026-07-03T08:27:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/likescape/ttyd-tmux","commit_stats":null,"previous_names":["likescape/ttyd-tmux"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/likescape/ttyd-tmux","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/likescape%2Fttyd-tmux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/likescape%2Fttyd-tmux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/likescape%2Fttyd-tmux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/likescape%2Fttyd-tmux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/likescape","download_url":"https://codeload.github.com/likescape/ttyd-tmux/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/likescape%2Fttyd-tmux/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35402741,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-12T02:00:06.386Z","response_time":87,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","remote-access","self-hosted","ssh","tailscale","tmux","ttyd","web-terminal"],"created_at":"2026-07-12T20:30:19.194Z","updated_at":"2026-07-12T20:30:20.906Z","avatar_url":"https://github.com/likescape.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ttyd-tmux\n\n**서버의 작업 공간을 웹브라우저로 열어주는 도구.**\n평소엔 서버에 SSH로 접속해 일하다가, 밖에 있을 땐 **폰이나 PC 브라우저로** 같은 화면에 들어가\n진행 상황을 보거나 이어서 작업할 수 있게 해줍니다.\n\n---\n\n## 먼저, 세 가지 부품을 쉽게 설명하면\n\n| 부품 | 하는 일 | 비유 |\n|---|---|---|\n| **tmux** | 서버 안에서 **계속 켜져 있는 작업 공간(화면)**을 만들어 줍니다. 창을 닫아도 안 꺼집니다. | 불을 꺼도 하던 게 그대로인 **방** |\n| **ttyd** | 그 작업 공간을 **웹브라우저 화면으로 보여주는** 프로그램입니다. | 방을 밖에서 볼 수 있는 **창문** |\n| **Tailscale** | 내 기기와 서버를 잇는 **안전한 사설 네트워크**(앱). 인터넷에 문을 열지 않고도 접속하게 해줍니다. | 나만 드나드는 **비밀 복도** |\n\n**ttyd-tmux** 는 이 셋을 엮어서, \"작업 공간을 웹으로 여는 일\"을 명령 한 줄로 해줍니다.\n\n### 핵심 한 가지 — 웹은 \"창문\"일 뿐입니다\n\n작업 공간(방)은 **서버 안에 계속 있습니다.** 웹으로 들어가는 건 **그 방을 창문으로 들여다보는 것**뿐이에요.\n\n- 그래서 **브라우저를 닫아도** 방 안에서 하던 일은 그대로 남습니다.\n- **SSH로 들어가든, 웹으로 들어가든 같은 방**이라서 화면이 똑같이 보입니다(동시 접속 가능).\n- 웹을 안 열어도 방은 살아 있습니다. 웹은 그저 밖에서 볼 때 쓰는 통로예요.\n\n```\n[폰 브라우저] ──(Tailscale: 안전한 복도)──▶ [ttyd: 창문] ──▶ 작업 공간(방)\n                                                              ▲\n[내 PC]      ─────────────(SSH로)──────────────────────────────┘\n```\n\n---\n\n## 무엇이 필요한가요?\n\n- **Ubuntu 서버** (어떤 종류든 OK — 인텔/AMD(amd64), ARM(arm64) 자동으로 맞춰 설치)\n- 인터넷 연결, `sudo` 사용 권한\n- 본인 **Tailscale 계정** (무료), 그리고 접속할 폰/PC에 **Tailscale 앱** 설치\n\n---\n\n## 설치 (한 번만)\n\n```bash\ngit clone \u003c이 저장소 주소\u003e ttyd-tmux\ncd ttyd-tmux\nbash install.sh\n```\n\n설치 중 딱 한 번, **Tailscale 로그인**을 합니다. 화면에 뜨는 웹 주소를 폰/PC 브라우저로 열어\n'허용'만 누르면 됩니다. (비밀번호나 키는 파일에 저장되지 않아요. 설치는 여러 번 실행해도 안전합니다.)\n\n\u003e `install.sh` 는 tmux · ttyd · Tailscale 만 설치하는 **순수 범용 도구**입니다.\n\u003e 작업 공간 안에서 무엇을 돌릴지는 여러분 자유예요(그냥 셸, 원하는 프로그램 등).\n\n---\n\n## 사용법\n\n### 작업 공간을 웹으로 열기\n\n```bash\nttyd-tmux up 일감1 9090\n```\n\n- `일감1` = 작업 공간에 붙일 **별명**(원하는 대로). `9090` = 접속에 쓸 **번호(포트)**.\n- 이러면 백그라운드에서 켜집니다. **이 명령이 화면을 붙잡지 않고**, 서버를 재시작해도 유지됩니다.\n- 작업 공간을 새로 만들 때 안에서 **특정 프로그램을 실행**하고 싶으면 뒤에 붙이세요:\n  ```bash\n  ttyd-tmux up 모니터 9091 htop      # '모니터' 를 열고 htop 실행\n  ```\n  아무것도 안 적으면 그냥 셸이 뜹니다. 여러 개 열려면 **번호만 다르게** 하면 됩니다.\n\n### 접속하기\n\n폰/PC에서 **Tailscale 앱을 켜고**, 브라우저 주소창에:\n\n```\nhttp://\u003c내 서버의 Tailscale 주소\u003e:9090\n```\n\n서버의 Tailscale 주소는 서버에서 `tailscale ip -4` 또는 `ttyd-tmux url 일감1` 로 확인할 수 있어요.\n\n### 확인·관리\n\n```bash\nttyd-tmux ls            # 지금 열려 있는 목록 (이름 / 번호 / 웹 켜짐 / 작업공간 있음)\nttyd-tmux url  일감1    # 접속 주소 보여주기\nttyd-tmux stop 일감1    # 웹 창만 잠깐 닫기 (작업 공간은 그대로)\nttyd-tmux down 일감1    # 웹 창 + 작업 공간까지 통째로 정리\n```\n\n### 서버에서 (SSH로) 같은 작업 공간에 들어가기\n\n```bash\ntmux attach -t 일감1     # 웹에서 보는 것과 똑같은 화면 (나가려면 Ctrl-b 누르고 d)\ntmux ls                  # 작업 공간 목록\n```\n\n---\n\n## 안전한가요?\n\n- **인터넷에 노출되지 않습니다.** 웹 창(ttyd)은 오직 Tailscale 네트워크로만 열립니다.\n  그래서 서버의 방화벽을 건드릴 필요가 없고, 외부에서 주소를 알아도 들어올 수 없어요.\n- **내 Tailscale 네트워크에는 내 기기들만** 들어있습니다. 남은 위험은 사실상 **내 폰/PC를 잃어버리는 것** 정도예요.\n  → 그래서 (1) 신뢰하는 내 기기만 Tailscale에 등록하고, (2) 폰·PC에 화면 잠금(지문/PIN)을 걸어두면 충분합니다.\n- 웹 창에 접속 비밀번호를 걸고 싶으면, 설정 파일 `/etc/ttyd-tmux.d/\u003c이름\u003e.env` 에\n  `TTYD_TMUX_AUTH=아이디:비번` 을 추가하면 됩니다.\n- **비밀 값은 저장소에 없습니다.** Tailscale 로그인은 설치 중 한 번 할 뿐이고,\n  키·비밀번호가 스크립트나 깃에 남지 않습니다.\n\n---\n\n## 잘 안 될 때\n\n| 이런 증상 | 이렇게 해보세요 |\n|---|---|\n| `tmux attach` 시 \"can't find session\" | 그 작업 공간이 아직 없어서 그래요. `ttyd-tmux up \u003c이름\u003e \u003c번호\u003e` 로 먼저 여세요. |\n| 웹 주소를 열어도 안 뜸 | `ttyd-tmux ls` 로 '웹=켜짐'인지 확인. 껴져 있으면 `ttyd-tmux up \u003c이름\u003e \u003c번호\u003e` 다시. |\n| `run` 을 썼더니 화면을 계속 붙잡음 | `run` 은 테스트용이에요. 평소엔 `ttyd-tmux up`(백그라운드)을 쓰세요. |\n| 접속 주소를 모르겠음 | `ttyd-tmux url \u003c이름\u003e` 또는 `tailscale ip -4` |\n| Tailscale 이 로그인 안 됨 | `tailscale status` 확인 후 `sudo tailscale up` |\n\n---\n\n## 지우기\n\n```bash\nbash uninstall.sh        # ttyd-tmux 관련 전체 정리\n# 또는 하나만:\nttyd-tmux down \u003c이름\u003e\n```\n\n설치했던 프로그램(ttyd·tmux·Tailscale)과 로그인, 다른 작업 공간은 그대로 남겨둡니다.\n완전 삭제 방법은 `uninstall.sh` 실행 후 안내를 참고하세요.\n\n---\n\n## 파일 구성\n\n| 파일 | 하는 일 |\n|---|---|\n| `install.sh` | 설치 (프로그램 설치 · Tailscale 로그인 · `ttyd-tmux` 명령 등록). |\n| `bin/ttyd-tmux` | 실제 도구. `up`/`down`/`ls`/`url`/`stop`/`run` 명령을 담고 있음. |\n| `uninstall.sh` | 정리(삭제). |\n\n## License\n\nMIT — [LICENSE](LICENSE) 참고.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flikescape%2Fttyd-tmux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flikescape%2Fttyd-tmux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flikescape%2Fttyd-tmux/lists"}