tayo 0.1.13 → 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 +4 -4
- data/CHANGELOG.md +67 -75
- data/README.md +77 -68
- data/lib/tayo/cli.rb +4 -4
- data/lib/tayo/commands/cf.rb +116 -162
- data/lib/tayo/commands/init.rb +35 -35
- data/lib/tayo/commands/proxy.rb +97 -0
- data/lib/tayo/proxy/cloudflare_client.rb +323 -0
- data/lib/tayo/proxy/docker_manager.rb +150 -0
- data/lib/tayo/proxy/network_config.rb +147 -0
- data/lib/tayo/proxy/traefik_config.rb +303 -0
- data/lib/tayo/proxy/welcome_service.rb +337 -0
- data/lib/tayo/version.rb +1 -1
- data/lib/templates/welcome/Dockerfile +14 -0
- data/lib/templates/welcome/index.html +173 -0
- metadata +24 -6
- data/CLAUDE.md +0 -58
- data/lib/tayo/commands/base.rb +0 -13
- data/lib/tayo/commands/sqlite.rb +0 -413
- data/scripts/setup_rubygems_key.sh +0 -60
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b5fa91902d5a43f2bd8259bdd3949017b629c6f228cf68600f9b4fd238a13299
|
|
4
|
+
data.tar.gz: 66e296458abdfca8cebf3e919be4f36f06fcbb1238cefd2e441d96cc193fcdda
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 876880104575214b91231682c947c40a73ea233dd558644bb5d34d75e90e5b4a6046185e9e650c9a945d5d9e3d4fd77cc29a4fefbabb83d1c1f82683d2b5ce9b
|
|
7
|
+
data.tar.gz: 2955f65d56f1395e823b159cc64fd2285dfe523dae26b21ea2aa896b350c499029d9fe84908fdbfad0ffbc50734e309386f1ef2613517f087c7499205d06dc36
|
data/CHANGELOG.md
CHANGED
|
@@ -1,75 +1,67 @@
|
|
|
1
|
-
# 변경
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
## [0.1.0] - 2025-01-15
|
|
69
|
-
|
|
70
|
-
### 🎉 최초 릴리스
|
|
71
|
-
- `tayo init`: Rails 프로젝트 초기 설정 (Docker, Welcome 페이지)
|
|
72
|
-
- `tayo gh`: GitHub 저장소 및 Container Registry 설정
|
|
73
|
-
- `tayo cf`: Cloudflare DNS 설정
|
|
74
|
-
- OrbStack 자동 감지 및 실행
|
|
75
|
-
- 한국어 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 애플리케이션을 홈서버에 배포하기 위한 도구입니다.
|
|
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,86 +73,95 @@ tayo cf
|
|
|
73
73
|
|
|
74
74
|
이 명령어는 다음 작업들을 수행합니다:
|
|
75
75
|
|
|
76
|
+
- **설정 파일 확인**: `config/deploy.yml` 파일에서 서버 IP와 도메인 정보를 읽습니다
|
|
76
77
|
- **Cloudflare 인증**:
|
|
77
78
|
- API 토큰 입력 요청 (처음 실행 시)
|
|
78
|
-
- 토큰을
|
|
79
|
-
|
|
80
|
-
-
|
|
81
|
-
-
|
|
82
|
-
- 루트 도메인(@) 또는 서브도메인 설정 지원
|
|
83
|
-
- 대화형 UI로 쉽게 설정 가능
|
|
79
|
+
- 토큰을 안전하게 저장 (macOS Keychain 사용)
|
|
80
|
+
- **도메인 Zone 확인**:
|
|
81
|
+
- Cloudflare 계정에서 도메인을 찾습니다
|
|
82
|
+
- Zone ID를 자동으로 가져옵니다
|
|
84
83
|
- **DNS 레코드 생성/업데이트**:
|
|
85
|
-
- A 레코드 생성: IP
|
|
86
|
-
-
|
|
87
|
-
- 기존 레코드가 있으면 사용자 확인 후 업데이트
|
|
84
|
+
- A 레코드 생성: 도메인을 서버 IP에 연결
|
|
85
|
+
- 기존 레코드가 있으면 업데이트
|
|
88
86
|
- Proxied 설정 (Cloudflare CDN 사용)
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
- **Git 커밋**: DNS 설정 변경사항을 자동으로 커밋합니다
|
|
87
|
+
- **설정 완료 확인**:
|
|
88
|
+
- DNS 설정이 완료되면 성공 메시지 표시
|
|
89
|
+
- 도메인으로 접속 가능함을 안내
|
|
93
90
|
|
|
94
|
-
### 4. `tayo
|
|
91
|
+
### 4. `tayo proxy` - 프록시 서버 설정 (고급)
|
|
95
92
|
|
|
96
|
-
|
|
93
|
+
Traefik을 Docker로 설정하여 도메인 라우팅과 SSL을 자동 관리합니다.
|
|
97
94
|
|
|
98
95
|
```bash
|
|
99
|
-
tayo
|
|
96
|
+
tayo proxy
|
|
100
97
|
```
|
|
101
98
|
|
|
102
99
|
이 명령어는 다음 작업들을 수행합니다:
|
|
103
100
|
|
|
104
|
-
- **
|
|
105
|
-
-
|
|
106
|
-
-
|
|
107
|
-
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
-
|
|
111
|
-
-
|
|
112
|
-
-
|
|
113
|
-
|
|
114
|
-
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
-
|
|
118
|
-
|
|
119
|
-
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
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 앱 배포 (기본)
|
|
123
150
|
```bash
|
|
124
|
-
# 1. 새 Rails 프로젝트 생성
|
|
125
151
|
rails new myapp
|
|
126
152
|
cd myapp
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
tayo gh # GitHub 저장소 및 Container Registry 설정
|
|
131
|
-
tayo cf # Cloudflare DNS 설정
|
|
132
|
-
tayo sqlite # SQLite 프로덕션 최적화 (선택사항)
|
|
133
|
-
|
|
134
|
-
# 3. Kamal로 배포
|
|
153
|
+
bundle exec tayo init
|
|
154
|
+
bundle exec tayo gh
|
|
155
|
+
bundle exec tayo cf
|
|
135
156
|
bin/kamal setup
|
|
136
157
|
```
|
|
137
158
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
- **🌐 Cloudflare 통합**: 자동 DNS 설정 및 CDN 지원
|
|
143
|
-
- **🗄️ SQLite 최적화**: Rails 8 SQLite 프로덕션 환경 완벽 지원
|
|
144
|
-
- **🔒 보안**: 토큰과 환경 변수를 안전하게 관리
|
|
145
|
-
- **🎯 한국어 UI**: 모든 메시지가 한국어로 제공
|
|
146
|
-
- **🛡️ 오류 처리**: 각 단계별 검증과 친절한 오류 메시지
|
|
147
|
-
|
|
148
|
-
## 요구사항
|
|
149
|
-
|
|
150
|
-
- Ruby 3.1.0 이상
|
|
151
|
-
- Rails 7.0 이상
|
|
152
|
-
- macOS (OrbStack 사용)
|
|
153
|
-
- GitHub 계정
|
|
154
|
-
- Cloudflare 계정
|
|
155
|
-
|
|
156
|
-
## 라이선스
|
|
159
|
+
### 프록시 서버 설정 (고급)
|
|
160
|
+
```bash
|
|
161
|
+
# 홈서버에 프록시 환경 구성
|
|
162
|
+
tayo proxy
|
|
157
163
|
|
|
158
|
-
|
|
164
|
+
# 여러 도메인을 한 서버에서 호스팅
|
|
165
|
+
# SSL 인증서 자동 관리
|
|
166
|
+
# 공유기 포트포워딩과 함께 사용
|
|
167
|
+
```
|
data/lib/tayo/cli.rb
CHANGED
|
@@ -5,7 +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/
|
|
8
|
+
require_relative "commands/proxy"
|
|
9
9
|
|
|
10
10
|
module Tayo
|
|
11
11
|
class CLI < Thor
|
|
@@ -24,9 +24,9 @@ module Tayo
|
|
|
24
24
|
Commands::Cf.new.execute
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
desc "
|
|
28
|
-
def
|
|
29
|
-
Commands::
|
|
27
|
+
desc "proxy", "Traefik을 설정하여 도메인 라우팅과 SSL을 관리합니다"
|
|
28
|
+
def proxy
|
|
29
|
+
Commands::Proxy.new.execute
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
desc "version", "Tayo 버전을 표시합니다"
|