tayo 0.1.12 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2a5fae5e5027e6af704d0de853a7402c0011dbe9e4e9638bd8e05553a60d9f13
4
- data.tar.gz: 7b0446e1db678ae717d49176d415095820622e19b3f75812182090a9ff32aa89
3
+ metadata.gz: b5fa91902d5a43f2bd8259bdd3949017b629c6f228cf68600f9b4fd238a13299
4
+ data.tar.gz: 66e296458abdfca8cebf3e919be4f36f06fcbb1238cefd2e441d96cc193fcdda
5
5
  SHA512:
6
- metadata.gz: 5b9c66d762054c1df3a9a40d1a0f98e29eb2428aa43dd048ad678ce85461f2f81f1486bd92e2e67b7b7c1d34ccfe2818a59bea4bfd02972a2948f9ee55f4597f
7
- data.tar.gz: 6df1da4eeaa3def9471469d100ed1dd8575129eb1ac959a2915d45a20da0f3e7f97f3d893d7ac46965207827ff0febd73a55732ac3538a0dd9156ccd30e4d7bf
6
+ metadata.gz: 876880104575214b91231682c947c40a73ea233dd558644bb5d34d75e90e5b4a6046185e9e650c9a945d5d9e3d4fd77cc29a4fefbabb83d1c1f82683d2b5ce9b
7
+ data.tar.gz: 2955f65d56f1395e823b159cc64fd2285dfe523dae26b21ea2aa896b350c499029d9fe84908fdbfad0ffbc50734e309386f1ef2613517f087c7499205d06dc36
data/CHANGELOG.md CHANGED
@@ -1,57 +1,67 @@
1
- # 변경 기록 (Changelog)
2
-
3
- ## [0.1.12] - 2025-01-20
4
-
5
- ### 🚀 새로운 기능
6
- - **CLAUDE.md 문서 지원**: Claude AI 도우미를 위한 프로젝트별 지침 파일 지원
7
- - **Cloudflare DNS 설정 대폭 개선**:
8
- - Cloudflare Zone 목록에서 도메인을 직접 선택하는 방식으로 변경
9
- - 루트 도메인(@)과 서브도메인 선택 UI 개선
10
- - 기존 DNS 레코드 확인 덮어쓰기 사용자 확인 프롬프트 추가
11
- - Cloudflare API 토큰을 `~/.tayo` 파일에 안전하게 저장 및 재사용
12
- - **자동 Git 커밋**: `tayo gh`와 `tayo cf` 명령어 실행 후 자동으로 변경사항 커밋
13
- - **버전 표시**: 명령어 실행 시 Tayo 버전 표시
14
-
15
- ### 🛠️ 개선사항
16
- - **Init 워크플로우 간소화**:
17
- - Gemfile 수정 제거로 깔끔한 초기화 프로세스
18
- - Docker 캐시 정리 기능 추가
19
- - bootsnap 자동 처리 제거 (안정성 문제로 인해)
20
- - **GitHub Container Registry 설정**:
21
- - 조직(Organization) 계정 지원 추가
22
- - ghcr.io URL 중복 제거 버그 수정
23
- - Docker 로그인 자동화
24
-
25
- ### 🐛 버그 수정
26
- - Dockerfile bootsnap 프리컴파일 이슈 수정
27
- - DNS 레코드 생성 시 프록시 설정 누락 문제 해결
28
-
29
- ## [0.1.11] - 2025-01-19
30
-
31
- ### 🛠️ 개선사항
32
- - Bootsnap 처리를 DockerfileModifier 클래스로 리팩토링
33
- - 더 안정적인 bootsnap 라인 제거 로직 구현
34
- - 테스트 커버리지 강화
35
-
36
- ## [0.1.10] - 2025-01-18
37
-
38
- ### 🚀 새로운 기능
39
- - Dockerfile에서 bootsnap 관련 설정 자동 제거/비활성화
40
-
41
- ### 🐛 버그 수정
42
- - Dockerfile bootsnap 프리컴파일 관련 다양한 엣지 케이스 처리
43
-
44
- ## [0.1.9] - 2025-01-17
45
-
46
- ### 🏗️ 기타 변경사항
47
- - 홈페이지 URL을 TeamMilestone 조직으로 업데이트
48
- - 저장소 이전에 따른 메타데이터 업데이트
49
-
50
- ## [0.1.0] - 2025-01-15
51
-
52
- ### 🎉 최초 릴리스
53
- - `tayo init`: Rails 프로젝트 초기 설정 (Docker, Welcome 페이지)
54
- - `tayo gh`: GitHub 저장소 Container Registry 설정
55
- - `tayo cf`: Cloudflare DNS 설정
56
- - OrbStack 자동 감지 및 실행
57
- - 한국어 UI 지원
1
+ # 변경 이력
2
+
3
+ 모든 주요 변경사항은 이 파일에 기록됩니다.
4
+
5
+ 프로젝트는 [Semantic Versioning](https://semver.org/lang/ko/)을 따릅니다.
6
+
7
+ ## [0.2.0] - 2024-12-28
8
+
9
+ ### 추가됨
10
+ - 새로운 `tayo proxy` 명령어 - 고급 프록시 서버 설정 기능
11
+ - Traefik 기반 리버스 프록시와 자동 SSL 관리
12
+ - Docker Compose를 통한 편리한 컨테이너 관리
13
+ - 멀티 도메인 라우팅 지원
14
+ - Let's Encrypt를 통한 자동 SSL 인증서 발급 및 갱신
15
+ - 기본 랜딩 페이지를 위한 Welcome 서비스
16
+ - 도메인 관리를 위한 Cloudflare DNS 통합
17
+ - Docker 컨테이너와 호스트 서비스 모두 지원 (host.docker.internal)
18
+ - Traefik 대시보드 제공 (http://localhost:8080, admin/admin)
19
+ - 공유기 포트포워딩 설정 지원 (80/443 또는 커스텀 포트)
20
+
21
+ ### 개선됨
22
+ - Welcome 서비스의 호스트 포트 감지 개선
23
+ - Rails 개발 서버 우선순위 처리
24
+ - 프록시 아키텍처 문서 개선
25
+
26
+ ## [0.1.11] - 2024-12-27
27
+
28
+ ### 개선됨
29
+ - Gemfile 수정 제거 및 초기화 워크플로우 개선
30
+ - bootsnap 처리를 DockerfileModifier 클래스로 리팩토링
31
+
32
+ ## [0.1.10] - 2024-12-26
33
+
34
+ ### 추가됨
35
+ - 버전 표시 및 디버깅 기능
36
+ - bootsnap 제거에 대한 포괄적인 테스트
37
+ - 엣지 케이스 수정
38
+
39
+ ### 개선됨
40
+ - reject 패턴 매칭으로 bootsnap 제거 단순화
41
+
42
+ ## [0.1.0] - 2024-12-25
43
+
44
+ ### 추가됨
45
+ - `tayo init` - Rails 프로젝트 초기화 명령어
46
+ - OrbStack 설치 확인
47
+ - Linux 플랫폼 추가 (x86_64-linux, aarch64-linux)
48
+ - Dockerfile 자동 생성
49
+ - Welcome 페이지 생성
50
+ - 자동 Git 커밋
51
+ - Docker 캐시 정리
52
+
53
+ - `tayo gh` - GitHub 저장소 Container Registry 설정
54
+ - GitHub CLI 인증 확인
55
+ - 저장소 생성/연결
56
+ - GitHub Container Registry 설정
57
+ - deploy.yml 설정 파일 생성
58
+
59
+ - `tayo cf` - Cloudflare DNS 설정
60
+ - API 토큰 관리 (macOS Keychain 사용)
61
+ - 도메인 Zone 자동 감지
62
+ - DNS A 레코드 생성/업데이트
63
+
64
+ [0.2.0]: https://github.com/TeamMilestone/tayo/compare/v0.1.11...v0.2.0
65
+ [0.1.11]: https://github.com/TeamMilestone/tayo/compare/v0.1.10...v0.1.11
66
+ [0.1.10]: https://github.com/TeamMilestone/tayo/compare/v0.1.0...v0.1.10
67
+ [0.1.0]: https://github.com/TeamMilestone/tayo/releases/tag/v0.1.0
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Tayo
2
2
 
3
- Rails 애플리케이션을 홈서버에 배포하기 위한 도구입니다. GitHub Container Registry와 Cloudflare를 활용하여 간편한 배포 워크플로우를 제공합니다.
3
+ Rails 애플리케이션을 홈서버에 배포하기 위한 도구입니다.
4
4
 
5
5
  ## 설치
6
6
 
@@ -23,13 +23,15 @@ tayo init
23
23
  이 명령어는 다음 작업들을 수행합니다:
24
24
 
25
25
  - **OrbStack 설치 확인**: Docker 컨테이너를 실행하기 위한 OrbStack이 설치되어 있는지 확인합니다
26
+ - **Bundle 설치**: 의존성을 설치합니다
27
+ - **Linux 플랫폼 추가**: `x86_64-linux`와 `aarch64-linux` 플랫폼을 Gemfile.lock에 추가합니다
26
28
  - **Dockerfile 생성**: Rails 7 기본 Dockerfile이 없으면 생성합니다
27
29
  - **Welcome 페이지 생성**:
28
30
  - `app/controllers/welcome_controller.rb` 컨트롤러 생성
29
31
  - `app/views/welcome/index.html.erb` 뷰 파일 생성 (애니메이션이 있는 예쁜 랜딩 페이지)
30
32
  - `config/routes.rb`에 `root 'welcome#index'` 설정 추가
31
- - **Docker 캐시 정리**: 디스크 공간 확보를 위해 Docker 캐시를 정리합니다
32
33
  - **Git 커밋**: 변경사항을 자동으로 커밋합니다
34
+ - **Docker 캐시 정리**: 디스크 공간 확보를 위해 Docker 캐시를 정리합니다
33
35
 
34
36
  ### 2. `tayo gh` - GitHub 저장소 및 Container Registry 설정
35
37
 
@@ -50,7 +52,6 @@ tayo gh
50
52
  - **GitHub 원격 저장소 설정**:
51
53
  - 기존 원격 저장소가 있으면 사용
52
54
  - 없으면 새 저장소 생성 (public/private 선택 가능)
53
- - 개인 계정 및 조직(Organization) 계정 모두 지원
54
55
  - 코드를 GitHub에 푸시
55
56
  - **GitHub Container Registry 설정**:
56
57
  - Registry URL 생성: `ghcr.io/username/repository-name`
@@ -61,7 +62,6 @@ tayo gh
61
62
  - **환경 변수 파일 준비**:
62
63
  - `.env.production` 파일 생성
63
64
  - `.gitignore`에 추가하여 보안 유지
64
- - **Git 커밋**: 설정 변경사항을 자동으로 커밋합니다
65
65
 
66
66
  ### 3. `tayo cf` - Cloudflare DNS 설정
67
67
 
@@ -73,57 +73,95 @@ tayo cf
73
73
 
74
74
  이 명령어는 다음 작업들을 수행합니다:
75
75
 
76
+ - **설정 파일 확인**: `config/deploy.yml` 파일에서 서버 IP와 도메인 정보를 읽습니다
76
77
  - **Cloudflare 인증**:
77
78
  - API 토큰 입력 요청 (처음 실행 시)
78
- - 토큰을 `~/.tayo` 파일에 안전하게 저장하여 재사용
79
- - 필요한 권한: Zone:Read, DNS:Edit
80
- - **도메인 설정**:
81
- - Cloudflare 계정의 Zone 목록에서 도메인 선택
82
- - 루트 도메인(@) 또는 서브도메인 설정 지원
83
- - 대화형 UI로 쉽게 설정 가능
79
+ - 토큰을 안전하게 저장 (macOS Keychain 사용)
80
+ - **도메인 Zone 확인**:
81
+ - Cloudflare 계정에서 도메인을 찾습니다
82
+ - Zone ID를 자동으로 가져옵니다
84
83
  - **DNS 레코드 생성/업데이트**:
85
- - A 레코드 생성: IP 주소로 연결
86
- - CNAME 레코드 생성: 도메인으로 연결
87
- - 기존 레코드가 있으면 사용자 확인 후 업데이트
84
+ - A 레코드 생성: 도메인을 서버 IP 연결
85
+ - 기존 레코드가 있으면 업데이트
88
86
  - Proxied 설정 (Cloudflare CDN 사용)
89
- - **배포 설정 업데이트**:
90
- - `config/deploy.yml` 파일의 proxy.host 자동 업데이트
91
- - 서버 정보 SSH 사용자 설정
92
- - **Git 커밋**: DNS 설정 변경사항을 자동으로 커밋합니다
87
+ - **설정 완료 확인**:
88
+ - DNS 설정이 완료되면 성공 메시지 표시
89
+ - 도메인으로 접속 가능함을 안내
93
90
 
94
- ## 전체 워크플로우
91
+ ### 4. `tayo proxy` - 프록시 서버 설정 (고급)
92
+
93
+ Traefik을 Docker로 설정하여 도메인 라우팅과 SSL을 자동 관리합니다.
95
94
 
96
95
  ```bash
97
- # 1. 새 Rails 프로젝트 생성
98
- rails new myapp
99
- cd myapp
96
+ tayo proxy
97
+ ```
100
98
 
101
- # 2. Tayo로 배포 준비
102
- tayo init # Rails 프로젝트 초기화
103
- tayo gh # GitHub 저장소 및 Container Registry 설정
104
- tayo cf # Cloudflare DNS 설정
99
+ 명령어는 다음 작업들을 수행합니다:
105
100
 
106
- # 3. Kamal로 배포
101
+ - **Cloudflare API 설정**:
102
+ - API 토큰 확인 및 검증 (`~/.tayo/cloudflare_token`)
103
+ - 토큰이 없거나 만료되면 재입력 안내
104
+ - 도메인 목록에서 멀티 선택 가능
105
+
106
+ - **네트워크 구성**:
107
+ - 공인 IP 자동 감지 (`curl ifconfig.me`)
108
+ - 내부 네트워크 IP 감지
109
+ - 포트포워딩 방식 선택:
110
+ - 직접 연결: 80, 443 (기본)
111
+ - 커스텀 포트: 8080, 8443 등 (80/443이 사용 중일 때)
112
+
113
+ - **Docker 컨테이너 관리**:
114
+ - **Traefik**: 리버스 프록시 서버로 80, 443 포트에서 실행
115
+ - 도메인별 자동 라우팅 (File Provider 사용)
116
+ - Let's Encrypt SSL 인증서 자동 발급 및 갱신 (ACME)
117
+ - 호스트에서 실행 중인 서비스 연결 지원 (host.docker.internal)
118
+ - Docker Compose로 관리
119
+ - **Welcome Service**: 3000 포트에 기본 페이지 제공 (Rails 등 호스트 서비스가 없을 때만)
120
+ - **대시보드**: http://localhost:8080 에서 Traefik 상태 및 라우팅 규칙 확인 (admin/admin)
121
+
122
+ - **DNS 자동 설정**:
123
+ - 선택한 도메인에 공인 IP를 A 레코드로 등록
124
+ - 기존 레코드는 자동 업데이트
125
+
126
+ - **프록시 아키텍처**:
127
+ ```
128
+ [인터넷] → [공유기] → [Traefik:80,443] → [호스트 앱:3000]
129
+
130
+ [Docker Compose 관리]
131
+ - traefik.yml (정적 설정)
132
+ - dynamic.yml (동적 라우팅)
133
+ - acme.json (SSL 인증서)
134
+ ```
135
+
136
+ **사용 시나리오:**
137
+ - 홈서버에서 여러 도메인 호스팅
138
+ - 자동 SSL 인증서 관리 (Let's Encrypt ACME)
139
+ - 공유기 포트포워딩과 함께 사용
140
+ - 기존 웹서버와 병행 운영 (커스텀 포트 사용)
141
+ - Docker 컨테이너 및 호스트 서비스 모두 지원
142
+
143
+ 자세한 아키텍처 문서: [doc/proxy-architecture.md](doc/proxy-architecture.md)
144
+
145
+ 각 명령어는 단계별로 진행 상황을 표시하며, 오류가 발생하면 친절한 안내 메시지를 제공합니다.
146
+
147
+ ## 사용 예시
148
+
149
+ ### Rails 앱 배포 (기본)
150
+ ```bash
151
+ rails new myapp
152
+ cd myapp
153
+ bundle exec tayo init
154
+ bundle exec tayo gh
155
+ bundle exec tayo cf
107
156
  bin/kamal setup
108
157
  ```
109
158
 
110
- ## 주요 기능
111
-
112
- - **🚀 원스톱 배포 설정**: 3개의 명령어로 배포 준비 완료
113
- - **🐳 Docker 기반**: OrbStack과 GitHub Container Registry 활용
114
- - **🌐 Cloudflare 통합**: 자동 DNS 설정 및 CDN 지원
115
- - **🔒 보안**: 토큰과 환경 변수를 안전하게 관리
116
- - **🎯 한국어 UI**: 모든 메시지가 한국어로 제공
117
- - **🛡️ 오류 처리**: 각 단계별 검증과 친절한 오류 메시지
118
-
119
- ## 요구사항
120
-
121
- - Ruby 3.1.0 이상
122
- - Rails 7.0 이상
123
- - macOS (OrbStack 사용)
124
- - GitHub 계정
125
- - Cloudflare 계정
126
-
127
- ## 라이선스
159
+ ### 프록시 서버 설정 (고급)
160
+ ```bash
161
+ # 홈서버에 프록시 환경 구성
162
+ tayo proxy
128
163
 
129
- MIT License
164
+ # 여러 도메인을 한 서버에서 호스팅
165
+ # SSL 인증서 자동 관리
166
+ # 공유기 포트포워딩과 함께 사용
167
+ ```
data/lib/tayo/cli.rb CHANGED
@@ -5,6 +5,7 @@ require "colorize"
5
5
  require_relative "commands/init"
6
6
  require_relative "commands/gh"
7
7
  require_relative "commands/cf"
8
+ require_relative "commands/proxy"
8
9
 
9
10
  module Tayo
10
11
  class CLI < Thor
@@ -23,6 +24,11 @@ module Tayo
23
24
  Commands::Cf.new.execute
24
25
  end
25
26
 
27
+ desc "proxy", "Traefik을 설정하여 도메인 라우팅과 SSL을 관리합니다"
28
+ def proxy
29
+ Commands::Proxy.new.execute
30
+ end
31
+
26
32
  desc "version", "Tayo 버전을 표시합니다"
27
33
  def version
28
34
  puts "Tayo #{VERSION}"