From ccaf367916041bf58ad490c044db20d6972837d9 Mon Sep 17 00:00:00 2001 From: happybell80 Date: Wed, 16 Jul 2025 16:12:13 +0900 Subject: [PATCH] docs: Add troubleshooting guide for Gemini CLI, Slack, and network issues MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Document Gemini CLI executable not found solution - Add USE_ASYNC_RESPONSE configuration fix - Explain network integration for backend communication - Include CI/CD path migration from test_api to rb10508_test ๐Ÿค– Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- ...716_SSD_์šฉ๋Ÿ‰_๋ถ€์กฑ_๋ฐ_Docker_์ •๋ฆฌ.md | 149 +++++++++++++++ ...6_frontend_admin_dashboard_improvements.md | 145 +++++++++++++++ ...0250716_gemini_cli_slack_network_issues.md | 169 ++++++++++++++++++ 3 files changed, 463 insertions(+) create mode 100644 docs/troubleshooting/20250716_SSD_์šฉ๋Ÿ‰_๋ถ€์กฑ_๋ฐ_Docker_์ •๋ฆฌ.md create mode 100644 docs/troubleshooting/20250716_frontend_admin_dashboard_improvements.md create mode 100644 docs/troubleshooting/20250716_gemini_cli_slack_network_issues.md diff --git a/docs/troubleshooting/20250716_SSD_์šฉ๋Ÿ‰_๋ถ€์กฑ_๋ฐ_Docker_์ •๋ฆฌ.md b/docs/troubleshooting/20250716_SSD_์šฉ๋Ÿ‰_๋ถ€์กฑ_๋ฐ_Docker_์ •๋ฆฌ.md new file mode 100644 index 0000000..183bdd1 --- /dev/null +++ b/docs/troubleshooting/20250716_SSD_์šฉ๋Ÿ‰_๋ถ€์กฑ_๋ฐ_Docker_์ •๋ฆฌ.md @@ -0,0 +1,149 @@ +# SSD ์šฉ๋Ÿ‰ ๋ถ€์กฑ ๋ฐ Docker ์ •๋ฆฌ + +**๋‚ ์งœ**: 2025-07-16 +**๋ฌธ์ œ**: Ubuntu ์„œ๋ฒ„ SSD ์šฉ๋Ÿ‰ ๋ถ€์กฑ์œผ๋กœ ์ธํ•œ ์‹œ์Šคํ…œ ์„ฑ๋Šฅ ์ €ํ•˜ +**ํ•ด๊ฒฐ ์‹œ๊ฐ„**: ์•ฝ 2์‹œ๊ฐ„ +**๋‹ด๋‹น์ž**: admin + +## ๋ฌธ์ œ ์ƒํ™ฉ + +- Ubuntu ์„œ๋ฒ„ SSD ์šฉ๋Ÿ‰ ๋ถ€์กฑ (228GB ์ค‘ 65GB ์‚ฌ์šฉ, 30%) +- Docker ์ด๋ฏธ์ง€ ๋ฐ ์บ์‹œ๊ฐ€ 38.62GB ์ฐจ์ง€ (37.27GB ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ) +- ๋ถˆํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์ด /home/admin/์— ์‚ฐ์žฌ + +## ์›์ธ ๋ถ„์„ + +### 1. Docker ๊ด€๋ จ (58GB - ์ตœ๋Œ€ ์›์ธ) +- `/var/lib/docker/overlay2`: 52GB (์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ด์–ด) +- `/var/lib/docker/volumes`: 6.2GB +- ๋ฏธ์‚ฌ์šฉ ์ด๋ฏธ์ง€ 43๊ฐœ, ๋นŒ๋“œ ์บ์‹œ 218๊ฐœ + +### 2. ๋ถˆํ•„์š”ํ•œ ๋””๋ ‰ํ† ๋ฆฌ (57MB) +- `/home/admin/test_api/`: 17M (rb10508 ์ด์ „ ๋ฒ„์ „) +- `/home/admin/github-migration/`: 21M (GitHubโ†’Gitea ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋„๊ตฌ) +- `/home/admin/logs/`: 13M (์˜ค๋ž˜๋œ ๋กœ๊ทธ) +- `/home/admin/robeing-nginx/`: 36K + +### 3. ์ค‘๋ณต ํŒŒ์ผ +- Docker ๊ด€๋ จ ํŒŒ์ผ๋“ค (Dockerfile, requirements.txt, docker-compose.yml) +- Python ์บ์‹œ (.cache/uv/archive-v0/) + +## ํ•ด๊ฒฐ ๊ณผ์ • + +### 1๋‹จ๊ณ„: ๋ถˆํ•„์š”ํ•œ ๋””๋ ‰ํ† ๋ฆฌ ์ •๋ฆฌ + +```bash +# HDD dump ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ +mkdir -p /mnt/hdd/dump + +# ๋ถˆํ•„์š”ํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋“ค์„ HDD๋กœ ์ด๋™ +sudo cp -r /home/admin/test_api /mnt/hdd/dump/ && sudo rm -rf /home/admin/test_api +sudo cp -r /home/admin/github-migration /mnt/hdd/dump/ && sudo rm -rf /home/admin/github-migration +sudo cp -r /home/admin/robeing-nginx /mnt/hdd/dump/ && sudo rm -rf /home/admin/robeing-nginx +sudo cp -r /home/admin/logs /mnt/hdd/dump/ && sudo rm -rf /home/admin/logs + +# ์ž„์‹œ ํŒŒ์ผ ์‚ญ์ œ +rm -rf /home/admin/temp/ +``` + +### 2๋‹จ๊ณ„: Docker ์‹œ์Šคํ…œ ์ •๋ฆฌ + +```bash +# ๋ฏธ์‚ฌ์šฉ ์ด๋ฏธ์ง€ ์ •๋ฆฌ (34๊ฐœ ์‚ญ์ œ) +docker image prune -f + +# ์ค‘๋‹จ๋œ ์ปจํ…Œ์ด๋„ˆ ์ •๋ฆฌ (2๊ฐœ, 1.65MB) +docker container prune -f + +# ๋ฏธ์‚ฌ์šฉ ๋„คํŠธ์›Œํฌ ์ •๋ฆฌ +docker network prune -f + +# ๋ฏธ์‚ฌ์šฉ ๋ณผ๋ฅจ ์ •๋ฆฌ (15๊ฐœ, 4.95GB) +docker volume prune -f + +# ๋นŒ๋“œ ์บ์‹œ ์ •๋ฆฌ (218๊ฐœ โ†’ 47๊ฐœ, 30.12GB) +docker builder prune -f +``` + +### 3๋‹จ๊ณ„: ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ ๊ฐœ์„  + +```bash +# ๋ฐฑ์—… ์Šคํฌ๋ฆฝํŠธ ์ด๋ฆ„ ๋ณ€๊ฒฝ ๋ฐ ๊ธฐ๋Šฅ ํ™•์žฅ +mv /home/admin/backup-to-nas.sh /home/admin/maintenance-scheduler.sh + +# Docker ์ •๋ฆฌ ์„น์…˜ ์ถ”๊ฐ€ (์ผ์š”์ผ๋งˆ๋‹ค ์‹คํ–‰) +# - ๋ฏธ์‚ฌ์šฉ ์ด๋ฏธ์ง€/์ปจํ…Œ์ด๋„ˆ/๋„คํŠธ์›Œํฌ ์ •๋ฆฌ +# - 1์ฃผ์ผ ์ด์ƒ๋œ ๋นŒ๋“œ ์บ์‹œ ์ •๋ฆฌ + +# crontab ์—…๋ฐ์ดํŠธ +echo "0 2 * * * /home/admin/maintenance-scheduler.sh >> /var/log/maintenance/cron.log 2>&1" | sudo crontab - +``` + +## ๊ฒฐ๊ณผ + +- **SSD ์‚ฌ์šฉ๋ฅ **: 30% โ†’ 14% (35GB ์ ˆ์•ฝ) +- **์—ฌ์œ  ๊ณต๊ฐ„**: 152GB โ†’ 187GB +- **Docker ์šฉ๋Ÿ‰**: 38.62GB โ†’ 8.46GB +- **์ •๋ฆฌ๋œ ํ•ญ๋ชฉ**: ์ด๋ฏธ์ง€ 34๊ฐœ, ๋ณผ๋ฅจ 15๊ฐœ, ๋นŒ๋“œ ์บ์‹œ 218๊ฐœ + +## ์˜ˆ๋ฐฉ ์กฐ์น˜ + +### 1. ์ž๋™ ์ •๋ฆฌ ์Šค์ผ€์ค„ +- **๋งค์ผ ์ƒˆ๋ฒฝ 2์‹œ**: ๋ฐ์ดํ„ฐ ๋ฐฑ์—… +- **๋งค์ฃผ ์ผ์š”์ผ**: Docker ์‹œ์Šคํ…œ ์ •๋ฆฌ +- **๋งค์›” 1์ผ**: ์›”๊ฐ„ ์•„์นด์ด๋ธŒ ์ƒ์„ฑ + +### 2. ๋ชจ๋‹ˆํ„ฐ๋ง +- maintenance-scheduler.sh์—์„œ ์ •๋ฆฌ ๊ฒฐ๊ณผ ๋กœ๊น… +- /var/log/maintenance/ ๋””๋ ‰ํ† ๋ฆฌ์— ์ž‘์—… ๋กœ๊ทธ ์ €์žฅ + +### 3. ๊ตฌ์กฐ ๊ฐœ์„  +- ๋กœ๊ทธ ํŒŒ์ผ๋“ค์„ HDD๋กœ ์ด๋™ (์‹ฌ๋งํฌ ์—ฐ๊ฒฐ) +- ๋ฐฑ์—… ํŒŒ์ผ๋“ค์„ /mnt/hdd/frontend-backups/๋กœ ์ด๋™ + +## ๊ตํ›ˆ + +- Docker๋Š” ์ •๊ธฐ์ ์ธ ์ •๋ฆฌ ์—†์ด๋Š” ์ง€์†์ ์œผ๋กœ ์šฉ๋Ÿ‰์„ ์ฐจ์ง€ํ•จ +- ๋นŒ๋“œ ์บ์‹œ๊ฐ€ ๊ฐ€์žฅ ํฐ ์šฉ๋Ÿ‰์„ ์ฐจ์ง€ํ•˜๋ฏ€๋กœ ์šฐ์„  ์ •๋ฆฌ ๋Œ€์ƒ +- ์ž๋™ํ™”๋œ ์ •๋ฆฌ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ•„์ˆ˜์  +- ๋กœ๊ทธ์™€ ๋ฐฑ์—…์€ HDD๋ฅผ ํ™œ์šฉํ•˜์—ฌ SSD ๊ณต๊ฐ„ ์ ˆ์•ฝ + +## ๊ด€๋ จ ๋ช…๋ น์–ด + +### ์šฉ๋Ÿ‰ ํ™•์ธ +```bash +# ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰ ํ™•์ธ +df -h + +# Docker ์šฉ๋Ÿ‰ ํ™•์ธ +docker system df + +# ๋””๋ ‰ํ† ๋ฆฌ๋ณ„ ์šฉ๋Ÿ‰ ํ™•์ธ +du -sh /var/lib/docker/* +``` + +### ์ •๊ธฐ ์ •๋ฆฌ ๋ช…๋ น์–ด +```bash +# ์ „์ฒด Docker ์ •๋ฆฌ (์ฃผ์˜: ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ์ œ์™ธ) +docker system prune -a -f + +# ๋นŒ๋“œ ์บ์‹œ๋งŒ ์ •๋ฆฌ +docker builder prune -f + +# 1์ฃผ์ผ ์ด์ƒ๋œ ๋นŒ๋“œ ์บ์‹œ ์ •๋ฆฌ +docker builder prune --filter until=168h -f +``` + +## ํ›„์† ์กฐ์น˜ + +1. **maintenance-scheduler.sh ์Šคํฌ๋ฆฝํŠธ ๊ฐœ์„ ** + - Docker ์ •๋ฆฌ ๋กœ์ง ์ถ”๊ฐ€ + - ์šฉ๋Ÿ‰ ์ž„๊ณ„์น˜ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ธฐ๋Šฅ ์ถ”๊ฐ€ + +2. **๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ ๊ตฌ์ถ•** + - SSD/HDD ์šฉ๋Ÿ‰ ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง + - Docker ์šฉ๋Ÿ‰ ์ถ”์  + +3. **๋ฐฑ์—… ์ „๋žต ๊ฐœ์„ ** + - ์ค‘์š” ๋ฐ์ดํ„ฐ๋Š” SSD์— ์œ ์ง€ + - ๋กœ๊ทธ ๋ฐ ์•„์นด์ด๋ธŒ๋Š” HDD๋กœ ์ด๋™ \ No newline at end of file diff --git a/docs/troubleshooting/20250716_frontend_admin_dashboard_improvements.md b/docs/troubleshooting/20250716_frontend_admin_dashboard_improvements.md new file mode 100644 index 0000000..70e6856 --- /dev/null +++ b/docs/troubleshooting/20250716_frontend_admin_dashboard_improvements.md @@ -0,0 +1,145 @@ +# Frontend Admin Dashboard ๊ฐœ์„  ๋ฐ ๋ฌธ์ œ ํ•ด๊ฒฐ + +**๋‚ ์งœ**: 2025-07-16 +**๋ฌธ์ œ**: Admin ๋Œ€์‹œ๋ณด๋“œ ์„œ๋น„์Šค ์ƒํƒœ ํ‘œ์‹œ ์˜ค๋ฅ˜ ๋ฐ Git ํ™œ๋™ ๋ฏธํ‘œ์‹œ +**ํ•ด๊ฒฐ ์‹œ๊ฐ„**: ์•ฝ 3์‹œ๊ฐ„ +**๋‹ด๋‹น์ž**: happybell + +## ๋ฌธ์ œ ์ƒํ™ฉ + +### 1. ์„œ๋น„์Šค ์ƒํƒœ ํ‘œ์‹œ ์˜ค๋ฅ˜ +- ์ฆ์ƒ: Admin ๋Œ€์‹œ๋ณด๋“œ์—์„œ ์„œ๋น„์Šค ์ƒํƒœ๊ฐ€ `undefined`๋กœ ํ‘œ์‹œ +- ์›์ธ: API ์‘๋‹ต ๊ตฌ์กฐ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•œ ํ”„๋ก ํŠธ์—”๋“œ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ +- ๊ธฐ์กด: `return services_status` (์ง์ ‘ ๋ฐ˜ํ™˜) +- ๋ณ€๊ฒฝ: `return { "services": services_status, ... }` (๊ฐ์ฒด๋กœ ๊ฐ์‹ธ์„œ ๋ฐ˜ํ™˜) + +### 2. Git ํ™œ๋™ ๋ฏธํ‘œ์‹œ +- ์ฆ์ƒ: ์ตœ๊ทผ Git ํ™œ๋™ ์„น์…˜์ด ๋นˆ ์ƒํƒœ๋กœ ํ‘œ์‹œ +- ์›์ธ: `/host_home/github-migration/` ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Œ +- ๋ฐฐ๊ฒฝ: ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๋Š” SSD ์šฉ๋Ÿ‰ ๋ฌธ์ œ๋กœ HDD๋กœ ์ด๋™๋˜์—ˆ์Œ + +### 3. UI ๋ ˆ์ด์•„์›ƒ ๋ฌธ์ œ +- Gitea Runners ์„น์…˜์ด ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๋‚˜ ์‹ค์ œ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ +- Git ํ™œ๋™ ์„น์…˜์ด ์ข์•„์„œ ์ €์žฅ์†Œ๋ช…๊ณผ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๊ฐ€ ์ž˜๋ฆผ + +## ํ•ด๊ฒฐ ๊ณผ์ • + +### 1. ๋™์  ์„œ๋น„์Šค ๋ฐœ๊ฒฌ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ + +```python +# ์„œ๋น„์Šค ์ž๋™ ๋ฐœ๊ฒฌ ํ•จ์ˆ˜ ์ถ”๊ฐ€ +def discover_docker_services(): + """Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋…ธ์ถœ๋œ ํฌํŠธ ๋ฐœ๊ฒฌ""" + # Docker ์ปจํ…Œ์ด๋„ˆ ๋ชฉ๋ก์—์„œ ํฌํŠธ ์ •๋ณด ์ถ”์ถœ + # ์ด๋ฏธ ์•Œ๋ ค์ง„ ์„œ๋น„์Šค ์ œ์™ธํ•˜๊ณ  ์ƒˆ๋กœ์šด ์„œ๋น„์Šค๋งŒ ๋ฐ˜ํ™˜ + +def add_discovered_service(service_name, port, url=None, health_path="/"): + """๋ฐœ๊ฒฌ๋œ ์„œ๋น„์Šค๋ฅผ SERVICES์— ์ถ”๊ฐ€""" + # ๋™์ ์œผ๋กœ ์„œ๋น„์Šค ๋ชฉ๋ก ์—…๋ฐ์ดํŠธ +``` + +**์ƒˆ๋กœ์šด API ์—”๋“œํฌ์ธํŠธ**: +- `GET /admin/services/discover` - ์ˆ˜๋™ ์„œ๋น„์Šค ๋ฐœ๊ฒฌ +- `POST /admin/services/add` - ์„œ๋น„์Šค ์ˆ˜๋™ ์ถ”๊ฐ€ +- `DELETE /admin/services/{name}` - ์„œ๋น„์Šค ์ œ๊ฑฐ +- `GET /admin/services/list` - ์ „์ฒด ์„œ๋น„์Šค ๋ชฉ๋ก +- `GET /admin/services/status?auto_discover=true` - ์ž๋™ ๋ฐœ๊ฒฌ ํฌํ•จ ์ƒํƒœ ์ฒดํฌ + +### 2. Gitea API๋ฅผ ํ†ตํ•œ Git ํ™œ๋™ ์กฐํšŒ + +**๊ธฐ์กด ๋ฐฉ์‹ (ํŒŒ์ผ์‹œ์Šคํ…œ ์ ‘๊ทผ)**: +```python +repos = [ + "/host_home/github-migration/nginx-infra", + "/host_home/github-migration/frontend-base", + ... +] +# subprocess๋กœ git ๋ช…๋ น์–ด ์‹คํ–‰ +``` + +**์ƒˆ๋กœ์šด ๋ฐฉ์‹ (Gitea API)**: +```python +GITEA_URL = "http://172.17.0.1:3000" +GITEA_TOKEN = "b18d3b01a802f001f3e2649cbd750008710a1d99" + +# Gitea REST API ์‚ฌ์šฉ +- /api/v1/repos/{owner}/{repo} - ์ €์žฅ์†Œ ์ •๋ณด +- /api/v1/repos/{owner}/{repo}/commits - ์ตœ๊ทผ ์ปค๋ฐ‹ +``` + +### 3. UI ๋ ˆ์ด์•„์›ƒ ๊ฐœ์„  + +**๋ณ€๊ฒฝ ์ „**: +``` +[Nginx ์ƒํƒœ (1์นธ)] [Gitea Runners (1์นธ)] [Git ํ™œ๋™ (1์นธ)] +``` + +**๋ณ€๊ฒฝ ํ›„**: +``` +[Nginx ์ƒํƒœ (1์นธ)] [Git ํ™œ๋™ (2์นธ - ํ™•์žฅ)] +``` + +- Gitea Runners ์„น์…˜ ์ œ๊ฑฐ +- Git ํ™œ๋™์„ `grid-column: span 2`๋กœ ํ™•์žฅ +- ํ…Œ์ด๋ธ” ํ˜•์‹์œผ๋กœ ๊ฐ„์†Œํ™” (๋ ˆํฌ๋‹น ํ•œ ์ค„) + +## ๊ตฌํ˜„ ๊ฒฐ๊ณผ + +### 1. ์„œ๋น„์Šค ์ƒํƒœ API ๋ณต๊ตฌ +- ์›๋ž˜ ๊ตฌ์กฐ๋กœ ๋ณต๊ตฌํ•˜์—ฌ ํ”„๋ก ํŠธ์—”๋“œ ํ˜ธํ™˜์„ฑ ์œ ์ง€ +- ์ž๋™ ๋ฐœ๊ฒฌ ๊ธฐ๋Šฅ์€ ๋ณ„๋„ ์—”๋“œํฌ์ธํŠธ๋กœ ๋ถ„๋ฆฌ + +### 2. Git ํ™œ๋™ ์ •์ƒ ํ‘œ์‹œ +- 5๊ฐœ ์ฃผ์š” ์ €์žฅ์†Œ์˜ ์ตœ๊ทผ ํ™œ๋™ ํ‘œ์‹œ +- ๊ฐ ์ €์žฅ์†Œ๋ณ„ ์ตœ๊ทผ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€์™€ ์‹œ๊ฐ„ ํ‘œ์‹œ +- API ์—๋Ÿฌ ์ฒ˜๋ฆฌ ์ถ”๊ฐ€ + +### 3. ๊ฐœ์„ ๋œ ๋ ˆ์ด์•„์›ƒ +- ๋” ๋งŽ์€ ๊ณต๊ฐ„ ํ™œ์šฉ์œผ๋กœ ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ +- ๊ธด ์ €์žฅ์†Œ๋ช…๊ณผ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ž˜๋ฆผ ๋ฌธ์ œ ํ•ด๊ฒฐ + +## ๊ธฐ์ˆ ์  ๊ณ ๋ ค์‚ฌํ•ญ + +### 1. Gitea API ๊ถŒํ•œ +- ํ˜„์žฌ ํ† ํฐ: `write:repository` ๊ถŒํ•œ๋งŒ ์žˆ์Œ +- ์ œ์•ฝ์‚ฌํ•ญ: `/api/v1/user`, `/api/v1/orgs` ์ ‘๊ทผ ๋ถˆ๊ฐ€ +- ํ•ด๊ฒฐ์ฑ…: ์•Œ๋ ค์ง„ ์ €์žฅ์†Œ ๋ชฉ๋ก ํ•˜๋“œ์ฝ”๋”ฉ + +### 2. ๋„คํŠธ์›Œํฌ ์„ค์ • +- Backend ์ปจํ…Œ์ด๋„ˆ โ†’ Gitea: `http://172.17.0.1:3000` +- Backend ์ปจํ…Œ์ด๋„ˆ โ†’ ํ˜ธ์ŠคํŠธ ์„œ๋น„์Šค: `http://172.17.0.1:{port}` +- Docker ๋„คํŠธ์›Œํฌ: `appnet` (external) + +### 3. ์ž๋™ ๋ฐœ๊ฒฌ ์„ฑ๋Šฅ +- ํฌํŠธ ์Šค์บ” ์‹œ ThreadPoolExecutor ์‚ฌ์šฉ (50 workers) +- ํƒ€์ž„์•„์›ƒ ์„ค์ •: 1์ดˆ (ํฌํŠธ ์Šค์บ”), 5์ดˆ (health check) + +## ๋‚จ์€ ์ด์Šˆ + +### rb8001_8001 ์„œ๋น„์Šค timeout +- ํฌํŠธ 8001์—์„œ ์‹คํ–‰ ์ค‘์ธ ์„œ๋น„์Šค๊ฐ€ ์‘๋‹ตํ•˜์ง€ ์•Š์Œ +- ์ž๋™ ๋ฐœ๊ฒฌ์œผ๋กœ ์ถ”๊ฐ€๋˜์—ˆ์œผ๋‚˜ health check ์‹คํŒจ +- ์ถ”๊ฐ€ ์กฐ์‚ฌ ํ•„์š”: + - Docker ์ปจํ…Œ์ด๋„ˆ ์ƒํƒœ ํ™•์ธ + - ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ํ™•์ธ + - ์„œ๋น„์Šค ๋กœ๊ทธ ํ™•์ธ + +## ๊ตํ›ˆ + +1. **API ๋ณ€๊ฒฝ ์‹œ ํ˜ธํ™˜์„ฑ ๊ณ ๋ ค** + - ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ ๊ธฐ๋Œ€ํ•˜๋Š” ์‘๋‹ต ๊ตฌ์กฐ ํ™•์ธ ํ•„์ˆ˜ + - Breaking change๋Š” ์‹ ์ค‘ํ•˜๊ฒŒ ์ ‘๊ทผ + +2. **์™ธ๋ถ€ ์˜์กด์„ฑ ๊ด€๋ฆฌ** + - ํŒŒ์ผ์‹œ์Šคํ…œ ๊ฒฝ๋กœ ์˜์กด์„ฑ์€ ์ทจ์•ฝํ•จ + - API ๊ธฐ๋ฐ˜ ์ ‘๊ทผ์ด ๋” ์•ˆ์ •์  + +3. **๊ถŒํ•œ ๊ด€๋ฆฌ** + - API ํ† ํฐ ๊ถŒํ•œ์€ ํ•„์š”ํ•œ ๋งŒํผ๋งŒ ๋ถ€์—ฌ + - ๊ถŒํ•œ ๋ถ€์กฑ ์‹œ ๋Œ€์•ˆ ๋ฐฉ๋ฒ• ์ค€๋น„ + +## ๊ด€๋ จ ์ปค๋ฐ‹ +- `8ff8fe5` - ๋™์  ์„œ๋น„์Šค ๊ฐ์ง€ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ +- `98b2577` - Git ํ™œ๋™ ์กฐํšŒ๋ฅผ Gitea API๋กœ ๋Œ€์ฒด +- `969cc72` - Gitea Runners ์ œ๊ฑฐ ๋ฐ Git ํ™œ๋™ ํ™•์žฅ +- `ca2e566` - Git ํ™œ๋™ ํ‘œ์‹œ ๊ฐ„์†Œํ™” \ No newline at end of file diff --git a/docs/troubleshooting/20250716_gemini_cli_slack_network_issues.md b/docs/troubleshooting/20250716_gemini_cli_slack_network_issues.md new file mode 100644 index 0000000..afaa775 --- /dev/null +++ b/docs/troubleshooting/20250716_gemini_cli_slack_network_issues.md @@ -0,0 +1,169 @@ +# Gemini CLI, Slack ์—ฐ๊ฒฐ, ๋„คํŠธ์›Œํฌ ํ†ตํ•ฉ ๋ฌธ์ œ ํ•ด๊ฒฐ + +**๋‚ ์งœ**: 2025-07-16 +**์ž‘์—…์ž**: Claude & happybell + +## ๊ฐœ์š” + +rb8001๊ณผ rb10508_test ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋ฐœ์ƒํ•œ ์—ฌ๋Ÿฌ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ • + +## 1. Gemini CLI ์‹คํ–‰ ๋ฌธ์ œ + +### ์ฆ์ƒ +- rb8001: "Gemini CLI๊ฐ€ ์„ค์น˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค" ์—๋Ÿฌ +- rb10508_test (test-api-container): ์ •์ƒ ์ž‘๋™ +- ์—๋Ÿฌ: `exec: "gemini": executable file not found in $PATH` + +### ์›์ธ ๋ถ„์„ +- Docker ์ปจํ…Œ์ด๋„ˆ๋Š” Python ๊ธฐ๋ฐ˜์œผ๋กœ Node.js๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์Œ +- ์„œ๋ฒ„์—๋Š” ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ์ง€๋งŒ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ์ ‘๊ทผ ๋ถˆ๊ฐ€ +- test-api-container๋Š” Node.js๋ฅผ ๋งˆ์šดํŠธํ•˜์—ฌ ์‚ฌ์šฉ ์ค‘ + +### ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• + +#### 1. docker-compose.yml์— Node.js ๋งˆ์šดํŠธ ์ถ”๊ฐ€ +```yaml +volumes: + # ๊ธฐ์กด ๋ณผ๋ฅจ๋“ค... + # Node.js ๋ฐ Gemini CLI ๋งˆ์šดํŠธ + - /home/admin/.nvm/versions/node/v24.4.0:/usr/local/node:ro + +environment: + # ๊ธฐ์กด ํ™˜๊ฒฝ๋ณ€์ˆ˜๋“ค... + # Node.js PATH ์ถ”๊ฐ€ + - PATH=/usr/local/node/bin:$PATH +``` + +#### 2. gemini_service.py์—์„œ ์ ˆ๋Œ€ ๊ฒฝ๋กœ ์‚ฌ์šฉ +```python +# ๊ธฐ์กด +cmd = ["gemini", "-m", "gemini-2.5-flash", "-p", full_prompt] + +# ์ˆ˜์ • +cmd = ["/usr/local/node/bin/gemini", "-m", "gemini-2.5-flash", "-p", full_prompt] +``` + +## 2. Slack ์—ฐ๊ฒฐ ๋ฌธ์ œ + +### ์ฆ์ƒ +- rb10508_test ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘์€ ์„ฑ๊ณตํ•˜์ง€๋งŒ Slack ๋Œ€ํ™” ๋ถˆ๊ฐ€ +- ์—๋Ÿฌ: `AttributeError: 'Settings' object has no attribute 'USE_ASYNC_RESPONSE'` + +### ์›์ธ +- app/api/slack.py์—์„œ settings.USE_ASYNC_RESPONSE ์ฐธ์กฐ +- app/core/config.py์˜ Settings ํด๋ž˜์Šค์— ํ•ด๋‹น ์†์„ฑ ๋ฏธ์ •์˜ + +### ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• + +config.py์˜ Settings ํด๋ž˜์Šค์— ์ถ”๊ฐ€: +```python +# Application Configuration +DEBUG: bool = True +LOG_LEVEL: str = "INFO" +MAX_MEMORY_SIZE: int = 1000 +USE_ASYNC_RESPONSE: bool = True # ์ถ”๊ฐ€ +``` + +## 3. ๋„คํŠธ์›Œํฌ ํ†ตํ•ฉ ๋ฌธ์ œ + +### ๋ฐฐ๊ฒฝ +- ๋กœ๋น™๋“ค์ด frontend-backend์™€ ์ƒํƒœ๋ฅผ ์ฃผ๊ณ ๋ฐ›์•„์•ผ ํ•จ +- Docker ๋„คํŠธ์›Œํฌ ๊ฒฉ๋ฆฌ๋กœ ์ธํ•ด ํ†ต์‹  ๋ถˆ๊ฐ€ + +### ํ˜„ํ™ฉ +- frontend-backend-1: appnet ๋„คํŠธ์›Œํฌ +- rb8001: host ๋„คํŠธ์›Œํฌ (๋ณด์•ˆ ์ทจ์•ฝ) +- rb10508_test: ์ž์ฒด bridge ๋„คํŠธ์›Œํฌ (๊ฒฉ๋ฆฌ๋จ) + +### ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• + +#### rb10508_test/docker-compose.yml +```yaml +services: + test-api: + # ... + networks: + - default + - appnet + +networks: + appnet: + external: true +``` + +#### rb8001/docker-compose.yml +```yaml +services: + rb8001: + # network_mode: host ์ œ๊ฑฐ + networks: + - appnet + ports: + - "8001:8001" + +networks: + appnet: + external: true +``` + +### ์žฅ์  +- ๋ณด์•ˆ ํ–ฅ์ƒ (host ๋„คํŠธ์›Œํฌ ์ œ๊ฑฐ) +- ์„ ํƒ์  ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํ†ต์‹  +- backend์™€ ์•ˆ์ „ํ•œ ์ƒํƒœ ๊ณต์œ  ๊ฐ€๋Šฅ + +## 4. CI/CD ๊ฒฝ๋กœ ๋ฌธ์ œ + +### ์ฆ์ƒ +- GitHub Actions ์‹คํŒจ: `/home/admin/test_api: ๊ทธ๋Ÿฐ ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค` + +### ์›์ธ +- ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ๋ณ€๊ฒฝ: test_api โ†’ rb10508_test +- CI/CD ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ๊ตฌ ๊ฒฝ๋กœ ์ฐธ์กฐ + +### ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• + +.gitea/workflows/cicd.yml ์ˆ˜์ •: +- `/home/admin/test_api` โ†’ `/home/admin/rb10508_test` +- ์ฝ”๋“œ ๋ณต์‚ฌ ๊ฒฝ๋กœ๋ฅผ rb8001๊ณผ ๋™์ผํ•˜๊ฒŒ ๋ณ€๊ฒฝ: + ```bash + cp -r /home/admin/.cache/act/*/hostexecutor/* /home/admin/rb10508_test/ + ``` + +## ์ ์šฉ ์ˆœ์„œ + +1. ๋กœ์ปฌ์—์„œ ์ฝ”๋“œ ์ˆ˜์ • ๋ฐ ํ‘ธ์‹œ +2. ์„œ๋ฒ„์—์„œ .env ํŒŒ์ผ ํ™•์ธ/์ƒ์„ฑ +3. ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ ์ •๋ฆฌ: + ```bash + docker stop test-api-container + docker rm test-api-container + ``` +4. ์ƒˆ ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘: + ```bash + cd /home/admin/rb8001 + docker-compose down && docker-compose up -d + + cd /home/admin/rb10508_test + docker-compose up -d + ``` + +## ๊ฒ€์ฆ + +```bash +# Gemini CLI ํ™•์ธ +docker exec rb8001 /usr/local/node/bin/gemini --version +docker exec rb10508_test /usr/local/node/bin/gemini --version + +# ๋„คํŠธ์›Œํฌ ํ™•์ธ +docker network inspect appnet + +# Slack ๋Œ€ํ™” ํ…Œ์ŠคํŠธ +# Slack์—์„œ @Ro-being, @Ro-being_test๋กœ ๋Œ€ํ™” +``` + +## ๊ตํ›ˆ + +1. **์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ ๊ณ ๋ ค**: ์„œ๋ฒ„์— ์„ค์น˜๋œ ๋„๊ตฌ๊ฐ€ ์ปจํ…Œ์ด๋„ˆ์—์„œ๋Š” ์—†์„ ์ˆ˜ ์žˆ์Œ +2. **์„ค์ • ๋™๊ธฐํ™”**: ์ƒˆ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ์‹œ ๋ชจ๋“  ๊ด€๋ จ ํŒŒ์ผ ์—…๋ฐ์ดํŠธ ํ•„์š” +3. **๋„คํŠธ์›Œํฌ ์„ค๊ณ„**: ์ดˆ๊ธฐ๋ถ€ํ„ฐ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํ†ต์‹  ๊ณ ๋ ค +4. **๊ฒฝ๋กœ ์ผ๊ด€์„ฑ**: CI/CD ์„ค์ • ์‹œ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ๋ณ€๊ฒฝ ๋ฐ˜์˜ \ No newline at end of file