Odoo Docker 설치 가이드: 올인원 비즈니스 앱 자체 호스팅




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



댓글 남기기