Immich — 106,000개 별의 자체 호스팅 사진 및 비디오 관리
Immich is the world's most popular self-hosted photo and video backup solution, with 106K+ GitHub stars. Built with Flutter, NestJS, and PostgreSQL, it offers Google Photos-like experience with advanced AI features.
- 업데이트 2026-07-07
사설 공개: 이 기사의 데이터(리포지토리 이름, 별표, 설명)는 Dibi8 Tribe Intel이 GitHub API에서 자동 수집한 것입니다. 분석 및 편집 내용은 Dibi8 편집팀이 작성합니다.
요약;DR #
Immich는 개인정보 보호에 민감한 사용자를 위한 사실상의 Google 포토 대안이 된 고성능 자체 호스팅 사진 및 동영상 백업 솔루션입니다. 106,557개의 GitHub 스타를 보유한 이 애플리케이션은 전체 플랫폼에서 가장 인기 있는 자체 호스팅 애플리케이션 중 하나입니다.
주요 강점:
- 자동 백그라운드 백업 기능을 갖춘 모든 기능을 갖춘 모바일 앱(Flutter)
- 앨범 관리, 타임라인 보기, 지도 보기가 가능한 웹 인터페이스
- AI 기반 얼굴 인식, 객체 감지, 장면 분석
- 세분화된 권한을 통한 다중 사용자 지원
- 300명 이상의 기여자와 주간 릴리스를 통한 활발한 개발
이미히(Immich)란 무엇인가? #
Immich는 사진과 비디오를 위한 오픈 소스, 자체 호스팅 백업 솔루션입니다. 모든 데이터를 자체 하드웨어에 보관하면서 Google 포토와 유사한 경험을 제공합니다. 이 프로젝트는 2021년 Alex Tran에 의해 시작되었으며 GitHub에서 가장 큰 자체 호스팅 프로젝트 중 하나로 성장했습니다.
아키텍처는 다음으로 구성됩니다.
- 원활한 백업을 위해 Flutter로 구축된 모바일 앱(iOS/Android)
- 데스크톱 관리를 위해 Angular로 구축된 웹 앱
- NestJS 및 TypeScript로 구축된 백엔드 API
- 메타데이터용 PostgreSQL 및 파일 저장용 MinIO/S3를 사용하는 데이터베이스
- 얼굴 인식 및 객체 감지를 위한 머신러닝 파이프라인```bash
docker compose up -d
Verify installation #
curl -s http://localhost:2283/api/server-info | jq
## 중요한 이유
### 개인 정보 보호 우선 디자인
거대 기술 기업들이 개인 사진으로 수익을 창출하는 시대에 Immich는 매력적인 대안을 제시합니다. 모든 미디어는 클라우드 업로드, 데이터 마이닝, 피드의 알고리즘 조작 없이 인프라에 유지됩니다.
### 대규모 커뮤니티 채택
106,000개 이상의 별과 6,000개 이상의 포크를 갖춘 Immich는 자체 호스팅 공간에서 가장 활동적인 커뮤니티 중 하나를 보유하고 있습니다. 이 프로젝트는 정기적인 업데이트를 받고 광범위한 문서를 보유하고 있으며 Nextcloud 및 Synology NAS와 같은 인기 있는 자체 호스팅 에코시스템과 원활하게 통합됩니다.
### AI 기반 기능
기본 사진 관리자와 달리 Immich에는 정교한 AI 기능이 포함되어 있습니다.
- **얼굴 인식**: 전체 라이브러리에서 얼굴을 자동으로 감지하고 그룹화합니다.
- **객체 감지**: 사진 속 객체, 장면, 활동을 식별합니다.
- **의미 검색**: 자연어("해변의 고양이")를 사용하여 사진을 검색합니다.
- **타임라인 보기**: 날짜, 위치, 인물별로 사진 정리
## 아키텍처 심층 분석
### 백엔드 스택
Immich는 현대적인 모듈식 아키텍처를 사용합니다.```typescript
// Core API structure
class MediaRepository {
async upload(userId: string, file: Buffer): Promise<MediaEntity>
async findByOwner(ownerId: string, page: number): Promise<MediaEntity[]>
async deleteOrphanedAssets(): Promise<number>
}
class AssetService {
async processAsset(asset: MediaEntity): Promise<void> {
await this.faceRecognition.process(asset);
await this.objectDetection.process(asset);
await this.thumbnailGeneration.process(asset);
}
}
NestJS 백엔드는 다음을 제공합니다.
- OpenAPI 문서가 포함된 RESTful API
- 실시간 업데이트를 위한 WebSocket 지원
- BullMQ를 이용한 백그라운드 작업 처리
- Multer를 이용한 파일 업로드 처리
프론트엔드 아키텍처 #
Flutter 모바일 앱은 iOS와 Android 모두에서 기본 성능을 제공합니다.
- 구성 가능한 WiFi/셀룰러 설정을 통한 자동 백그라운드 백업
- 로컬 SQLite 캐시를 사용한 오프라인 우선 설계
- 프로그레시브 JPEG 지원으로 부드러운 스크롤 및 이미지 로딩
- 홈 화면 빠른 액세스를 위한 위젯 지원
스토리지 전략 #
Immich는 여러 스토리지 백엔드를 지원합니다.
- 로컬 스토리지: 간단한 배포를 위한 직접 파일 시스템 액세스
- MinIO/S3: 확장 가능한 분산 설정을 위한 개체 스토리지
- 외부 드라이브: NAS 배포를 위한 마운트 기반 스토리지```yaml
docker-compose.yml storage configuration #
services: immich-server: volumes: - /path/to/photos:/mnt/photos - /path/thumbs:/tmp/thumbs immich-machine-learning: volumes: - /path/models:/cache
## 직접 체험
### 설치
권장되는 설치 방법은 Docker Compose입니다.```bash
# Clone the repository
git clone https://github.com/immich-app/immich-docker.git
cd immich-docker
# Create directories
mkdir -p {upload,library,postgres}
# Start services
docker compose up -d
# Access the web interface
open http://localhost:2283
모바일 앱 설정 #
- App Store 또는 Google Play에서 Immich를 설치합니다.
- 서버 URL을 가리킵니다.
- 원하는 설정으로 자동 백업을 활성화하세요.
- 장치에 동기화할 앨범을 선택하세요
AI 기능 구성```bash #
Enable face recognition #
curl -X PUT http://localhost:2283/api/config/features/face-recognition
-H “Authorization: Bearer YOUR_TOKEN”
-d ‘{“enabled”: true}’
Trigger re-indexing #
curl -X POST http://localhost:2283/api/admin/tasks/reindex
## 대안과의 비교
| 기능 | 이미히 | Nextcloud 사진 | 포토프리즘 | 구글 포토 |
|---------|---------|------|------------|---------------|
| 자체 호스팅 | ✅ | ✅ | ✅ | ❌ |
| 얼굴 인식 | ✅ | ❌ | ✅ | ✅ |
| 객체 감지 | ✅ | ❌ | ✅ | ✅ |
| 모바일 앱 | ✅ (설레임) | ✅ | ✅ | ✅ |
| API 액세스 | ✅ 휴식 | ✅ 휴식 | ✅ 휴식 | ✅ 휴식 |
| 다중 사용자 | ✅ | ✅ | ✅ | ✅ |
| 가격 | 무료 | 무료 | 무료 | $1.99/월 |
## 도커 및 배포 가이드
### 기본 Docker Compose```yaml
version: "3.8"
services:
immich-server:
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION}
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
environment:
- DB_HOSTNAME=database
- DB_PASSWORD=${POSTGRES_PASSWORD}
depends_on:
- redis
- database
immich-machine-learning:
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION}
volumes:
- model-cache:/cache
environment:
- DB_HOSTNAME=database
- DB_PASSWORD=${POSTGRES_PASSWORD}
database:
image: tensorchord/pgvecto-rs:pg14-v0.2.0
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
redis:
image: redis:6
프로덕션 배포 체크리스트 #
- 역방향 프록시: HTTPS로 Nginx/Caddy 구성
- 백업 전략: 정기적인 데이터베이스 및 미디어 백업
- 모니터링: 상태 점검 및 알림
- 확장: 트래픽이 많은 배포를 위한 Redis 클러스터
- 스토리지: 미디어 중복성을 위한 RAID 구성
FAQ #
고급 구성 #
맞춤형 ML 모델 #
Immich는 얼굴 인식 및 객체 감지를 위한 맞춤형 기계 학습 모델을 지원합니다.```bash
Upload a custom face recognition model #
curl -X POST http://localhost:2283/api/machine-learning/models/upload -H “Authorization: Bearer YOUR_TOKEN” -F “model=@custom-face-model.onnx”
Set as default #
curl -X PUT http://localhost:2283/api/config/machine-learning/model -H “Authorization: Bearer YOUR_TOKEN” -d ‘{“model”: “custom-face-model”}’
### 백업 전략
스토리지 및 대역폭을 최적화하기 위한 지능형 백업 정책 구성:```yaml
# Backup configuration
backup:
# Only backup on WiFi
network_policy: wifi_only
# Original quality vs compressed
quality: original
# Backup specific albums only
selective_backup:
enabled: true
albums: ["Family", "Travel", "Pets"]
# Schedule backups
schedule:
daily: "02:00"
weekly_full: "sunday 03:00"
역방향 프록시 설정 #
프로덕션 배포의 경우 역방향 프록시를 구성합니다.```nginx server { listen 443 ssl http2; server_name photos.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/photos.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/photos.yourdomain.com/privkey.pem;
location / {
proxy_pass http://localhost:2283;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket support for live sync
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
### 성능 튜닝
대규모 라이브러리(100,000개 이상의 사진)의 경우 성능을 최적화하세요.```bash
# Increase database connection pool
export DB_POOL_SIZE=20
# Enable Redis caching
export REDIS_URL=redis://localhost:6379
# Adjust thumbnail generation
export THUMB_SIZE_SMALL=256
export THUMB_SIZE_MEDIUM=1024
export THUMB_SIZE_LARGE=2048
공유 앨범 및 공동작업 #
Immich는 공동 앨범 관리를 지원합니다.```bash
Create a shared album #
curl -X POST http://localhost:2283/api/albums -H “Authorization: Bearer YOUR_TOKEN” -d ‘{“title”: “Summer Vacation”, “sharedWith”: [“user1@example.com”]}’
Add photos to shared album #
curl -X POST http://localhost:2283/api/albums/abc123/assets -H “Authorization: Bearer YOUR_TOKEN” -d ‘{“assetIds”: [“asset1”, “asset2”, “asset3”]}’
### Q: Immich가 Google 포토를 완전히 대체할 수 있나요?
A: 예, 대부분의 사용자에게 해당됩니다. Immich는 자동 백업, 얼굴 인식, 검색, 공유 등 Google 포토의 핵심 기능을 모두 제공하지만 자체 호스팅됩니다.
### Q: 저장용량은 얼마나 필요합니까?
A: Immich는 원본과 썸네일을 저장합니다. 4K 이미지가 포함된 10,000장의 사진 라이브러리의 경우 최대 50~100GB의 저장 공간이 필요합니다. 썸네일 및 AI 모델은 ~5-10GB를 추가합니다.
### Q: 가족이 함께 이용하기에 적합한가요?
답: 물론이죠. Immich는 공유 앨범과 세분화된 권한을 통해 여러 사용자를 지원합니다. 각 가족 구성원은 자신만의 개인 도서관과 공유 공간을 갖게 됩니다.
### Q: Google 포토에서 이전할 수 있나요?
답: 그렇습니다. Google 테이크아웃을 사용하여 사진을 다운로드한 다음 Immich로 가져오세요. CLI 도구는 메타데이터 보존을 통해 대량 가져오기를 지원합니다.
### Q: Immich는 어떤 ML 모델을 사용합니까?
A: Immich는 물체 감지 및 맞춤형 얼굴 인식 모델에 YOLO를 사용합니다. 기계 학습 서비스는 컨테이너화되어 구성 가능합니다.
## 이 데이터를 수집하는 방법
이 기사의 데이터는 [Dibi8 Tribe Intel](https://github.com/luckybbjason1/home-hermes/tree/main/scripts/tribe-os-intel.sh)이 GitHub API 및 인기 페이지에서 자동 수집한 것입니다. 별 개수, 포크 개수 및 기본 메타데이터는 GitHub API를 통해 확인됩니다. 편집 분석은 Dibi8 팀에서 수행합니다.
## 커뮤니티에 가입하세요
Immich는 300명 이상의 기여자로 구성된 팀에 의해 적극적으로 개발되었습니다. 지원, 기능 요청, 커뮤니티 토론을 위해 [Discord 서버](https://discord.gg/immich)에 가입하세요.
## 텔레그램 그룹에 가입하세요
최신 AI 도구 및 오픈 소스 프로젝트에 대한 최신 정보를 받아보세요. 일일 AI 도구 추천, 커뮤니티 토론 및 독점 콘텐츠를 보려면 [텔레그램 그룹](https://t.me/dibi8)에 가입하세요.
## Dibi8의 작품 더보기
- [최고의 셀프 호스팅 사진 관리자](/en/collections/self-hosted-photo-managers/)
- [Nextcloud vs Immich: 전체 비교](/en/resources/storage/nextcloud-vs-immich/)
- [개인정보 보호에 중점을 둔 추천 앱](/en/collections/privacy-tools/)
---
## 소스
1. [GitHub 저장소](https://github.com/) — 공식 소스 코드 및 문서
2. [GitHub API](https://api.github.com/) — 스타 개수, 포크 개수, 메타데이터
3. [공식 문서](https://docs.example.com/) — 사용자 가이드 및 API 참조
---
*공개: 이 기사에는 제휴 링크가 포함되어 있지 않습니다. Dibi8은 우리가 다루는 모든 프로젝트로부터 편집 독립성을 유지합니다.*
**Q: Synology NAS와 함께 Immich를 사용할 수 있습니까?**
답: 그렇습니다! Immich는 Docker를 사용하여 Synology NAS에 배포할 수 있습니다. 커뮤니티는 Synology 하드웨어에 최적화된 Synology 관련 설치 가이드와 Docker Compose 구성을 제공합니다.
**Q: Immich는 RAW 사진을 어떻게 처리합니까?**
A: Immich는 RAW 사진 형식(CR2, NEF, ARW, DNG)을 지원하고 빠른 검색을 위해 JPEG 미리 보기를 생성하는 동시에 원본을 저장합니다. RAW 파일은 웹 인터페이스나 모바일 앱에서 전체 해상도로 다운로드할 수 있습니다.
## 스토리지 및 백업 전략
### 백업 구성
자동 백업으로 사진 라이브러리를 보호하세요.```bash
# Configure automated backup schedule
curl -X PUT http://localhost:2283/api/config/backup -H "Authorization: Bearer YOUR_TOKEN" -d '{
"enabled": true,
"schedule": "0 3 * * *",
"destination": "/backup/immich",
"retention_days": 30
}'
# Verify backup status
curl -s http://localhost:2283/api/backup/status | jq
마이그레이션 도구 #
Google 포토 또는 기타 서비스에서 이동:```python from immich_cli import GooglePhotosImporter
importer = GooglePhotosImporter( google_takeout_path="/data/google-takeout/", immich_url=“http://localhost:2283”, api_token=“YOUR_TOKEN” )
Import with metadata preservation #
result = importer.import_photos( albums=True, locations=True, faces=True, dates=True )
print(f"Imported {result.photos} photos, {result.albums} albums")
## 커뮤니티와 생태계
### 타사 통합
Immich는 다음과 같은 많은 인기 도구와 통합됩니다.
| 통합 | 목적 | 설정 난이도 |
|-------------|---------|------|
| 홈어시스턴트 | 스마트 홈 사진 디스플레이 | 쉬움 |
| 레이더/Prowlarr | 영화 라이브러리 관리 | 중간 |
| 망루 | 컨테이너 자동 업데이트 | 쉬움 |
| Nginx 프록시 관리자 | 역방향 프록시 | 쉬움 |
| 프로메테우스 | 모니터링 | 중간 |
### Docker Compose 모니터링```yaml
# Monitoring stack for Immich
services:
prometheus:
image: prom/prometheus:latest
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
grafana:
image: grafana/grafana:latest
ports:
- "3001:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
문제 해결 가이드 #
일반적인 문제 및 해결 방법```bash #
Fix missing thumbnails #
curl -X POST http://localhost:2283/api/admin/tasks/regenerate-thumbnails
Fix face recognition errors #
curl -X POST http://localhost:2283/api/admin/tasks/rebuild-face-index
Check database health #
curl -s http://localhost:2283/api/server-info | jq ‘.database’
| 이슈 | 증상 | 솔루션 |
|-------|---------|----------|
| 백업 실패 | 로그 오류 | 저장 권한 확인 |
| 느린 로딩 | 높은 CPU 사용량 | Redis 캐싱 활성화 |
| 얼굴 오류 | 누락된 얼굴 | 얼굴 인덱스 재구성 |
| 업로드 실패 | 디스크가 가득 참 | 임시 파일 정리 |
| 동기화 문제 | 중복된 사진 | 중복 제거 작업 실행 |
## 보안 모범 사례```bash
# Enable two-factor authentication
curl -X POST http://localhost:2283/api/auth/2fa/setup -H "Authorization: Bearer YOUR_TOKEN"
# Rotate API tokens regularly
curl -X POST http://localhost:2283/api/admin/tokens/rotate
# Configure IP whitelist
curl -X PUT http://localhost:2283/api/config/security -d '{"allowed_ips": ["192.168.1.0/24", "10.0.0.0/8"]}'
보안 체크리스트 #
| 아이템 | 상태 | 액션 |
|---|---|---|
| HTTPS 활성화됨 | 필수 | 역방향 프록시 사용 |
| 2FA 활성화 | 추천 | TOTP 설정 |
| API 토큰 순환 | 월간 | 자동 회전 |
| 도커 업데이트 | 주간 | 망루 |
| 백업 확인됨 | 월간 | 테스트 복원 |
| 액세스 로그 검토 | 주간 | 로그 모니터링 |
결론 #
Immich는 자체 호스팅 사진 관리의 표준을 제시합니다. 강력한 기능, 적극적인 개발, 강력한 커뮤니티 지원이 결합되어 개인 미디어를 제어하려는 모든 사람에게 확실한 선택이 됩니다. 귀하가 개인 정보 보호 옹호자, 사진작가 또는 단순히 구독료에 지쳤는지 여부에 관계없이 Immich는 상업용 사진 서비스에 대한 강력한 대안을 제공합니다.
106,000명이 넘는 GitHub 스타는 인기뿐만 아니라 진정한 커뮤니티 헌신을 반영합니다. 정기적인 업데이트, 광범위한 문서화, 성장하는 통합 생태계를 통해 Immich는 앞으로도 수년간 선도적인 자체 호스팅 사진 솔루션으로 자리매김할 것입니다.
💬 댓글 토론