Odoo는 세계에서 가장 많이 설치된 비즈니스 소프트웨어 중 하나입니다. CRM, E-commerce, 회계, 재고, POS, 프로젝트 관리 등 80개 이상의 공식 앱과 수만 개의 커뮤니티 앱을 제공하는 올인원 비즈니스 플랫폼입니다. 전 세계 1,200만 사용자가 Odoo를 통해 비즈니스를 운영하고 있습니다.
Odoo 주요 특징
Odoo는 모듈 방식으로 필요한 기능만 선택적으로 사용할 수 있습니다.
핵심 비즈니스 앱
- CRM: 파이프라인 관리, 리드 스코어링, 이메일 통합, 활동 추적
- 영업: 견적서, 판매 주문, 구독 관리, 전자 서명
- E-commerce: 온라인 상점, 제품 카탈로그, 결제 통합, SEO
- 회계: 자동 분개, 은행 동기화, 세금 계산, 다중 통화
- 재고: 바코드 스캔, 창고 관리, 추적성, 자동 보충
- 제조: BOM, 작업 센터, 품질 관리, PLM
- POS: 오프라인 지원, 바코드, 고객 화면, 다중 결제
- HR: 채용, 출퇴근, 휴가, 평가, 급여
기술적 장점
- Python 기반 오픈소스 프레임워크
- PostgreSQL 데이터베이스
- 강력한 ORM 및 API
- 모듈식 아키텍처
- 웹 기반 스튜디오로 커스터마이징
- 모바일 앱 지원
사전 요구 사항
- Docker 및 Docker Compose 설치
- 최소 2GB RAM (권장 4GB 이상)
- 10GB 이상 저장 공간
Docker Compose로 Odoo 설치
기본 설치
# docker-compose.yml
services:
odoo:
image: odoo:18.0
container_name: odoo
restart: unless-stopped
depends_on:
- db
ports:
- "8069:8069"
environment:
- HOST=db
- USER=odoo
- PASSWORD=odoo
volumes:
- odoo-data:/var/lib/odoo
- ./config:/etc/odoo
- ./addons:/mnt/extra-addons
db:
image: postgres:15
container_name: odoo-db
restart: unless-stopped
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=odoo
- POSTGRES_PASSWORD=odoo
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- db-data:/var/lib/postgresql/data/pgdata
volumes:
odoo-data:
db-data:
Odoo 설정 파일 생성
# 디렉토리 생성
mkdir -p config addons
# 설정 파일 생성
cat > config/odoo.conf << 'EOF'
[options]
addons_path = /mnt/extra-addons data_dir = /var/lib/odoo admin_passwd = your_master_password db_host = db db_port = 5432 db_user = odoo db_password = odoo list_db = True proxy_mode = True EOF
설치 및 실행
# 디렉토리 생성 및 이동
mkdir odoo && cd odoo
# docker-compose.yml 생성 (위 내용)
# config 폴더 및 odoo.conf 생성
# 컨테이너 실행
docker compose up -d
# 로그 확인
docker compose logs -f odoo
# 브라우저에서 접속
# http://localhost:8069
초기 데이터베이스 생성
브라우저에서 http://localhost:8069 접속 시 데이터베이스 생성 화면이 나타납니다:
- Master Password: odoo.conf의 admin_passwd 값
- Database Name: 원하는 데이터베이스 이름
- Email: 관리자 이메일
- Password: 관리자 비밀번호
- Language: 한국어 선택 가능
- Country: Korea, Republic of
고급 설정
프로덕션용 Docker Compose
# docker-compose.prod.yml
services:
odoo:
image: odoo:18.0
container_name: odoo
restart: always
depends_on:
- db
ports:
- "127.0.0.1:8069:8069"
- "127.0.0.1:8072:8072" # Live chat
environment:
- HOST=db
- USER=odoo
- PASSWORD=${DB_PASSWORD}
volumes:
- odoo-data:/var/lib/odoo
- ./config:/etc/odoo:ro
- ./addons:/mnt/extra-addons:ro
command: ["--workers=4", "--max-cron-threads=2"]
db:
image: postgres:15
container_name: odoo-db
restart: always
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=odoo
- POSTGRES_PASSWORD=${DB_PASSWORD}
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- db-data:/var/lib/postgresql/data/pgdata
shm_size: 256mb
volumes:
odoo-data:
db-data:
환경 변수 파일
# .env
DB_PASSWORD=your_secure_password_here
Nginx 리버스 프록시 설정
# /etc/nginx/conf.d/odoo.conf
upstream odoo {
server 127.0.0.1:8069;
}
upstream odoochat {
server 127.0.0.1:8072;
}
server {
listen 80;
server_name odoo.yourdomain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name odoo.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/odoo.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/odoo.yourdomain.com/privkey.pem;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
location /longpolling {
proxy_pass http://odoochat;
}
location / {
proxy_redirect off;
proxy_pass http://odoo;
}
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass http://odoo;
}
client_max_body_size 100m;
}
커스텀 애드온 설치
외부 애드온 추가
# addons 폴더에 커스텀 모듈 추가
cd addons
# Git에서 애드온 클론
git clone https://github.com/OCA/web.git
# Odoo 재시작
docker compose restart odoo
# 앱 목록 업데이트
# Odoo UI에서 Apps > Update Apps List
애드온 경로 설정
# config/odoo.conf
[options]
addons_path = /mnt/extra-addons,/mnt/extra-addons/web
관리 명령어
# 데이터베이스 백업
docker compose exec db pg_dump -U odoo your_database > backup.sql
# 데이터베이스 복원
docker compose exec -T db psql -U odoo your_database < backup.sql
# Odoo 셸 접속
docker compose exec odoo odoo shell -d your_database
# 모듈 업데이트
docker compose exec odoo odoo -d your_database -u module_name --stop-after-init
# 로그 확인
docker compose logs -f odoo
# 컨테이너 재시작
docker compose restart odoo
성능 최적화
Worker 설정
# config/odoo.conf
[options]
workers = 4 max_cron_threads = 2 limit_memory_hard = 2684354560 limit_memory_soft = 2147483648 limit_time_cpu = 600 limit_time_real = 1200
Worker 수 계산: (CPU 코어 수 * 2) + 1
PostgreSQL 튜닝
# docker-compose.yml (db 서비스)
db:
command:
- "postgres"
- "-c"
- "shared_buffers=256MB"
- "-c"
- "effective_cache_size=768MB"
- "-c"
- "work_mem=16MB"
- "-c"
- "maintenance_work_mem=128MB"
버전 업그레이드
# 현재 데이터베이스 백업
docker compose exec db pg_dump -U odoo your_database > backup_before_upgrade.sql
# 새 버전 이미지 풀
docker compose pull
# 컨테이너 재생성
docker compose up -d
# 데이터베이스 업그레이드 (Odoo에서 자동 처리)
마무리
Odoo는 스타트업부터 대기업까지 모든 규모의 비즈니스에 적합한 유연한 플랫폼입니다. Community Edition은 완전 무료이며, 필요한 앱만 선택적으로 사용할 수 있습니다. Docker를 활용하면 몇 분 만에 전체 비즈니스 솔루션을 구축할 수 있으며, 수만 개의 커뮤니티 모듈로 무한히 확장 가능합니다.
참고 링크
- 공식 사이트: https://www.odoo.com
- GitHub: https://github.com/odoo/odoo
- Docker Hub: https://hub.docker.com/_/odoo
- 앱 스토어: https://apps.odoo.com
- 문서: https://www.odoo.com/documentation