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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d61ea1f144cfaf69b20fa118160100a9398ebcc04240a39d445a2f7b7729e828
4
- data.tar.gz: c08f57b24d2fbb5397fea80d0773335925706225aae2b5fb055060b8bfedbaa7
3
+ metadata.gz: b5fa91902d5a43f2bd8259bdd3949017b629c6f228cf68600f9b4fd238a13299
4
+ data.tar.gz: 66e296458abdfca8cebf3e919be4f36f06fcbb1238cefd2e441d96cc193fcdda
5
5
  SHA512:
6
- metadata.gz: b51cc3c508a857449b7ec7a88d6f0e9fb822ee3fdd0f42ce40b088a0eb0bec9eaa31c69789ca65cf22e1214d72fee707da9c2078dcfce9054b666ac787ec39d0
7
- data.tar.gz: 413c144d1c28b9f6ca125bb0d43b5580ab2eb5aa421e89afd09afa289b66f06a1c2dfd173b0c942cb1a09dcc1a0e244869a5700ffd79c46243a416cf6b4e6557
6
+ metadata.gz: 876880104575214b91231682c947c40a73ea233dd558644bb5d34d75e90e5b4a6046185e9e650c9a945d5d9e3d4fd77cc29a4fefbabb83d1c1f82683d2b5ce9b
7
+ data.tar.gz: 2955f65d56f1395e823b159cc64fd2285dfe523dae26b21ea2aa896b350c499029d9fe84908fdbfad0ffbc50734e309386f1ef2613517f087c7499205d06dc36
data/CHANGELOG.md CHANGED
@@ -1,75 +1,67 @@
1
- # 변경 기록 (Changelog)
2
-
3
- ## [0.1.13] - 2025-06-30
4
-
5
- ### 🚀 새로운 기능
6
- - **SQLite 프로덕션 최적화 명령 추가** (`tayo sqlite`):
7
- - Rails 8 SQLite 프로덕션 환경 최적화 설정 자동 적용
8
- - WAL 모드와 IMMEDIATE 트랜잭션으로 동시성 문제 해결
9
- - busy_timeout 5초 설정으로 SQLITE_BUSY 에러 방지
10
- - 캐시 메모리 최적화로 성능 향상
11
- - 모든 데이터베이스(primary, cache, queue, cable)에 적용
12
- - **SQLite 설정 검증 도구**:
13
- - `rails db:sqlite_check` - 모든 pragma 설정 검증
14
- - `rails db:sqlite_stats` - 데이터베이스 성능 통계 확인
15
- - **SQLite 가이드 문서 자동 생성**: 상세한 프로덕션 가이드 포함
16
-
17
- ### 🛠️ 개선사항
18
- - 공통 Base 클래스 추가로 코드 중복 제거
19
- - 테스트 커버리지 확대
20
-
21
- ## [0.1.12] - 2025-01-20
22
-
23
- ### 🚀 새로운 기능
24
- - **CLAUDE.md 문서 지원**: Claude AI 도우미를 위한 프로젝트별 지침 파일 지원
25
- - **Cloudflare DNS 설정 대폭 개선**:
26
- - Cloudflare Zone 목록에서 도메인을 직접 선택하는 방식으로 변경
27
- - 루트 도메인(@)과 서브도메인 선택 UI 개선
28
- - 기존 DNS 레코드 확인 및 덮어쓰기 시 사용자 확인 프롬프트 추가
29
- - Cloudflare API 토큰을 `~/.tayo` 파일에 안전하게 저장 및 재사용
30
- - **자동 Git 커밋**: `tayo gh`와 `tayo cf` 명령어 실행 후 자동으로 변경사항 커밋
31
- - **버전 표시**: 명령어 실행 시 Tayo 버전 표시
32
-
33
- ### 🛠️ 개선사항
34
- - **Init 워크플로우 간소화**:
35
- - Gemfile 수정 제거로 깔끔한 초기화 프로세스
36
- - Docker 캐시 정리 기능 추가
37
- - bootsnap 자동 처리 제거 (안정성 문제로 인해)
38
- - **GitHub Container Registry 설정**:
39
- - 조직(Organization) 계정 지원 추가
40
- - ghcr.io URL 중복 제거 버그 수정
41
- - Docker 로그인 자동화
42
-
43
- ### 🐛 버그 수정
44
- - Dockerfile bootsnap 프리컴파일 이슈 수정
45
- - DNS 레코드 생성 프록시 설정 누락 문제 해결
46
-
47
- ## [0.1.11] - 2025-01-19
48
-
49
- ### 🛠️ 개선사항
50
- - Bootsnap 처리를 DockerfileModifier 클래스로 리팩토링
51
- - 안정적인 bootsnap 라인 제거 로직 구현
52
- - 테스트 커버리지 강화
53
-
54
- ## [0.1.10] - 2025-01-18
55
-
56
- ### 🚀 새로운 기능
57
- - Dockerfile에서 bootsnap 관련 설정 자동 제거/비활성화
58
-
59
- ### 🐛 버그 수정
60
- - Dockerfile bootsnap 프리컴파일 관련 다양한 엣지 케이스 처리
61
-
62
- ## [0.1.9] - 2025-01-17
63
-
64
- ### 🏗️ 기타 변경사항
65
- - 홈페이지 URL을 TeamMilestone 조직으로 업데이트
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 애플리케이션을 홈서버에 배포하기 위한 도구입니다. 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,86 +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
- ### 4. `tayo sqlite` - SQLite 프로덕션 최적화 설정
91
+ ### 4. `tayo proxy` - 프록시 서버 설정 (고급)
95
92
 
96
- Rails 8의 SQLite를 프로덕션 환경에서 안정적으로 사용하기 위한 최적화 설정을 적용합니다.
93
+ Traefik을 Docker로 설정하여 도메인 라우팅과 SSL을 자동 관리합니다.
97
94
 
98
95
  ```bash
99
- tayo sqlite
96
+ tayo proxy
100
97
  ```
101
98
 
102
99
  이 명령어는 다음 작업들을 수행합니다:
103
100
 
104
- - **database.yml 업데이트**:
105
- - WAL (Write-Ahead Logging) 모드 활성화
106
- - IMMEDIATE 트랜잭션 모드 설정
107
- - busy_timeout 5초 설정으로 "database is locked" 에러 방지
108
- - 캐시 및 메모리 최적화 설정
109
- - 모든 데이터베이스(primary, cache, queue, cable)에 적용
110
- - **SQLite pragma 초기화 파일 생성**:
111
- - `config/initializers/sqlite3_pragmas.rb` 생성
112
- - 런타임 추가 최적화 및 설정 검증
113
- - 주기적인 PRAGMA optimize 실행
114
- - **설정 검증 도구 생성**:
115
- - `rails db:sqlite_check` - SQLite 설정 검증
116
- - `rails db:sqlite_stats` - SQLite 성능 통계 확인
117
- - **가이드 문서 생성**:
118
- - `sqlite_guide.md` - 상세한 SQLite 프로덕션 가이드
119
- - **Git 커밋**: 모든 변경사항을 자동으로 커밋합니다
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
- # 2. Tayo로 배포 준비
129
- tayo init # Rails 프로젝트 초기화
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
- - **🚀 원스톱 배포 설정**: 3개의 명령어로 배포 준비 완료
141
- - **🐳 Docker 기반**: OrbStack과 GitHub Container Registry 활용
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
- MIT License
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/sqlite"
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 "sqlite", "SQLite 프로덕션 최적화 설정을 적용합니다"
28
- def sqlite
29
- Commands::Sqlite.new.execute
27
+ desc "proxy", "Traefik을 설정하여 도메인 라우팅과 SSL을 관리합니다"
28
+ def proxy
29
+ Commands::Proxy.new.execute
30
30
  end
31
31
 
32
32
  desc "version", "Tayo 버전을 표시합니다"