π ννμ΄μ§ κ΄λ¦¬
Luna Whale μΈνλΌΒ·κ³μ Β·μμ° λ§μ€ν° λ νΌλ°μ€ β κΉλ¨Ήμ§ μκ² ν νμ΄μ§μ μ 리
π κ³μ λΆλ¦¬ μ μ±
(μ λ μμ§ λ§ κ²)
| κ³μ μ΄λ©μΌ | μ©λ | μ£Όμ μμ° | λ‘κ·ΈμΈ |
| skyclover777@gmail.com |
π Firebase (μ½λΒ·HTMLΒ·JSΒ·CSSΒ·Firestore) |
luna-whale νλ‘μ νΈ |
λ©μΈ |
| skycloverve@gmail.com |
πΌοΈ Cloudflare R2 #1 (μμΉ κ³΅λΆ) |
luna-images λ²ν· / 14GB μ¬μ© μ€ |
κΈ°μ‘΄ |
| 0skyclover@gmail.com |
π Cloudflare R2 #2 (μλ³μμ
Β·μνΈμ΅) |
luna-assets λ²ν· / μ½ 8GB μμ |
μ κ· 2026-05-18 |
| Luna.node.01@gmail.com |
π§ μλ λ©μΌ λ°μ‘ (Trigger Email Extension) |
λκΈ°μΒ·μμμ¦Β·νμ λ©μΌ |
λ°μ‘ |
μ² μΉ: μ½λ μμ
μ 777, μ΄λ―Έμ§ μ
λ‘λλ ve, λ©μΌ λ°μ‘μ node.01. μ λ μμ§ λ§ κ².
π‘ Cloudflare R2 #1 β skycloverve@gmail.com (μμΉ κ³΅λΆ)
Account μ΄λ©μΌ
skycloverve@gmail.com
볡μ¬
Account ID
ea9d133717c04c9102d4e85e21dfa9ca
볡μ¬
Bucket Name
luna-images
볡μ¬
Location
Asia-Pacific (APAC)
Public URL
https://pub-211475ac86a743b19141dbcb11bfab3b.r2.dev
볡μ¬
S3 Endpoint
https://ea9d133717c04c9102d4e85e21dfa9ca.r2.cloudflarestorage.com
볡μ¬
rclone remote
r2 (config: ~/.config/rclone/rclone.conf, perm 600)
β οΈ API Token Access Key/Secretμ μ λ λ
ΈμΆ κΈμ§. ~/.config/rclone/rclone.conf μλ§ μ μ₯. μ μΆ μ R2 μ½μμμ μ¦μ νμ .
π Cloudflare R2 #2 β 0skyclover@gmail.com (μλ³μμ
Β·μνΈμ΅)
Account μ΄λ©μΌ
0skyclover@gmail.com
볡μ¬
Bucket Name
luna-assets
볡μ¬
Location
Asia-Pacific (APAC)
Public URL
https://pub-5c6f81e15f364b5e9af286a8c8895682.r2.dev
볡μ¬
S3 Endpoint
https://ec7cfbea0697901cd075e2c78119eea8.r2.cloudflarestorage.com
볡μ¬
rclone remote
r2new
μ€μ λ μ§
2026-05-18
β οΈ μ΄κΈ° ν ν°μ μ±ν
λ
ΈμΆλμΌλ―λ‘ μμ
μλ£ ν νμ μμ (Revoke + Generate new).
νμ¬ R2 μ μ₯ μμ°
| κ²½λ‘ | μ©λ | μν |
luna-images/coloring-book/ | 14GB | β
μ΄μ μλ£ (μμΉ κ³΅λΆ + μν리μ λμ) |
luna-images/lessons/ (μμ ) | 5.8GB β μμ 18GB | β³ λ§μ΄κ·Έλ μ΄μ
μμ |
luna-images/atelier-archive/ (μμ ) | μ½ 1-8GB (μ΅μ ν ν) | β³ μ μλ£ μ
λ‘λ μμ |
π₯ Firebase (μ½λ λ°°ν¬)
Account
skyclover777@gmail.com
볡μ¬
Project
luna-whale
Hosting URL
https://luna-whale.web.app
볡μ¬
λ°°ν¬ λͺ
λ Ή
bash scripts/luna-deploy.sh
볡μ¬
β οΈ μ λ λ£°: firebase deploy μ§μ νΈμΆ κΈμ§. νμ scripts/luna-deploy.sh μ¬μ©. νκ· μ¬κ³ λ°©μ§ (λ©μΈ vs μν¬νΈλ¦¬ timestamp μλ λΉκ΅).
Firebase Hosting λ¬΄λ£ νλ
| νλͺ© | νλ | νμ¬ | μν |
| μ μ₯ | 10GB | μ½ 7GB (.firebaseignore μ μ© ν) | β κ³§ νλ |
| μΌ μ μ‘ | 360MB | λͺ¨λν°λ§ νμ | OK |
| Custom Domain | 1κ° | luna-whale.web.app | OK |
π¨ μνΈμ΅(art-shop) λμ μλ£ λΆμ
μμΉ: /Users/sky7_mac/Documents/0_ννμ΄μ§λ―Έμ μμ
202604μΆκ°μμ
/ β 33GB (μλ³μμ
μμ 25GB ν¬ν¨)
β
μ΅μ ν μλ£ (μ¦μ R2 μ
λ‘λ κ°λ₯)
| ν΄λ | μ΄λ―Έμ§ | μ©λ | λΉκ³ |
| μμν μ λ¬Ό νκ²½ | 1,548μ₯ JPG | 354MB | μ ν μ λ¬ΌΒ·νκ²½ λμ |
| μμΉ κ³΅λΆ μ§λΈλ¦¬ μ¬μ΄μ λ¬Ό | 1,619μ₯ JPG | 243MB | μ§λΈλ¦¬ν μ¬μ΄ μ λ¬Ό |
| μ²μ μ±μΈλ° 컀리νλΌ | 443μ₯ JPG | 163MB | μ±μΈλ° μ
λ¬Έ |
| μ€νμμ¦ μ½ν | 444μ₯ JPG | 118MB | SF μ½ν |
| μκ³ | 4,054μ₯ | 878MB | μ¦μ κ°λ₯ |
β μ΅μ ν νμ (PNG β JPG λ³ν ν μ
λ‘λ)
| ν΄λ | PNG μ | νμ¬ μ©λ | λ³ν ν μμ |
| νΉλ³ μμ
| 1,292μ₯ | 2,239MB | ~450MB |
| 첫μμ
| 784 PNG + 624 JPG | 1,527MB | ~500MB |
| 0_μ°ν λλ‘μ νΉκ° 20κ° | 820μ₯ | 1,466MB | ~300MB |
| 0_μ λͺ
λ―Έμ λν 컀리νλΌ | 666μ₯ | 925MB | ~200MB |
| μ°½μλ ₯ 5-8μΈ 101-300κ° | 1,195μ₯ | 540MB | ~120MB |
| μ°½μλ ₯ 101-300κ° | 808μ₯ | 520MB | ~110MB |
| μκ³ | 5,565μ₯ | 7.2GB | ~1.7GB |
π ν΅ν© λ§μ΄κ·Έλ μ΄μ
κΆμ₯
- μ΅μ ν μλ£ μλ£ (878MB) λ¨Όμ R2 μ
λ‘λ β art-shop.html μ λ
ΈμΆ μμ
- PNG 5,565μ₯ JPG λ³ν (sips, νμ§ 88, max 1200px) β μ½ 1.7GB μ μ½
- λ³νλ μλ£λ R2 μ
λ‘λ
- μ΅μ’
: μνΈμ΅ λμ R2 μ½ 2.5GB μ°¨μ§ (νμ¬ R2 14GB + μ κ· 2.5GB = 16.5GB)
π§ μ΄λ©μΌ μμ€ν
| κ³μ | μ©λ | μ°Έμ‘° |
Luna.node.01@gmail.com | μλ λ°μ‘ (κ°μ
νμΒ·κ²°μ μμμ¦Β·λκΈ°μ) | Firebase Trigger Email Extension |
skyclover777@gmail.com | κ΄λ¦¬μ μμ (κ°μ
μλ¦ΌΒ·κ²°μ μλ¦Ό) | BCC μ€μ |
π³ κ²°μ μμ€ν
PayPal
skyclover777@gmail.com (sandbox + live)
λ² νΈλ¨ μ νμν
700-031-520392 (μκΈμ£Ό: μμ°½λ²)
볡μ¬
μΉ΄ν‘ ID (μλ΄)
skycloverve
λ² νΈλ¨ μ ν
0777 32 1527
π μ£Όμ μμ° μμΉ (λ‘컬)
νμΌ κ²½λ‘ λ³΄κΈ°
| μμ° | κ²½λ‘ |
| ννμ΄μ§ μμ€ | /Users/sky7_mac/Documents/000_homepage/ |
| μλ³μμ
Β·μνΈμ΅ μλ³Έ | /Users/sky7_mac/Documents/0_ννμ΄μ§λ―Έμ μμ
202604μΆκ°μμ
/ |
| μλ³μμ
μ΅μ μ 리본 | /Users/sky7_mac/Documents/μ λ¬μλ£/20250517 μ΅μ’
μλ³ μμ ννμ΄μ§ μλ³μμ
μ 리 ν΅ν©/ννμ΄μ§ μλ³μμ
/ |
| λ°°ν¬ μ€ν¬λ¦½νΈ | scripts/luna-deploy.sh |
| κ° λ§€ν λ§μ€ν° JSON | data/lesson-mapping-master.json (152κ°) |
| ν΄μ DB (μ€λ°°μΉ νμ§) | data/png-hash-master.json Β· data/jpg-hash-master.json |
| R2 κΈ°νμ | data/_archive-2025-06/R2-storage-plan.md |
| μ΄λ―Έμ§ νμ΄νλΌμΈ μ€ν¬λ¦½νΈ | scripts/lesson-pipeline/ (auditΒ·relocateΒ·compressΒ·addΒ·rebuild) |
β‘ μμ£Ό μ°λ λͺ
λ Ή
λͺ
λ Ήμ΄ λ³΄κΈ°
λ°°ν¬ (μμ μλ λΉκ΅)
bash scripts/luna-deploy.sh
R2 μ
λ‘λ (μμ: μνΈμ΅ μλ£)
rclone copy /Users/sky7_mac/Documents/0_ννμ΄μ§λ―Έμ μμ
202604μΆκ°μμ
/μμν\ μ λ¬Ό\ νκ²½/ r2:luna-images/atelier-archive/seoyanghwa/ --transfers 32 --checkers 64 --stats 60s
PNG β JPG μΌκ΄ λ³ν (sips)
find "PATH" -name "*.png" -exec sips -s format jpeg -s formatOptions 88 -Z 1200 "{}" --out "{}.jpg" \;
μλ³μμ
λ¬΄κ²°μ± audit
python3 scripts/lesson-pipeline/audit_images.py --month all --threshold 4
μ μλ³ μμ
μλ μΆκ°
python3 scripts/lesson-pipeline/add_lesson_images.py --month 2026-06 --source "/path" --apply
π μ΅κ·Ό μμ
μ΄λ ₯
| λ μ§ | μμ
| κ²°κ³Ό |
| 2026-05-17 | μλ³μμ
2025-06 ~ 2026-03 μ¬μ λΉ (2,169μ₯ μ¬λ°°μΉ + HTML 1,621 μ¬λ‘― 보μ ) | β |
| 2026-05-17 | 500KB+ JPG 511μ₯ μ¬μμΆ β 100MB μ μ½ | β |
| 2026-05-17 | λͺ¨λ μΉ΄λ μΈλ€μΌ β cover ν΅μΌ (180κ° / 12κ°μ) | β |
| 2026-05-17 | 2025-06 1κ° PoC: κ³ΌμΌ λ¨λ©΄ λ¬΄λ¬ λμ₯ ν¨ν΄λΆ (62μ₯ β l01-* λ³ν) | β |
| 2026-04-20 | μμΉ κ³΅λΆ 14GB R2 λ§μ΄κ·Έλ μ΄μ
(skycloverve κ³μ ) | β |
π¨ μκΈ μ λμ
| μν© | λμ |
| R2 ν ν° μ μΆ μμ¬ | R2 μ½μ(skycloverve λ‘κ·ΈμΈ) β R2 β Manage R2 API Tokens β Revoke + Generate |
| λ°°ν¬ ν μ¬μ΄νΈ κΉ¨μ§ | git tag λͺ©λ‘ νμΈ ν git checkout v-before-XXXX β μ¬λ°°ν¬ |
| μ΄λ―Έμ§ μ¬λΌμ§ (μλ³μμ
) | images/lessons/_backup/ λ°±μ
ν΄λμμ 볡μ |
| Firebase νλ μ΄κ³Ό | R2 λ§μ΄κ·Έλ μ΄μ
μ¦μ μ§ν (lessons ν΄λλΆν°) |
λ§μ§λ§ μ
λ°μ΄νΈ: 2026-05-17 Β· μμ±: claude-flow + μμ°½λ²
μ΄ νμ΄μ§λ κ΄λ¦¬μ μ μ© β κ²μ λ
ΈμΆλμ§ μμΌλ©° admin μ¬μ΄λλ°μμλ§ μ κ·Ό.