From 465242f46b33795294845abba1c672f222a19009 Mon Sep 17 00:00:00 2001 From: happybell80 Date: Tue, 10 Mar 2026 23:09:32 +0900 Subject: [PATCH] docs: migrate infra troubleshooting from robeing --- journey/README.md | 5 + ...žฅ์†Œ_SSHFS์„ค์ •๊ณผ_ํ…œํ”Œ๋ฆฟํ•ด๊ฒฐ์ฑ….md | 117 +++++++++++ .../250930_opensearch_hdd_migration.md | 62 ++++++ ...skill-rag-file_sshfs_allow_other_ํ•ด๊ฒฐ.md | 195 ++++++++++++++++++ ...260115_postgresql_neo4j_tcp_healthcheck.md | 45 ++++ ..._git_tracking_exposure_๋ฐ_์ฐจ๋‹จ์กฐ์น˜.md | 81 ++++++++ 6 files changed, 505 insertions(+) create mode 100644 journey/troubleshooting/250731_๋กœ๊ทธ์ €์žฅ์†Œ_SSHFS์„ค์ •๊ณผ_ํ…œํ”Œ๋ฆฟํ•ด๊ฒฐ์ฑ….md create mode 100644 journey/troubleshooting/250930_opensearch_hdd_migration.md create mode 100644 journey/troubleshooting/251014_skill-rag-file_sshfs_allow_other_ํ•ด๊ฒฐ.md create mode 100644 journey/troubleshooting/260115_postgresql_neo4j_tcp_healthcheck.md create mode 100644 journey/troubleshooting/260308_env_backup_git_tracking_exposure_๋ฐ_์ฐจ๋‹จ์กฐ์น˜.md diff --git a/journey/README.md b/journey/README.md index 93e86c5..6801368 100644 --- a/journey/README.md +++ b/journey/README.md @@ -36,7 +36,12 @@ - [260226 NAS(192.168.219.51) ์ ‘์†๋ถˆ๊ฐ€ ์ž„์‹œ ๋ฐฑ์—… ๋ณต๊ตฌ](./troubleshooting/260226_NAS_192_168_219_51_์ ‘์†๋ถˆ๊ฐ€_์ž„์‹œ๋ฐฑ์—…๋ณต๊ตฌ.md) - [260217 starsandi DNS/nginx/SSL ๋ถ„๋ฆฌ ์ ์šฉ](./troubleshooting/260217_starsandi_dns_nginx_ssl_๋ถ„๋ฆฌ์ ์šฉ.md) - [250727 51124 ์„œ๋ฒ„ ์ด์ „ ์ž‘์—… ๋ฐ nginx ํ”„๋ก์‹œ ์„ค์ •](./troubleshooting/250727_happybell80_51124์„œ๋ฒ„์ด์ „์ž‘์—….md) +- [250731 ๋กœ๊ทธ ์ €์žฅ์†Œ SSHFS ์„ค์ •๊ณผ ํ…œํ”Œ๋ฆฟ ํ•ด๊ฒฐ์ฑ…](./troubleshooting/250731_๋กœ๊ทธ์ €์žฅ์†Œ_SSHFS์„ค์ •๊ณผ_ํ…œํ”Œ๋ฆฟํ•ด๊ฒฐ์ฑ….md) +- [250930 OpenSearch HDD ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜](./troubleshooting/250930_opensearch_hdd_migration.md) +- [251014 skill-rag-file SSHFS allow_other ํ•ด๊ฒฐ](./troubleshooting/251014_skill-rag-file_sshfs_allow_other_ํ•ด๊ฒฐ.md) +- [260115 PostgreSQL Neo4j TCP healthcheck](./troubleshooting/260115_postgresql_neo4j_tcp_healthcheck.md) - [51123 ๊ตฌ IP ํ•˜๋“œ์ฝ”๋”ฉ๊ณผ ๋Ÿฐํƒ€์ž„ SSOT ๋ถˆ์ผ์น˜ ์ด์Šˆ](./troubleshooting/260309_51123_๊ตฌIPํ•˜๋“œ์ฝ”๋”ฉ_๋Ÿฐํƒ€์ž„SSOT๋ถˆ์ผ์น˜_์ด์Šˆ.md) +- [260308 env backup git tracking exposure ๋ฐ ์ฐจ๋‹จ์กฐ์น˜](./troubleshooting/260308_env_backup_git_tracking_exposure_๋ฐ_์ฐจ๋‹จ์กฐ์น˜.md) - [24์„œ๋ฒ„ ์šฐ๋ถ„ํˆฌ ํ„ฐ๋ฏธ๋„ ๋ถˆ๊ฐ€, ๋„คํŠธ์›Œํฌ ๋Œ€์—ญ ์˜ค๋ฅ˜, python3-apt ๋ณต๊ตฌ ๊ธฐ๋ก](./troubleshooting/260309_24์„œ๋ฒ„_์šฐ๋ถ„ํˆฌํ„ฐ๋ฏธ๋„๋ถˆ๊ฐ€_๋„คํŠธ์›Œํฌ๋Œ€์—ญ์˜ค๋ฅ˜_python3apt๋ณต๊ตฌ.md) - [23 gateway MONITOR_URL ๊ตฌ์ฃผ์†Œ ์ž”์กด์œผ๋กœ 24 monitor ํ”„๋ก์‹œ ์‹คํŒจ ๋ณต๊ตฌ](./troubleshooting/260310_23gateway_monitor_url_๊ตฌ์ฃผ์†Œ์ž”์กด_24monitorํ”„๋ก์‹œ์‹คํŒจ_๋ณต๊ตฌ.md) - [Gitea git credential helper ํ‘œ์ค€ํ™”](./troubleshooting/260309_gitea_git_credential_helper_ํ‘œ์ค€ํ™”.md) diff --git a/journey/troubleshooting/250731_๋กœ๊ทธ์ €์žฅ์†Œ_SSHFS์„ค์ •๊ณผ_ํ…œํ”Œ๋ฆฟํ•ด๊ฒฐ์ฑ….md b/journey/troubleshooting/250731_๋กœ๊ทธ์ €์žฅ์†Œ_SSHFS์„ค์ •๊ณผ_ํ…œํ”Œ๋ฆฟํ•ด๊ฒฐ์ฑ….md new file mode 100644 index 0000000..69241bf --- /dev/null +++ b/journey/troubleshooting/250731_๋กœ๊ทธ์ €์žฅ์†Œ_SSHFS์„ค์ •๊ณผ_ํ…œํ”Œ๋ฆฟํ•ด๊ฒฐ์ฑ….md @@ -0,0 +1,117 @@ +# 250731 ๋กœ๊ทธ ์ €์žฅ์†Œ SSHFS ์„ค์ •๊ณผ ํ…œํ”Œ๋ฆฟ ํ•ด๊ฒฐ์ฑ… + +## ๋ฌธ์ œ ์ƒํ™ฉ + +### ์ดˆ๊ธฐ ๋ฌธ์ œ +- rb10508 ๋“ฑ ๋กœ๋น™ ์ปจํ…Œ์ด๋„ˆ๋“ค์˜ ๋กœ๊ทธ๊ฐ€ SSD์— ์ €์žฅ๋˜๊ณ  ์žˆ์Œ +- CLAUDE.md์— ๋ช…์‹œ๋œ ๋Œ€๋กœ ๋กœ๊ทธ๋Š” HDD(/mnt/hdd/logs/)์— ์ €์žฅ๋˜์–ด์•ผ ํ•จ +- 51123 ์„œ๋ฒ„์— HDD๊ฐ€ ์žˆ๊ณ , 51124 ์„œ๋ฒ„์—์„œ ์ ‘๊ทผ ํ•„์š” + +### SSHFS๊ฐ€ ์ ํ•ฉํ•œ ์ด์œ  +1. ์ด๋ฏธ SSH ํ‚ค ์„ค์ • ์™„๋ฃŒ - ์ถ”๊ฐ€ ์ธ์ฆ ์„ค์ • ๋ถˆํ•„์š” +2. ๋‹ค์–‘ํ•œ ๋กœ๊ทธ ํ˜•ํƒœ ์ง€์› - stdout/stderr๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํŒŒ์ผ ๋กœ๊ทธ๋„ ์ €์žฅ +3. ์„ค์ • ์ตœ์†Œํ™” - 51123 ์„œ๋ฒ„๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋งŒ ๋งŒ๋“ค๋ฉด ๋จ +4. ํˆฌ๋ช…ํ•œ ์ž‘๋™ - ์ปจํ…Œ์ด๋„ˆ๋Š” ๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉ + +## ์‹ค์ œ ์„ค์ • ๊ณผ์ • + +### ์˜คํ›„ 10์‹œ 48๋ถ„ - 51123 ์„œ๋ฒ„ ์ž‘์—… +```bash +# 1. 51124์„œ๋ฒ„ ์ „์šฉ ๋กœ๊ทธ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ +sudo mkdir -p /mnt/hdd/logs/51124-server +sudo chown admin:admin /mnt/hdd/logs/51124-server + +# 2. 51124์„œ๋ฒ„์˜ SSH ๊ณต๊ฐœํ‚ค ์ถ”๊ฐ€ +# 51124 ์„œ๋ฒ„์˜ ~/.ssh/id_rsa_deploy.pub ๋‚ด์šฉ์„ ~/.ssh/authorized_keys์— ์ถ”๊ฐ€ + +# 3. cleanup ์Šคํฌ๋ฆฝํŠธ์— 51124 ์„œ๋ฒ„ ๋กœ๊ทธ ์ •๋ฆฌ ์ถ”๊ฐ€ +# 51124 ์„œ๋ฒ„ ๋กœ๊ทธ๋„ 30์ผ ํ›„ ์ž๋™ ์ •๋ฆฌ๋˜๋„๋ก ์„ค์ • +``` + +### ์˜คํ›„ 10์‹œ 50๋ถ„ - 51124 ์„œ๋ฒ„ ์ž‘์—… +```bash +# 1. SSHFS ์„ค์น˜ +sudo apt install -y sshfs + +# 2. ๋งˆ์šดํŠธ ํฌ์ธํŠธ ์ƒ์„ฑ +sudo mkdir -p /mnt/51123logs + +# 3. ๋งˆ์šดํŠธ ์‹œ๋„ (์ดˆ๊ธฐ ์‹คํŒจ - SSH ํ‚ค ๋ฌธ์ œ) +sudo sshfs -o allow_other,reconnect admin@192.168.219.45:/mnt/hdd/logs/51124-server /mnt/51123logs -p 51123 +``` + +### ์˜คํ›„ 10์‹œ 51๋ถ„ - SSHFS ๋งˆ์šดํŠธ ์„ฑ๊ณต +```bash +# 1. SSH ํ‚ค ํŒŒ์ผ ์ง€์ •ํ•˜์—ฌ ๋งˆ์šดํŠธ +sshfs -o IdentityFile=/home/admin/.ssh/id_rsa_deploy admin@192.168.219.45:/mnt/hdd/logs/51124-server /mnt/51123logs -p 51123 + +# 2. ๋งˆ์šดํŠธ ํ™•์ธ +df -h /mnt/51123logs +# ๊ฒฐ๊ณผ: 916G ํฌ๊ธฐ์˜ HDD๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ๋งˆ์šดํŠธ๋จ + +# 3. ํ…Œ์ŠคํŠธ +mkdir -p /mnt/51123logs/rb10508 +echo "SSHFS mount test - $(date)" > /mnt/51123logs/rb10508/test.log +``` + +## ๊ถŒํ•œ ๋ฌธ์ œ์˜ ๋”œ๋ ˆ๋งˆ + +### ๋ฐœ๊ฒฌ๋œ ๋ฌธ์ œ์  +1. **SSHFS ๋งˆ์šดํŠธ**: admin(UID 1000)์œผ๋กœ ๋งˆ์šดํŠธ๋จ +2. **Docker ์ปจํ…Œ์ด๋„ˆ**: UID 999๋กœ ์‹คํ–‰ +3. **๊ถŒํ•œ ๋ถˆ์ผ์น˜**: Docker๊ฐ€ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ ์‹œ ์‹คํŒจ + +### ๊ฒ€ํ† ํ•œ ํ•ด๊ฒฐ๋ฐฉ์•ˆ๋“ค + +#### 1. ์‹ฌ๋ณผ๋ฆญ ๋งํฌ +```bash +ln -s /mnt/51123logs/rb10508 logs +``` +- ๊ฐ„๋‹จํ•˜์ง€๋งŒ ๋กœ๋น™๋งˆ๋‹ค ์ˆ˜๋™ ์ž‘์—… ํ•„์š” + +#### 2. docker-compose.yml ์ง์ ‘ ์ˆ˜์ • +```yaml +volumes: + - /mnt/51123logs/rb10508:/code/logs:rw +``` +- ๋ช…ํ™•ํ•˜์ง€๋งŒ ์—ญ์‹œ ๋กœ๋น™๋งˆ๋‹ค ์ˆ˜์ • ํ•„์š” + +#### 3. SSHFS UID ๋งคํ•‘ +```bash +sudo sshfs -o allow_other,uid=999,gid=999 ... +``` +- root ๊ถŒํ•œ ํ•„์š”, ๋ณต์žกํ•จ + +#### 4. ์‚ฌ์ „ ๊ถŒํ•œ ์„ค์ • +```bash +sudo chown -R 999:999 /mnt/hdd/logs/51124-server/ +``` +- ์—ฌ์ „ํžˆ ๋””๋ ‰ํ† ๋ฆฌ๋Š” ์ˆ˜๋™ ์ƒ์„ฑ ํ•„์š” + +## ์ œ์•ˆ๋œ ํ•ด๊ฒฐ์ฑ… (๋ฏธ๊ตฌํ˜„) + +**์ฐธ๊ณ **: ์ด ํ…œํ”Œ๋ฆฟ ๋ฐฉ์‹์€ ์ œ์•ˆ๋งŒ ๋˜์—ˆ๊ณ , ์‹ค์ œ๋กœ๋Š” 250801 ํฌ๋ก ์žก ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐ๋จ. +- ํฌ๋ก ์žก์œผ๋กœ ๋งค์ผ ์ƒˆ๋ฒฝ 3์‹œ rsync ๋™๊ธฐํ™” +- ์ž์„ธํ•œ ๋‚ด์šฉ์€ [250801_claude_ํฌ๋ก ์žก๋กœ๊ทธ๋™๊ธฐํ™”์„ค์ •.md](./250801_claude_ํฌ๋ก ์žก๋กœ๊ทธ๋™๊ธฐํ™”์„ค์ •.md) ์ฐธ์กฐ + +## ๊ตํ›ˆ +1. **์„œ๋ฒ„ ๊ฐ„ ํ†ต์‹ ์€ ํ•ญ์ƒ SSH ํ‚ค ๋จผ์ €**: 51123-51124 ๊ฐ„ SSH ํ‚ค๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š์•˜์Œ +2. **๋งˆ์šดํŠธ ํฌ์ธํŠธ ์ด๋ฆ„ ๊ทœ์น™**: /mnt/51123logs์ฒ˜๋Ÿผ ์—ฐ๊ฒฐํ•˜๋Š” ์„œ๋ฒ„ ๋ฒˆํ˜ธ๋ฅผ ๋ช…์‹œํ•˜๋ฉด ๊ด€๋ฆฌ๊ฐ€ ํŽธํ•จ +3. **SSHFS vs NFS**: ๊ฐ„๋‹จํ•œ ๋กœ๊ทธ ์ €์žฅ์šฉ๋„๋Š” SSHFS๊ฐ€ ์„ค์ •์ด ํ›จ์”ฌ ๊ฐ„ํŽธํ•จ +4. **SSH ํ‚ค ํŒŒ์ผ ๋ช…์‹œ**: -o IdentityFile ์˜ต์…˜์œผ๋กœ ํŠน์ • ํ‚ค ํŒŒ์ผ ์ง€์ • ํ•„์š” +5. **์ฒ˜์Œ๋ถ€ํ„ฐ ํ…œํ”Œ๋ฆฟ ์„ค๊ณ„**: ํ•˜๋“œ์ฝ”๋”ฉ์€ ๋‚˜์ค‘์— ๊ณ ํ†ต +6. **๊ถŒํ•œ ๋ฌธ์ œ๋Š” ๋ฏธ๋ฆฌ ํ•ด๊ฒฐ**: Docker UID/GID ์ฐจ์ด ์ฃผ์˜ +7. **์ž๋™ํ™”๋Š” ํ•„์ˆ˜**: ์ˆ˜๋™ ์ž‘์—…์€ ์‹ค์ˆ˜์˜ ์›์ธ + +## ์‹ค์ œ ๊ตฌํ˜„ ์ƒํƒœ +- **250801 ํฌ๋ก ์žก ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ ์™„๋ฃŒ** +- ๋งค์ผ ์ƒˆ๋ฒฝ 3์‹œ ์ž๋™ ๋™๊ธฐํ™” ์ค‘ +- 7์ผ ์ด์ƒ ๋กœ์ปฌ ๋กœ๊ทธ ์ž๋™ ์‚ญ์ œ + +--- + +์ž‘์„ฑ์ผ: 2025-07-31 +์ž‘์„ฑ์ž: Claude (51123 ์„œ๋ฒ„ - SSH ํ‚ค ๋“ฑ๋ก ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ) + Claude (51124 ์„œ๋ฒ„ - SSHFS ์„ค์ • ๋ฐ ๋งˆ์šดํŠธ) + ๋กœ์ปฌ ๊ฐœ๋ฐœ์ž (ํ…œํ”Œ๋ฆฟ ํ•ด๊ฒฐ์ฑ… ์ œ์•ˆ) +์ฃผ์ œ: ๋กœ๊ทธ ์ €์žฅ์†Œ ์ค‘์•™ํ™”๋ฅผ ์œ„ํ•œ SSHFS ์„ค์ •๊ณผ ํ…œํ”Œ๋ฆฟ ๊ธฐ๋ฐ˜ ์ž๋™ํ™” \ No newline at end of file diff --git a/journey/troubleshooting/250930_opensearch_hdd_migration.md b/journey/troubleshooting/250930_opensearch_hdd_migration.md new file mode 100644 index 0000000..4859910 --- /dev/null +++ b/journey/troubleshooting/250930_opensearch_hdd_migration.md @@ -0,0 +1,62 @@ +# OpenSearch HDD ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ + +## ๋ฌธ์ œ +- OpenSearch ๋ฐ์ดํ„ฐ๊ฐ€ SSD(/var/lib/opensearch)์— ์ €์žฅ +- SSD ์šฉ๋Ÿ‰ ๋ถ€์กฑ ์šฐ๋ ค + +## ํ•ด๊ฒฐ + +### 1. ๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ +```bash +sudo mkdir -p /mnt/hdd/opensearch +sudo cp -rp /var/lib/opensearch/* /mnt/hdd/opensearch/ +sudo chown -R 1000:1000 /mnt/hdd/opensearch +``` + +### 2. ์„ค์ • ํŒŒ์ผ ๋ณ€๊ฒฝ + +**ํŒŒ์ผ**: `/home/admin/opensearch/docker-compose.yaml` +- 34๋ฒˆ ๋ผ์ธ: `/var/lib/opensearch` โ†’ `/mnt/hdd/opensearch` + +**ํŒŒ์ผ**: `/home/admin/opensearch/.gitea/workflows/cicd.yml` +- 17-19๋ฒˆ ๋ผ์ธ: `/var/lib/opensearch` โ†’ `/mnt/hdd/opensearch` +- 30-31๋ฒˆ ๋ผ์ธ: ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ ์ค‘๋ณต ๋ฐฉ์ง€ ์ฝ”๋“œ ์ถ”๊ฐ€ + +**ํŒŒ์ผ**: `/home/admin/opensearch/Dockerfile` +- ๋ณด์•ˆ ์ธ์ฆ์„œ COPY ๋ผ์ธ ์ œ๊ฑฐ +- `ENV plugins.security.disabled=true` ์ถ”๊ฐ€ + +### 3. ๋ณด์•ˆ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋น„ํ™œ์„ฑํ™” +- docker-compose.yaml 15๋ฒˆ ๋ผ์ธ: `DISABLE_SECURITY_PLUGIN=true` +- ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ ์ „์šฉ ์„œ๋น„์Šค๋กœ TLS ๋ถˆํ•„์š” + +### 4. ํ•ด๊ฒฐ ๊ณผ์ • ์ค‘ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ +- Actions ์‹คํŒจ: TLS ์ธ์ฆ์„œ ํŒŒ์ผ ์—†์Œ โ†’ ๋ณด์•ˆ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋น„ํ™œ์„ฑํ™”๋กœ ํ•ด๊ฒฐ +- ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„ ์ถฉ๋Œ โ†’ Actions์— ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ ์ œ๊ฑฐ ์ฝ”๋“œ ์ถ”๊ฐ€ +- ์„ค์ • ์ค‘๋ณต ์—๋Ÿฌ โ†’ Dockerfile ENV ์ œ๊ฑฐ, docker-compose.yaml์—์„œ๋งŒ ์„ค์ • + +### 5. ์ตœ์ข… ์ƒํƒœ +- ๋ฐ์ดํ„ฐ ๊ฒฝ๋กœ: `/mnt/hdd/opensearch` (354MB) +- ์ปจํ…Œ์ด๋„ˆ: opensearch (opensearch-opensearch-node ์ด๋ฏธ์ง€) +- ํฌํŠธ: 9200, 9600 +- HDD ์—ฌ์œ  ๊ณต๊ฐ„: 869GB +- API ์‘๋‹ต: ์ •์ƒ +- ๋กœ๊ทธ ์ˆ˜์ง‘: fluent-bit โ†’ data-prepper โ†’ OpenSearch ์ •์ƒ + +### 6. ์ถ”๊ฐ€ ์ด์Šˆ (2025-09-30) +- **๋ฌธ์ œ**: 9/29๋ถ€ํ„ฐ ๋กœ๊ทธ ์ˆ˜์ง‘ ์ค‘๋‹จ +- **์ฆ์ƒ**: fluent-bit โ†’ data-prepper 200 OK, ํ•˜์ง€๋งŒ OpenSearch ์ €์žฅ ์‹คํŒจ +- **์—๋Ÿฌ**: `Cannot deserialize value of type java.util.ArrayList from Object value` +- **์›์ธ**: Data Prepper๊ฐ€ JSON ๋ฐฐ์—ด `[{...}]` ์š”๊ตฌ, fluent-bit์ด ๋‹จ์ผ ๊ฐ์ฒด `{...}` ์ „์†ก +- **์‹œ๋„ํ•œ ํ•ด๊ฒฐ์ฑ…**: + - json_array on ์ถ”๊ฐ€ (Fluentd ์ „์šฉ ํŒŒ๋ผ๋ฏธํ„ฐ, Fluent Bit์—๋Š” ์—†์Œ) + - Flush 5์ดˆ, Grace 30 ์„ค์ • (๋ฐฐ์น˜ ์ฒ˜๋ฆฌ ์‹œ๋„) + - Format json_lines (Data Prepper ๋น„ํ˜ธํ™˜) +- **์ƒํƒœ**: ๋ฏธํ•ด๊ฒฐ, ์ถ”๊ฐ€ ์กฐ์‚ฌ ํ•„์š” + +### 7. ์ปค๋ฐ‹ ์ด๋ ฅ +- 7466068: HDD ๊ฒฝ๋กœ ๋ณ€๊ฒฝ +- 5f7bf49: Actions ์›Œํฌํ”Œ๋กœ์šฐ ๊ฒฝ๋กœ ์ˆ˜์ • +- 2df7afb: ๋ณด์•ˆ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋น„ํ™œ์„ฑํ™” +- 8f667d3: DISABLE_SECURITY_PLUGIN ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ˆ˜์ • +- 66b5ee8: Dockerfile ์ค‘๋ณต ์„ค์ • ์ œ๊ฑฐ \ No newline at end of file diff --git a/journey/troubleshooting/251014_skill-rag-file_sshfs_allow_other_ํ•ด๊ฒฐ.md b/journey/troubleshooting/251014_skill-rag-file_sshfs_allow_other_ํ•ด๊ฒฐ.md new file mode 100644 index 0000000..2a75b58 --- /dev/null +++ b/journey/troubleshooting/251014_skill-rag-file_sshfs_allow_other_ํ•ด๊ฒฐ.md @@ -0,0 +1,195 @@ +# skill-rag-file SSHFS allow_other ๊ถŒํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ + +**๋‚ ์งœ**: 2025-10-14 +**์ž‘์„ฑ์ž**: Claude +**๊ด€๋ จ ํŒŒ์ผ**: `skill-rag-file/docker-compose.yml` + +--- + +## ๋ฌธ์ œ ์ƒํ™ฉ + +### ์ฆ์ƒ +- skill-rag-file ์ปจํ…Œ์ด๋„ˆ๊ฐ€ `/mnt/51123data/documents/`์— ํŒŒ์ผ ์ €์žฅ +- ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ๋งŒ ํŒŒ์ผ ๋ณด์ž„ +- ํ˜ธ์ŠคํŠธ์™€ 51123 ์„œ๋ฒ„ HDD์—๋Š” ์ €์žฅ ์•ˆ๋จ +- ์ปจํ…Œ์ด๋„ˆ ์žฌ์‹œ์ž‘ ์‹œ ํŒŒ์ผ ์†์‹ค + +### ๊ทผ๋ณธ ์›์ธ +1. **SSHFS ๋งˆ์šดํŠธ**: `user_id=1001,group_id=1000` (admin:xusers) +2. **์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰**: root (UID 0) +3. **๊ถŒํ•œ ๋ถˆ์ผ์น˜**: FUSE๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋งˆ์šดํŠธํ•œ ์‚ฌ์šฉ์ž๋งŒ ์ ‘๊ทผ ํ—ˆ์šฉ +4. **allow_other ๋ฏธ์‚ฌ์šฉ**: ๋‹ค๋ฅธ UID ์ ‘๊ทผ ์ฐจ๋‹จ + +### ๊ฒ€์ฆ +```bash +# ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ +docker exec skill-rag-file ls /mnt/51123data/documents/79441171.../2025-10/ +# โ†’ ํŒŒ์ผ ๋ณด์ž„ + +# ํ˜ธ์ŠคํŠธ +ls /mnt/51123data/documents/79441171.../2025-10/ +# โ†’ No such file or directory +``` + +--- + +## ํ•ด๊ฒฐ ๊ณผ์ • + +### 1๋‹จ๊ณ„: /etc/fuse.conf ์ˆ˜์ • + +```bash +sudo sed -i 's/^#user_allow_other/user_allow_other/' /etc/fuse.conf +``` + +**๊ฒฐ๊ณผ**: +``` +user_allow_other +``` + +**์˜๋ฏธ**: ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๊ฐ€ `allow_other` ์˜ต์…˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ + +### 2๋‹จ๊ณ„: SSHFS ์žฌ๋งˆ์šดํŠธ + +```bash +# ๊ธฐ์กด ๋งˆ์šดํŠธ ํ•ด์ œ +sudo fusermount -u /mnt/51123data + +# allow_other ์˜ต์…˜ ์ถ”๊ฐ€ํ•˜์—ฌ ์žฌ๋งˆ์šดํŠธ +sshfs -o allow_other,default_permissions,IdentityFile=/home/admin/.ssh/id_rsa_deploy,reconnect,uid=1001,gid=1000 admin@192.168.219.45:/mnt/hdd/data /mnt/51123data -p 51123 +``` + +**๋งˆ์šดํŠธ ์˜ต์…˜ ํ™•์ธ**: +```bash +mount | grep 51123data +# admin@192.168.219.45:/mnt/hdd/data on /mnt/51123data type fuse.sshfs (rw,nosuid,nodev,relatime,user_id=1001,group_id=1000,default_permissions,allow_other) +``` + +### 3๋‹จ๊ณ„: docker-compose.yml ๋ณผ๋ฅจ ์ถ”๊ฐ€ + +**ํŒŒ์ผ**: skill-rag-file/docker-compose.yml + +```yaml +volumes: + - ./chroma_db:/app/chroma_db + - ./logs:/app/logs + - ./.env:/app/.env:ro + - /mnt/51123data:/mnt/51123data:rw # ์ถ”๊ฐ€ +``` + +### 4๋‹จ๊ณ„: ์ปจํ…Œ์ด๋„ˆ ์žฌ์‹œ์ž‘ + +```bash +cd /home/admin/ivada_project/skill-rag-file +docker compose down +docker compose up -d +``` + +**๊ฒฐ๊ณผ**: ์ปจํ…Œ์ด๋„ˆ ์ •์ƒ ์‹œ์ž‘ (DOCS/250915 ๋ฌธ์„œ์˜ "mkdir /mnt/51123data: file exists" ์—๋Ÿฌ ๋ฐœ์ƒ ์•ˆํ•จ) + +--- + +## ๊ฒ€์ฆ ๊ฒฐ๊ณผ + +### ํ…Œ์ŠคํŠธ 1: ํŒŒ์ผ ์“ฐ๊ธฐ +```bash +docker exec skill-rag-file touch /mnt/51123data/documents/test_write_from_container.txt +ls -la /mnt/51123data/documents/ | grep test_write +# -rw-r--r-- 1 admin xusers 0 10์›” 14 01:01 test_write_from_container.txt +``` + +**๊ฒฐ๊ณผ**: โœ… ์ปจํ…Œ์ด๋„ˆ โ†’ ํ˜ธ์ŠคํŠธ ์ฆ‰์‹œ ๋™๊ธฐํ™” + +### ํ…Œ์ŠคํŠธ 2: ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ +```bash +docker exec skill-rag-file mkdir -p /mnt/51123data/documents/test_team/2025-10 +docker exec skill-rag-file touch /mnt/51123data/documents/test_team/2025-10/test.pdf +ls -la /mnt/51123data/documents/test_team/2025-10/ +# total 8 +# drwxr-xr-x 1 admin xusers 4096 10์›” 14 01:01 . +# -rw-r--r-- 1 admin xusers 0 10์›” 14 01:01 test.pdf +``` + +**๊ฒฐ๊ณผ**: โœ… ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ ๋ฐ ๊ถŒํ•œ ๋งคํ•‘ ์ •์ƒ + +### ํ…Œ์ŠคํŠธ 3: ์˜์†์„ฑ +```bash +docker compose down && docker compose up -d +docker exec skill-rag-file ls /mnt/51123data/documents/ | grep test +# test.txt +# test_team +# test_write_from_container.txt +``` + +**๊ฒฐ๊ณผ**: โœ… ์žฌ์‹œ์ž‘ ํ›„์—๋„ ํŒŒ์ผ ์œ ์ง€ + +--- + +## ํ•ต์‹ฌ ์„ค์ • ์š”์•ฝ + +### /etc/fuse.conf +``` +user_allow_other +``` + +### SSHFS ๋งˆ์šดํŠธ ๋ช…๋ น +```bash +sshfs -o allow_other,default_permissions,IdentityFile=/home/admin/.ssh/id_rsa_deploy,reconnect,uid=1001,gid=1000 admin@192.168.219.45:/mnt/hdd/data /mnt/51123data -p 51123 +``` + +### docker-compose.yml +```yaml +volumes: + - /mnt/51123data:/mnt/51123data:rw +``` + +--- + +## ๊ตํ›ˆ + +### FUSE ๊ธฐ๋ณธ ๋ณด์•ˆ ์ •์ฑ… +- FUSE๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋งˆ์šดํŠธํ•œ ์‚ฌ์šฉ์ž๋งŒ ์ ‘๊ทผ ํ—ˆ์šฉ +- ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ๋‹ค๋ฅธ UID ์‚ฌ์šฉ ์‹œ ์ ‘๊ทผ ๋ถˆ๊ฐ€ +- `allow_other` ์˜ต์…˜์œผ๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ + +### allow_other ์‚ฌ์šฉ ์กฐ๊ฑด +- `/etc/fuse.conf`์— `user_allow_other` ํ•„์ˆ˜ +- `default_permissions` ์˜ต์…˜ ๊ถŒ์žฅ (์ผ๋ฐ˜ ํŒŒ์ผ์‹œ์Šคํ…œ ๊ถŒํ•œ ์ฒดํฌ) +- ๋ณด์•ˆ ์œ„ํ—˜: ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์‹ ์ค‘ํžˆ ์‚ฌ์šฉ + +### Docker ๋ณผ๋ฅจ ๋งˆ์šดํŠธ +- SSHFS ๋งˆ์šดํŠธ ํฌ์ธํŠธ๋ฅผ Docker ๋ณผ๋ฅจ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ +- `allow_other` ์—†์œผ๋ฉด ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—๋งŒ ํŒŒ์ผ ์กด์žฌ (ํœ˜๋ฐœ์„ฑ) +- ๋ณผ๋ฅจ ๋งˆ์šดํŠธ ์‹œ `/mnt/51123data:/mnt/51123data:rw` ํ˜•ํƒœ๋กœ ์ „์ฒด ๋งˆ์šดํŠธ ํฌ์ธํŠธ ๋ฐ”์ธ๋“œ + +### ๊ณผ๊ฑฐ ๋ฌธ์„œ ์˜ค๋ฅ˜ +- DOCS/250915: "๋ณผ๋ฅจ ์ œ๊ฑฐ"๊ฐ€ ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹˜ โ†’ ์ž„์‹œ ์šฐํšŒ์ฑ… +- DOCS/250731: "Docker SSHFS ์ถฉ๋Œ"๋กœ ๋กค๋ฐฑ โ†’ allow_other๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ +- ๊ตํ›ˆ: FUSE ๊ถŒํ•œ ๋ชจ๋ธ ์ดํ•ด ๋ถ€์กฑ์œผ๋กœ ์ž˜๋ชป๋œ ๊ฒฐ๋ก  ๋„์ถœ + +--- + +## ์ถ”๊ฐ€ ๋ฐœ๊ฒฌ (2025-10-14 23:30) + +### ๋ฌธ์ œ: SSHFS ๊ธด ํŒŒ์ผ๋ช… ์ฒ˜๋ฆฌ ์‹คํŒจ + +**์ฆ์ƒ**: +- coldmail workflow ์‹คํ–‰ ์‹œ PDF ์—…๋กœ๋“œ 500 ์—๋Ÿฌ +- ๋กœ๊ทธ: `OSError: [Errno 74] Bad message` +- ํŒŒ์ผ๋ช… ์˜ˆ์‹œ: `1d8072302cf85eee...pdf` (150์ž ์ด์ƒ) + +**์›์ธ**: +- upload.py:82: `f"{file_hash}_{file.filename}"` โ†’ 150์ž ์ดˆ๊ณผ +- SSHFS ํŒŒ์ผ์‹œ์Šคํ…œ์˜ ํŒŒ์ผ๋ช… ๊ธธ์ด ์ œํ•œ + +**๊ตฌํ˜„ ์™„๋ฃŒ** (์ปค๋ฐ‹ dfe6978): +- โœ… skill-rag-file/app/api/upload.py:73-87,106-107 ์ˆ˜์ • ์™„๋ฃŒ +- โœ… import uuid ์ถ”๊ฐ€ (upload.py:5) +- โœ… coldmail workflow PDF ์ฒจ๋ถ€ํŒŒ์ผ ์žฌํ…Œ์ŠคํŠธ ๋Œ€๊ธฐ + +--- + +## ๊ด€๋ จ ๋ฌธ์„œ + +- 250915_skill-rag-file_Docker_๋นŒ๋“œ_๋ฐ_๋ณผ๋ฅจ_๋งˆ์šดํŠธ_๋ฌธ์ œ.md +- 250915_skill-rag-file_์ดˆ๊ธฐ_๊ตฌ์ถ•.md +- 250731_claude_SSHFS๊ถŒํ•œ๋ฌธ์ œํ•ด๊ฒฐ.md diff --git a/journey/troubleshooting/260115_postgresql_neo4j_tcp_healthcheck.md b/journey/troubleshooting/260115_postgresql_neo4j_tcp_healthcheck.md new file mode 100644 index 0000000..6101da8 --- /dev/null +++ b/journey/troubleshooting/260115_postgresql_neo4j_tcp_healthcheck.md @@ -0,0 +1,45 @@ +# PostgreSQL/Neo4j TCP ์†Œ์ผ“ ํ—ฌ์Šค์ฒดํฌ ๊ตฌํ˜„ + +**๋‚ ์งœ**: 2026-01-15 +**์ž‘์„ฑ์ž**: Auto +**๊ด€๋ จ ํŒŒ์ผ**: +- `admin-dashboard/backend/services/system_service.py:32-33, 346-384, 421-423` + +--- + +## ๋ฌธ์ œ ์ƒํ™ฉ + +PostgreSQL/Neo4j๊ฐ€ HTTP ์ฒดํฌ๋กœ ์‹คํŒจํ•˜์—ฌ Admin Dashboard์—์„œ ์˜ค๋ฅ˜ ํ‘œ์‹œ (์‹ค์ œ๋กœ๋Š” ์ •์ƒ ์ž‘๋™ ์ค‘) + +--- + +## ํ•ด๊ฒฐ ๋ฐฉ์•ˆ + +- `system_service.py:32-33`: PostgreSQL/Neo4j HTTP URL ์ œ๊ฑฐ, `check_method: "tcp"` ์ถ”๊ฐ€ +- `system_service.py:346-384`: `check_tcp_service()` ํ•จ์ˆ˜ ์ถ”๊ฐ€, ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ ์‹œ๋„ (`172.17.0.1` โ†’ `localhost` โ†’ `127.0.0.1`) +- `system_service.py:421-423`: `check_method == "tcp"`์ธ ๊ฒฝ์šฐ TCP ์ฒดํฌ๋กœ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ + +--- + +## ๊ตฌํ˜„ ์™„๋ฃŒ + +- Git ์ปค๋ฐ‹: `4c9f227` +- API ํ…Œ์ŠคํŠธ: PostgreSQL/Neo4j ๋ชจ๋‘ `check_method: "tcp"`, `status: "healthy"` ํ™•์ธ + +--- + +## ๊ตํ›ˆ + +### ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋น„์Šค๋Š” TCP ์†Œ์ผ“ ์ฒดํฌ ์‚ฌ์šฉ +- HTTP ํ”„๋กœํ† ์ฝœ์ด ์•„๋‹Œ ์„œ๋น„์Šค๋Š” TCP ์†Œ์ผ“ ์ฒดํฌ ํ•„์ˆ˜ +- Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ ํ˜ธ์ŠคํŠธ ์ ‘๊ทผ ์‹œ ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ ์‹œ๋„๋กœ ๋„คํŠธ์›Œํฌ ๊ฒฉ๋ฆฌ ๋ฌธ์ œ ์™„ํ™” + +### ๋ธŒ๋ผ์šฐ์ € ํ…Œ์ŠคํŠธ ์‹œ docs ํ™•์ธ ํ•„์ˆ˜ +- ๋กœ๊ทธ์ธ ๋น„๋ฐ€๋ฒˆํ˜ธ, API ์—”๋“œํฌ์ธํŠธ ๋“ฑ ์ ‘๊ทผ ์ •๋ณด๋Š” ์ฝ”๋“œ ๋˜๋Š” docs์—์„œ ํ™•์ธ (์ถ”์ธก ๊ธˆ์ง€) + +--- + +## ์ฐธ๊ณ  + +- `plans/251225_admin_dashboard_navigation_structure_refactoring.md` +- `troubleshooting/251228_admin_์„œ๋น„์Šค_ํ—ฌ์Šค์ฒดํฌ_๊ฐœ์„ .md` diff --git a/journey/troubleshooting/260308_env_backup_git_tracking_exposure_๋ฐ_์ฐจ๋‹จ์กฐ์น˜.md b/journey/troubleshooting/260308_env_backup_git_tracking_exposure_๋ฐ_์ฐจ๋‹จ์กฐ์น˜.md new file mode 100644 index 0000000..a479ff2 --- /dev/null +++ b/journey/troubleshooting/260308_env_backup_git_tracking_exposure_๋ฐ_์ฐจ๋‹จ์กฐ์น˜.md @@ -0,0 +1,81 @@ +tags: [env, secrets, git, security, troubleshooting] + +# 260308 env backup git tracking exposure ๋ฐ ์ฐจ๋‹จ์กฐ์น˜ + +์ƒ์œ„ ์›์น™: +- [global-principles](../../../../0_VALUE/00_Principles/global-principles.md) +- [writing-principles](../../../../0_VALUE/02_Governance/writing-principles.md) + +## 1. ๋ชฉ์  +- `rb8001` ์ €์žฅ์†Œ์— `.env` ๋ฐฑ์—…๋ณธ๊ณผ ๋ฐฐํฌ์šฉ env ํŒŒ์ผ์ด git ์›๊ฒฉ์— ํฌํ•จ๋œ ๊ฒฝ์œ„๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. +- ๋™์ผ ์œ ํ˜• ํŒŒ์ผ์ด ๋‹ค์‹œ ์›๊ฒฉ์— ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š๋„๋ก ์ฐจ๋‹จํ•œ ์กฐ์น˜์™€ ์ž”์—ฌ ๋ฒ”์œ„๋ฅผ ๋‚จ๊น๋‹ˆ๋‹ค. + +## 2. Facts + +### 2.1 `rb8001` ๋…ธ์ถœ ์‚ฌ์‹ค +- ๋Œ€์ƒ ํŒŒ์ผ: `.env.backup`, `.env.bak.20260304032910`, `.env.bak.20260306193102`, `.env.deploy` +- ์›๊ฒฉ ๋ฐ˜์˜ ์ปค๋ฐ‹: + - `b9731bfc68bd12d0bdefc74a1403a878433c6824` (`2026-01-02 12:53:52 +0900`): `.env.backup` ์ถ”๊ฐ€ + - `5f24b2bdb515b0a372cebaf62052f7086d41e739` (`2026-03-07 17:01:56 +0900`): `.env.bak.20260304032910`, `.env.bak.20260306193102`, `.env.deploy` ํฌํ•จ +- `5f24b2b`๋Š” ๋กœ์ปฌ reflog ๊ธฐ์ค€ ๊ฐ™์€ ์‹œ๊ฐ์— `refs/remotes/origin/main: update by push`๊ฐ€ ํ™•์ธ๋์Šต๋‹ˆ๋‹ค. + +### 2.2 `rb8001` ์›์ธ์„ฑ ์„ค์ • ์‚ฌ์‹ค +- `/home/admin/robeing/rb8001/.gitignore`์—๋Š” ๊ธฐ์กด์— `.env`๋งŒ ์žˆ์—ˆ๊ณ  `.env.*`, `*.env.*` ์ฐจ๋‹จ ๊ทœ์น™์€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. +- ์ €์žฅ์†Œ ๋‚ด๋ถ€ ๊ฒ€์ƒ‰ ๊ธฐ์ค€, `.env.bak.*` ๋˜๋Š” `.env.backup` ์ƒ์„ฑ์„ ์ง€์‹œํ•˜๋Š” ์ž๋™ ์Šคํฌ๋ฆฝํŠธ/์ฝ”๋“œ๋Š” ํ™•์ธ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. +- `/home/admin/AGENTS.md`์—๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๊ธฐ์ค€์„ `/home/admin/infra-config/runtime.env`, `/home/admin/infra-config/secrets.env`๋กœ ๋‘๊ณ , ์„œ๋น„์Šค๋ณ„ `.env`๋Š” ์ž„์‹œ ๋กœ์ปฌ ์˜ค๋ฒ„๋ผ์ด๋“œ ์ „์šฉ์ด๋ผ๊ณ  ๋ช…์‹œ๋ผ ์žˆ์Šต๋‹ˆ๋‹ค. + +### 2.3 `rb8001` ์ฆ‰์‹œ ์กฐ์น˜ ์‚ฌ์‹ค +- `2026-03-08`์— `.gitignore`๋ฅผ ์•„๋ž˜ ํŒจํ„ด๊นŒ์ง€ ํ™•์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. + - `.env.*` + - `*.env` + - `*.env.*` + - ์˜ˆ์™ธ: `.env.deploy.example` +- ์ถ”์  ์ค‘์ด๋˜ `.env.backup`, `.env.bak.20260304032910`, `.env.bak.20260306193102`, `.env.deploy`๋ฅผ git ์ธ๋ฑ์Šค์—์„œ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. +- ์œ„ ๋ณ€๊ฒฝ์€ ์ปค๋ฐ‹ `5f0087d` (`chore: stop tracking env files`)๋กœ `origin/main`์— push๋์Šต๋‹ˆ๋‹ค. +- ๋กœ์ปฌ ํŒŒ์ผ๋„ `.env.backup`, `.env.bak.20260304032910`, `.env.bak.20260306193102`๋ฅผ ์‚ญ์ œํ–ˆ์Šต๋‹ˆ๋‹ค. + +### 2.4 ์›Œํฌ์ŠคํŽ˜์ด์Šค ์ „์ˆ˜ ํ™•์ธ ์‚ฌ์‹ค +- ๋ฐฑ์—…๋ณธ ์‹คํŒŒ์ผ ํ™•์ธ: + - `/home/admin/robeing/skill-news/.env.backup` +- git ์ถ”์  ์ค‘์ธ `.env*` ํ™•์ธ: + - `/home/admin/fluent-bit`: `.env` + - `/home/admin/ivada_project/robeing-monitor`: `.env.deploy`, `.env.deploy.example` + - `/home/admin/robeing/robeing-monitor`: `.env.deploy`, `.env.deploy.example` + - `/home/admin/robeing/skill-calendar`: `.env.deploy`, `.env.deploy.example` + - `/home/admin/robeing/skill-email`: `.env.deploy`, `.env.deploy.example` + - `/home/admin/robeing/skill-embedding-repo`: `.env.deploy`, `.env.deploy.example`, `.env.example` + - `/home/admin/robeing/skill-news`: `.env.backup`, `.env.deploy`, `.env.deploy.example`, `.env.example` + - `/home/admin/robeing/skill-rag-file`: `.env.deploy`, `.env.deploy.example`, `.env.example` + - `/home/admin/robeing/skill-slack`: `.env.deploy`, `.env.deploy.example` + - `/home/admin/vMIR/LocalTerra`: `.env` + - `/home/admin/vMIR/mirror-terra-web-dapp-ref`: `.env`, `.env.development` + - `/home/admin/vMIR/vmir-web-app`: `.env`, `.env.development` +- `/home/admin/auth-server`๋Š” `.git/config` ๊ถŒํ•œ ๋ฌธ์ œ๋กœ ์ด๋ฒˆ ์ ๊ฒ€์—์„œ ์ถ”์  ์—ฌ๋ถ€๋ฅผ ํ™•์ •ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. + +## 3. Interpretation +- `rb8001`์˜ ์ง์ ‘ ์›์ธ์€ `.env`๋งŒ ๋ฌด์‹œํ•˜๊ณ  `.env` ํŒŒ์ƒ ํŒŒ์ผ์„ ๋ฌด์‹œํ•˜์ง€ ์•Š์€ `.gitignore` ๊ณต๋ฐฑ์ž…๋‹ˆ๋‹ค. +- `.env.bak.20260304032910`, `.env.bak.20260306193102`๋Š” ํŒŒ์ผ๋ช…๊ณผ ๋‚ด์šฉ์ƒ `.env`์˜ ์‹œ์ ๋ณ„ ์ˆ˜๋™ ๋ฐฑ์—…๋ณธ์œผ๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค. +- ์ด ๋ฌธ์ œ๋Š” ๋‹จ์ผ ์ €์žฅ์†Œ ์‹ค์ˆ˜๋ผ๊ธฐ๋ณด๋‹ค, ์—ฌ๋Ÿฌ ์ €์žฅ์†Œ์—์„œ `.env`, `.env.deploy`, `.env.backup`๋ฅผ ๋ฒ„์ „ ๊ด€๋ฆฌ ๋Œ€์ƒ์œผ๋กœ ๋‹ค๋ค„ ์˜จ ์šด์˜ ์Šต๊ด€ ๋ฌธ์ œ๋กœ ๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. +- ์ „์—ญ ์›์น™ ๋ฌธ์„œ๊ฐ€ ์š”๊ตฌํ•˜๋Š” ๋ฐฉํ–ฅ์€ SSOT(Single Source of Truth, ๋‹จ์ผ ์ง„์‹ค ๊ณต๊ธ‰์›) ๊ธฐ๋ฐ˜์˜ `runtime.env`/`secrets.env` ๋ถ„๋ฆฌ์ด๋ฉฐ, ์„œ๋น„์Šค ๋ฃจํŠธ์˜ ์‹ค์ œ ๋น„๋ฐ€ env ํŒŒ์ผ์„ git์— ์œ ์ง€ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค. + +## 4. Unresolved +- ์ด๋ฏธ ์›๊ฒฉ ํžˆ์Šคํ† ๋ฆฌ์— ํฌํ•จ๋œ ๋ฏผ๊ฐ๊ฐ’์€ ์ปค๋ฐ‹ ์‚ญ์ œ๋งŒ์œผ๋กœ ๋ฌดํšจํ™”๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ์‹ค์ œ ํ‚ค ํ๊ธฐ์™€ ์žฌ๋ฐœ๊ธ‰ ์—ฌ๋ถ€๋ฅผ ๋ณ„๋„๋กœ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. +- `skill-news`๋ฅผ ํฌํ•จํ•œ ๋‹ค๋ฅธ ์ €์žฅ์†Œ๋“ค์˜ `.env*` ์ถ”์  ํ•ด์ œ ๋ฒ”์œ„๋Š” ์•„์ง ๋ฏธ์ ์šฉ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. +- `auth-server`๋Š” ๊ถŒํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด์†Œํ•œ ๋’ค `.env*` ์ถ”์  ์—ฌ๋ถ€๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. +- `.env.deploy`๋ฅผ ์˜ˆ์ œ ํŒŒ์ผ๋งŒ ๋‚จ๊ธฐ๊ณ  ๋ชจ๋‘ ์ œ๊ฑฐํ• ์ง€, SSOT ๊ฒฝ๋กœ ์ฐธ์กฐ ๋ฐฉ์‹์œผ๋กœ ์ „ํ™˜ํ• ์ง€ ์ €์žฅ์†Œ๋ณ„ ์šด์˜ ๊ธฐ์ค€ ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. + +## 5. ๋‹ค์Œ ์กฐ์น˜ ํ›„๋ณด +- ์šฐ์„ ์ˆœ์œ„ 1: ์›๊ฒฉ ํžˆ์Šคํ† ๋ฆฌ์— ๋…ธ์ถœ๋œ Slack, OpenAI, Perplexity, Tavily, JWT ๋“ฑ ๋ฏผ๊ฐ๊ฐ’ ํ๊ธฐ ๋ฐ ์žฌ๋ฐœ๊ธ‰ +- ์šฐ์„ ์ˆœ์œ„ 2: `skill-news` ํฌํ•จ ๋‚˜๋จธ์ง€ ์ €์žฅ์†Œ์—๋„ ๋™์ผํ•œ `.gitignore` ํ™•์žฅ๊ณผ git ์ถ”์  ํ•ด์ œ ์ ์šฉ +- ์šฐ์„ ์ˆœ์œ„ 3: ์„œ๋น„์Šค๋ณ„ `.env.deploy`๋ฅผ ์˜ˆ์ œ ํŒŒ์ผ๋งŒ ๋‚จ๊ธฐ๋Š” ๊ตฌ์กฐ๋กœ ํ†ต์ผํ•˜๊ฑฐ๋‚˜, `/home/admin/infra-config` ์ฐธ์กฐ ๊ตฌ์กฐ๋กœ ์ผ์›ํ™” + +## 6. ๊ฒ€์ฆ ๊ทผ๊ฑฐ +- `git log --follow --date=iso --name-status -- .env.bak.20260304032910` +- `git show --stat --summary 5f24b2bdb515b0a372cebaf62052f7086d41e739` +- `git reflog --date=iso --all` +- `git ls-files '.env*'` +- `find /home/admin -path '*/.git' -prune -o -type f \( -name '.env.backup' -o -name '.env.bak.*' -o -name '.env.deploy' -o -name '.env' \) -print` + +๊ด€๋ จ ๋ฌธ์„œ: +- [260307 gateway SSOT(runtime/secrets) ๋ถ„๋ฆฌ ์ ์šฉ ๋ฐ ๊ฒ€์ฆ](./260307_gateway_SSOT_runtime_secrets_๋ถ„๋ฆฌ_์ ์šฉ_๋ฐ_๊ฒ€์ฆ.md) +- [README](./README.md)