Odoo 설치 · 9 min read · Nov 12, 2025
Ubuntu 20.04에 Odoo 14 ERP 소프트웨어 설치하는 방법

Odoo (이전 이름: OpenERP)는 CRM, 전자상거래, 회계, 재고, 프로젝트 관리 및 판매 시점 등 다양한 비즈니스 요구에 적합한 10,000개 이상의 오픈 소스 애플리케이션으로 구성된 자가 호스팅 스위트입니다. 이러한 애플리케이션은 완전히 통합되어 있으며 공통 웹 인터페이스를 통해 액세스할 수 있습니다.
이 튜토리얼에서는 Ubuntu 20.04 기반 서버에 Odoo 14 스택을 설치하는 방법을 배웁니다.
전제 조건
- Odoo 스택을 호스팅하기 위해 최소 2GB RAM을 갖춘 Ubuntu 20.04 기반 서버.
- PostgreSQL 데이터베이스를 호스팅하기 위해 최소 2GB RAM을 갖춘 두 번째 Ubuntu 20.04 기반 서버. 그러나 Odoo와 동일한 서버에 데이터베이스를 설치할 수 있지만, 프로덕션 환경에서는 별도의 서버에 설치하는 것이 강력히 권장됩니다. 원하는 공급자의 관리형 데이터베이스 옵션 중 하나를 선택할 수도 있습니다.
- RAM 요구 사항은 스택을 사용할 동시 사용자 수에 따라 달라집니다. 시스템 요구 사항을 계산하는 방법에 대한 자세한 가이드는 Odoo 문서에서 확인할 수 있습니다.
- 시스템을 업데이트 상태로 유지하십시오.
shell $ sudo apt update $ sudo apt upgrade - 두 서버 모두에서 sudo 권한이 있는 비루트 사용자.
방화벽 규칙 구성
이 튜토리얼의 목적을 위해 두 서버 모두에 ufw 방화벽이 설치되어 있다고 가정하겠습니다.
Odoo 서버에서는 포트 22, 80, 443, 6010, 5432 및 8069가 열려 있어야 합니다. 22는 SSH에 사용되고, 80은 HTTP에, 443은 HTTPS에, 6010은 Odoo 통신에, 5432는 PostgreSQL에, 8069는 Odoo 서버 애플리케이션에 사용됩니다.
다음 명령을 실행하여 Odoo 서버에서 필요한 포트를 엽니다.
$ sudo ufw allow "OpenSSH"
$ sudo ufw allow 80,443,6010,5432,8069,8072/tcp
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
$ sudo ufw allow 6010/tcp
$ sudo ufw allow 5432/tcp
$ sudo ufw allow 8069/tcp
$ sudo ufw allow 8072/tcp
PostgreSQL 서버에서는 포트 22, 6010 및 5432를 열어야 합니다. 방금 논의한 명령을 사용하여 열어주세요.
호스트 이름 할당
서버의 IP 주소를 사용하거나 사용 가능한 경우 완전한 도메인 이름(FQDN)을 사용할 수 있습니다. 이 튜토리얼에서는 FQDN을 사용할 것이며, 이를 위해 두 서버에서 호스트 이름을 설정해야 합니다.
Odoo 서버에서 /etc/hosts 파일을 엽니다.
$ sudo nano /etc/hosts
다음과 같이 보이도록 하십시오.
127.0.0.1 localhost
127.0.0.1 odoo.yourdomain.com odoo
10.1.1.10 postgresql.yourdomain.com postgresql
PostgreSQL 서버에서 파일을 열고 다음과 같이 보이도록 하십시오.
127.0.0.1 localhost
127.0.0.1 postgresql.yourdomain.com postgresql
10.1.2.10 odoo.yourdomain.com odoo
편집기를 닫으려면 Ctrl + X를 누르고 파일을 저장하라는 메시지가 표시되면 Y를 누릅니다.
PostgreSQL 설치 및 구성
Ubuntu 20.04는 기본적으로 PostgreSQL 12를 제공하며, 이를 설치할 것입니다. PostgreSQL 서버에서 다음 명령을 실행합니다.
$ sudo apt install postgresql-12 postgresql-server-dev-12
다음으로, 데이터베이스 사용자 odoo를 생성해야 합니다.
$ sudo -u postgres createuser odoo -U postgres -dP
옵션 -u는 postgres 사용자로 명령을 실행합니다.
옵션 -U는 연결할 사용자 이름을 지정합니다.
옵션 -d는 사용자가 데이터베이스를 생성할 수 있는 권한을 부여합니다.
옵션 -p는 새 사용자의 비밀번호를 입력하라는 메시지를 표시합니다.
호스트 기반 인증 구성
PostgreSQL 서비스가 Odoo 서버에 연결할 수 있도록 권한을 부여해야 합니다.
먼저 PostgreSQL 서비스를 중지합니다.
$ sudo systemctl stop postgresql
파일 /etc/postgresql/12/main/pg_hba.conf를 편집을 위해 엽니다.
$ sudo nano /etc/postgresql/12/main/pg_hba.conf
마지막에 다음 줄을 붙여넣습니다.
host all odoo odoo.yourdomain.com md5
이 줄은 odoo 사용자에게 이 서버 내의 모든 데이터베이스에 연결할 수 있는 권한을 부여합니다. all 키워드를 사용하는 대신 데이터베이스 이름을 지정할 수도 있습니다.
편집기를 닫으려면 Ctrl + X를 누르고 파일을 저장하라는 메시지가 표시되면 Y를 누릅니다.
PostgreSQL 수신 주소 구성
다음으로, 데이터베이스 서버가 원격 연결을 수신할 수 있도록 허용해야 합니다. 파일 /etc/postgresql/12/main/postgresql.conf를 편집을 위해 엽니다.
$ sudo nano /etc/postgresql/12/main/postgresql.conf
listen_addresses 줄을 다음과 같이 변경합니다.
#listen_addresses = 'localhost' # 어떤 IP 주소에서 수신할지;
다음과 같이 변경합니다.
#연결 및 인증 섹션에서
listen_addresses = '*'
*는 모든 IP 주소에서 수신함을 의미합니다. Odoo 인스턴스의 IP 주소로 변경할 수 있습니다.
편집기를 닫으려면 Ctrl + X를 누르고 파일을 저장하라는 메시지가 표시되면 Y를 누릅니다.
PostgreSQL 서비스 활성화 및 시작
구성이 완료되었으므로 PostgreSQL 서비스를 시작하고 활성화할 시간입니다.
$ sudo systemctl start postgresql && sudo systemctl enable postgresql
Odoo 설치
의존성 설치 및 설치 준비
Odoo 서버에서 Odoo 프로세스를 관리하기 위해 새로운 시스템 사용자를 생성합니다.
$ sudo adduser --system --home=/opt/odoo --group odoo
Odoo 14 설정에 필요한 시스템 의존성을 설치해야 하지만, 먼저 소스 리포지토리를 활성화해야 합니다. 이를 위해 원본 소스 목록을 백업한 다음 모든 소스 리포지토리를 활성화하고 리포지토리 목록을 업데이트합니다.
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list~
$ sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
$ sudo apt update
Odoo 14 설정에 필요한 시스템 의존성을 설치합니다.
$ sudo apt install python3-pip python3-suds python3-all-dev python3-venv python3-dev python3-setuptools python3-tk libxml2-dev libxslt1-dev libevent-dev libsasl2-dev libldap2-dev pkg-config libtiff5-dev libjpeg8-dev libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev liblcms2-utils libwebp-dev tcl8.6-dev tk8.6-dev libyaml-dev fontconfig xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils libpq-dev
$ sudo apt build-dep lxml
Nodejs를 설치합니다.
$ sudo curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
$ sudo apt install nodejs
Node를 사용하여 Less CSS 패키지를 설치합니다.
$ sudo npm install -g less less-plugin-clean-css
wkhtmltopdf 버전 0.12.6 패키지를 다운로드합니다.
$ cd /tmp
$ wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb
패키지를 설치합니다.
$ sudo dpkg -i wkhtmltox_0.12.6-1.focal_amd64.deb
wkhtmltopdf가 올바르게 작동하도록 하려면 바이너리를 /usr/bin으로 복사하고 적절한 권한을 부여합니다.
$ sudo cp /usr/local/bin/wkhtmlto* /usr/bin/
$ sudo chmod a+x /usr/bin/wk*
$ cd ~
Odoo 파일 다운로드
Odoo의 Github 리포지토리를 시스템에 클론합니다.
$ sudo git clone https://github.com/odoo/odoo.git --depth 1 --branch 14.0 --single-branch /opt/odoo
우리의 목적을 위해 Odoo를 /opt/odoo 디렉토리에 복사하여 설치할 것입니다.
가상 환경 Python 환경 설정
이 단계는 선택 사항이지만 권장됩니다. Odoo를 위한 가상 Python 환경은 운영 체제의 Python 모듈과의 충돌을 피하는 데 도움이 됩니다. 특히 운영 체제를 업그레이드할 때 그렇습니다.
이를 위해 virtualenv를 사용할 것입니다.
- Odoo를 위한 새로운
virtualenv환경을 생성합니다.shell $ python3 -m venv /home//odoo-env - 가상 환경을 활성화합니다. 시스템 사용자의 홈 디렉토리 아래에 환경을 생성하고 있습니다. 원하는 위치를 선택할 수 있습니다.
shell $ source /home//odoo-env/bin/activate - 만약을 대비해 PIP를 업데이트합니다.
shell (odoo-env) $ pip3 install --upgrade pip - 가상 환경에 Python의 wheel을 설치합니다.
shell $ pip3 install wheel
Python 의존성 설치
Odoo 14에 필요한 Python 의존성을 설치합니다.
$ pip3 install -r /opt/odoo/doc/requirements.txt
$ pip3 install -r /opt/odoo/requirements.txt
요구 사항이 설치되는 데 시간이 걸리므로 인내심을 가지십시오.
설치된 Python 모듈 목록을 확인하여 요구 사항이 올바르게 설치되었는지 확인합니다.
$ pip3 list
Package Version
----------------------------- ---------
alabaster 0.7.12
appdirs 1.4.4
attrs 20.3.0
Babel 2.6.0
beautifulsoup4 4.9.3
cached-property 1.5.2
certifi 2020.12.5
chardet 3.0.4
decorator 4.3.0
defusedxml 0.7.1
docutils 0.14
ebaysdk 2.1.5
feedparser 5.2.1
freezegun 0.3.15
gevent 20.9.0
greenlet 0.4.17
html2text 2018.1.9
idna 2.6
imagesize 1.2.0
isodate 0.6.0
Jinja2 2.11.2
libsass 0.17.0
lxml 4.6.1
Mako 1.0.7
MarkupSafe 1.1.0
num2words 0.5.6
ofxparse 0.19
packaging 20.9
passlib 1.7.1
Pillow 8.0.1
pip 21.0.1
pkg-resources 0.0.0
polib 1.1.0
psutil 5.6.6
psycopg2 2.8.5
pyasn1 0.4.8
pyasn1-modules 0.2.8
pydot 1.4.1
Pygments 2.8.1
pyparsing 2.4.7
PyPDF2 1.26.0
pyserial 3.4
python-dateutil 2.7.3
python-ldap 3.1.0
python-stdnum 1.8
pytz 2019.1
pyusb 1.0.2
qrcode 6.1
reportlab 3.5.55
requests 2.21.0
requests-toolbelt 0.9.1
setuptools 44.0.0
six 1.15.0
snowballstemmer 2.1.0
soupsieve 2.2
Sphinx 3.5.2
sphinx-patchqueue 1.0.4
sphinxcontrib-applehelp 1.0.2
sphinxcontrib-devhelp 1.0.2
sphinxcontrib-htmlhelp 1.0.3
sphinxcontrib-jsmath 1.0.1
sphinxcontrib-qthelp 1.0.3
sphinxcontrib-serializinghtml 1.1.4
unidiff 0.6.0
urllib3 1.24.3
vobject 0.9.6.1
Werkzeug 0.16.1
wheel 0.36.2
xlrd 1.2.0
XlsxWriter 1.1.2
xlwt 1.3.0
zeep 3.2.0
zope.event 4.5.0
zope.interface 5.2.0
Python 가상 환경에서 나옵니다.
$ deactivate
Odoo 구성
기본 Odoo 구성 파일을 복사하여 새 파일을 생성합니다.
$ sudo cp /opt/odoo/debian/odoo.conf /etc/odoo-server.conf
편집을 위해 파일을 엽니다.
$ sudo nano /etc/odoo-server.conf
파일을 다음과 같이 편집합니다.
[options]
; 데이터베이스 작업을 허용하는 비밀번호:
admin_passwd = admin
db_host = postgresql.yourdomain.com
db_port = False
db_user = odoo
db_password = odoo_password
addons_path = /opt/odoo/addons
xmlrpc_port = 8069
편집기를 닫으려면 Ctrl + X를 누르고 파일을 저장하라는 메시지가 표시되면 Y를 누릅니다.
옵션 admin_passwd는 Odoo GUI 내에서 관리 작업을 허용하는 비밀번호입니다. 안전한 비밀번호를 선택해야 합니다.
옵션 db_host는 PostgreSQL 서버의 FQDN 또는 IP 주소입니다.
옵션 db_port는 기본 PostgreSQL 포트 5432가 사용되므로 false로 설정됩니다. 다른 포트를 사용하려면 이 값을 업데이트해야 합니다.
옵션 db_user는 PostgreSQL 사용자 이름입니다.
옵션 db_password는 PostgreSQL 서버에서 이전에 생성한 PostgreSQL ‘odoo’ 사용자 비밀번호입니다.
옵션 addons_path는 기본 Addons 경로입니다. Addons에 대한 사용자 지정 경로를 추가할 수도 있으며, 쉼표로 구분합니다.
옵션 xmlrpc_port는 Odoo가 수신하는 포트입니다.
Odoo 서비스 생성
Odoo가 시스템 재시작 후에도 계속 실행되도록 하려면 Odoo 서비스를 생성해야 합니다.
파일 /lib/systemd/system/odoo-server.service를 생성하고 편집을 위해 엽니다.
$ sudo nano /lib/systemd/system/odoo-server.service
다음 코드를 붙여넣습니다.
[Unit]
Description=Odoo Open Source ERP and CRM
[Service]
Type=simple
PermissionsStartOnly=true
SyslogIdentifier=odoo-server
User=odoo
Group=odoo
ExecStart=/home//odoo-env/bin/python3 /opt/odoo/odoo-bin --config=/etc/odoo-server.conf --addons-path=/opt/odoo/addons/
WorkingDirectory=/opt/odoo/
StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
/home/를 Python 가상 환경을 설치한 위치로 바꿉니다.
편집기를 닫으려면 Ctrl + X를 누르고 파일을 저장하라는 메시지가 표시되면 Y를 누릅니다.
파일 권한 설정
odoo-server.service 파일에 대한 권한을 설정하여 Odoo 사용자만 읽거나 실행할 수 있도록 합니다.
$ sudo chmod 755 /lib/systemd/system/odoo-server.service
$ sudo chown odoo: /lib/systemd/system/odoo-server.service
Python 환경 및 Odoo 설치 디렉토리에 대한 소유권을 설정합니다.
$ sudo chown -R odoo: /opt/odoo/
$ sudo chown -R odoo: /home//odoo-env
Odoo 구성 파일의 권한을 제한합니다.
$ sudo chown odoo: /etc/odoo-server.conf
$ sudo chmod 640 /etc/odoo-server.conf
Odoo 서버 시작
Odoo 서버를 시작하고 활성화합니다.
$ sudo systemctl start odoo-server
$ sudo systemctl enable odoo-server
서버 상태를 확인합니다.
$ sudo systemctl status odoo-server
브라우저에서 URL http:// 또는 http://odoo.yourdomain.com:8069를 엽니다. 모든 것이 제대로 작동하면 Odoo의 데이터베이스 생성 화면이 표시됩니다.

모든 필드를 입력합니다. Demo Data 필드를 체크하여 데이터베이스에 샘플 데이터를 채우고 Create database 버튼을 클릭합니다.
다음으로 선택할 수 있는 앱 목록이 표시됩니다.
데이터베이스를 처음 생성할 때는 애드온 페이지가 로드되는 데 시간이 걸리므로 페이지를 새로 고치지 마십시오.
Nginx 설치 및 구성
지금까지 Odoo 서버를 사용하여 스택을 실행하고 있었습니다. 그러나 이상적으로는 프록시를 사용하여 Nginx에서 실행하는 것이 좋습니다. 그렇게 하면 SSL을 설치할 수 있습니다.
Nginx를 설치합니다.
$ sudo apt install nginx
Nginx를 통해 실행하려면 Odoo를 localhost에서 실행해야 합니다. 이를 변경하기 위해 Odoo 서비스를 중지합니다.
$ sudo systemctl stop odoo-server
Odoo 서버 구성 파일을 엽니다.
$ sudo nano /etc/odoo-server.conf
다음 줄을 추가합니다.
xmlrpc_interface = 127.0.0.1
proxy_mode = True
Odoo에 대한 Nginx 구성 파일을 생성합니다.
$ sudo nano /etc/nginx/sites-available/odoo.conf
아래 코드를 붙여넣습니다.
#odoo 서버
upstream odoo {
server 127.0.0.1:8069;
}
upstream odoochat {
server 127.0.0.1:8072;
}
# http -> https
server {
listen 80;
server_name odoo.yourdomain.com;
rewrite ^(.*) https://$host$1 permanent;
}
server {
listen 443 ssl http2;
server_name odoo.yourdomain.com;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
# Odoo 프록시 모드에 대한 헤더 추가
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;
# SSL 매개변수
ssl_certificate /etc/letsencrypt/live/odoo.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/odoo.yourdomain.com/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # 약 40000 세션
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
# 로그
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;
# Odoo 롱폴링 포트로 요청 리디렉션
location /longpolling {
proxy_pass http://odoochat;
}
# Odoo 백엔드 서버로 요청 리디렉션
location / {
proxy_redirect off;
proxy_pass http://odoo;
}
# 일반 gzip
gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript;
gzip on;
}
편집기를 닫으려면 Ctrl + X를 누르고 파일을 저장하라는 메시지가 표시되면 Y를 누릅니다.
이 구성 파일을 sites-enabled 디렉토리에 링크하여 활성화합니다.
$ sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/
Nginx 구성을 테스트합니다.
$ sudo nginx -t
SSL 설치
Let’s Encrypt 서비스를 사용하여 SSL을 설치합니다.
이를 위해 Certbot을 설치합니다.
$ sudo apt install certbot
Certbot 프로세스에 방해가 되므로 Nginx를 중지합니다.
$ sudo systemctl stop nginx
인증서를 생성합니다. DHParams 인증서도 생성해야 합니다.
$ sudo certbot certonly --standalone -d odoo.yourdomain.com --preferred-challenges http --agree-tos -n -m [email protected] --keep-until-expiring
$ sudo systemctl start nginx
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
SSL을 자동으로 갱신하기 위해 cron 작업을 설정해야 합니다. crontab 편집기를 열려면 다음 명령을 실행합니다.
$ sudo crontab -e
맨 아래에 다음 줄을 붙여넣습니다.
25 2 * * * /usr/bin/certbot renew --quiet --pre-hook “systemctl stop nginx” --post-hook “systemctl start nginx”
위의 cron 작업은 매일 오전 2시 25분에 certbot을 실행합니다. 원하는 대로 변경할 수 있습니다.
파일을 저장하려면 Ctrl + X를 누르고 메시지가 표시되면 Y를 입력합니다.
Odoo 시작
모든 설정이 완료되었으므로 Odoo 서버를 다시 시작할 수 있습니다.
$ sudo systemctl start odoo-server
브라우저에서 https://odoo.yourdomain.com을 통해 Odoo를 실행합니다. 이전에 설명한 화면이 표시됩니다. 데이터베이스를 생성하기 위해 필요한 세부 정보를 입력하고 Odoo에 로그인하여 다음과 같은 화면을 확인합니다.

결론
이로써 Ubuntu 20.04 서버에 Odoo를 설치하는 튜토리얼이 마무리되었습니다. 질문이 있으시면 아래 댓글로 남겨주세요.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.