Odooインストール · 10 min read · Nov 17, 2025
Rocky Linux 9にOdoo 17 ERPソフトウェアをインストールする方法

Odoo(以前はOpenERPとして知られていました)は、CRM、eコマース、会計、在庫、プロジェクト管理、販売時点管理など、さまざまなビジネスニーズに対応する10,000以上のオープンソースアプリケーションの自己ホスト型スイートです。これらのアプリケーションは完全に統合されており、馴染みのあるWebインターフェースを通じてアクセスされます。
このチュートリアルでは、Rocky Linux 9サーバーにOdoo 16スタックをインストールする方法を学びます。
前提条件
- Odooスタックをホストするために最低2GBのRAMを持つRocky Linux 9サーバー。
- PostgreSQLデータベースをホストするために最低2GBのRAMを持つ2台目のRocky Linux 9サーバー。ただし、Odooと同じサーバーにデータベースをインストールすることもできますが、運用環境では別のサーバーにインストールすることを強くお勧めします。また、任意のプロバイダーから利用可能な管理データベースオプションを選択することもできます。
- RAMの要件は、スタックを使用する同時ユーザーの数によって異なります。システム要件の計算方法についての詳細なガイドは、Odooのドキュメントにあります。
- システムを最新の状態に保ちます。
$ sudo dnf update - 両方のサーバーでsudo権限を持つ非rootユーザー。
- Fail2Banがインストールされている必要があります。このステップはオプションです。同じくRocky LinuxにFail2Banをインストールするガイドに従うことができます。
- SELinuxは無効にする必要があります。
- システムに必要なパッケージがいくつかあります。
$ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -yこれらのパッケージのいくつかは、すでにシステムにインストールされているかもしれません。
ステップ1 - ファイアウォールルールの設定
最初のステップはファイアウォールを設定することです。Rocky LinuxはFirewalldファイアウォールを使用します。このチュートリアルでは、両方のサーバーにFirewalldファイアウォールがインストールされていると仮定します。
ファイアウォールの状態を確認します。
$ sudo firewall-cmd --state
running
ファイアウォールは異なるゾーンで機能し、パブリックゾーンがデフォルトで使用されます。ファイアウォールでアクティブなすべてのサービスとポートをリストします。
$ sudo firewall-cmd --zone=public --list-all
次の出力が表示されるはずです。
public
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Odooサーバーでは、ポート22、80、443、6010、5432、および8069を開く必要があります。22はSSHに使用され、80はHTTP、443はHTTPS、6010はOdoo通信に使用され、5432はPostgreSQLによって使用され、8069はOdooサーバーアプリケーションに使用されます。
Odooサーバーで必要なポートを開くために、次のコマンドを実行します。
$ sudo firewall-cmd --zone=public --add-port={6010,5432,8069,8072}/tcp
$ sudo firewall-cmd --zone=public --add-service=http
$ sudo firewall-cmd --zone=public --add-service=https
ファイアウォールの状態を確認します。
$ sudo firewall-cmd --zone=public --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: cockpit dhcpv6-client http https ssh
ports: 6010/tcp 5432/tcp 8069/tcp 8072/tcp
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
PostgreSQLサーバーでは、ポート22、6010、および5432を開く必要があります。次のコマンドを使用して開きます。
$ sudo firewall-cmd --zone=public --add-port={6010,5432}/tcp
すべての変更を永続化し、ファイアウォールを再読み込みして変更を有効にします。
$ sudo firewall-cmd --runtime-to-permanent
$ sudo firewall-cmd --reload
ステップ2 - ホスト名の割り当て
サーバーのIPアドレスを使用するか、利用可能な場合は完全修飾ドメイン名(FQDN)を使用できます。このチュートリアルではFQDNを使用し、そのために両方のサーバーでホスト名を設定する必要があります。
次のコマンドを使用してOdooサーバーのホスト名を設定します。
$ sudo hostnamectl set-hostname odoo.yourdomain.com
次のコマンドを使用してPostgreSQLサーバーのホスト名を設定します。
$ sudo hostnamectl set-hostname postgresql.yourdomain.com
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を押します。
ステップ3 - PostgreSQLのインストールと設定
Rocky Linux 9にはデフォルトでPostgreSQL 13が付属しており、PostgreSQL 15はpostgresql:15モジュールストリームとして提供されています。ただし、私たちはこのチュートリアルを書く時点で利用可能な最新バージョンであるPostgreSQL 16を公式リポジトリからインストールします。
PostgreSQLリポジトリRPMをインストールします。
$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
組み込みのPostgreSQLモジュールを無効にします。
$ sudo dnf -qy module disable postgresql
PostgreSQL 16をインストールします。
$ sudo dnf install -y postgresql16-server postgresql16-contrib
データベースを初期化します。
$ sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
PostgreSQLサービスを有効にして開始します。
$ sudo systemctl enable postgresql-16
$ sudo systemctl start postgresql-16
サービスの状態を確認します。
$ sudo systemctl status postgresql-16
次のような出力が得られるはずです。
? postgresql-16.service - PostgreSQL 16 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-16.service; enabled; preset: disabled)
Active: active (running) since Sun 2024-04-07 02:22:42 UTC; 3s ago
Docs: https://www.postgresql.org/docs/16/static/
Process: 8673 ExecStartPre=/usr/pgsql-16/bin/postgresql-16-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
Main PID: 8678 (postgres)
Tasks: 7 (limit: 10819)
Memory: 17.4M
CPU: 60ms
CGroup: /system.slice/postgresql-16.service
??8678 /usr/pgsql-16/bin/postgres -D /var/lib/pgsql/16/data/
??8679 "postgres: logger "
??8680 "postgres: checkpointer "
??8681 "postgres: background writer "
??8683 "postgres: walwriter "
??8684 "postgres: autovacuum launcher "
??8685 "postgres: logical replication launcher "
Apr 07 02:22:42 postgresql systemd[1]: Starting PostgreSQL 16 database server...
Apr 07 02:22:42 postgresql postgres[8678]: 2024-04-07 02:22:42.370 UTC [8678] LOG: redirecting log output to logging collector process
Apr 07 02:22:42 postgresql postgres[8678]: 2024-04-07 02:22:42.370 UTC [8678] HINT: Future log output will appear in directory "log".
Apr 07 02:22:42 postgresql systemd[1]: Started PostgreSQL 16 database server.
次に、データベースユーザーodooを作成する必要があります。ロールのパスワードを求められます。お好みの強力なパスワードを入力してください。
$ sudo -u postgres createuser odoo -U postgres -dP
オプション-uは、postgresユーザーとしてコマンドを実行します。
オプション-Uは、接続するユーザー名を示します。
オプション-dは、ユーザーにデータベースを作成する権限を付与します。
オプション-pは、新しいユーザーのパスワードを求めます。
ホストベースの認証の設定
PostgreSQLサービスがOdooサーバーに接続できるようにするための権限を与える必要があります。
まず、PostgreSQLサービスを停止します。
$ sudo systemctl stop postgresql-16
PostgreSQLがクライアント認証ファイルをどこに保存しているかを見つけるために、次のコマンドを実行してPostgreSQLシェルを起動します。
$ sudo -u postgres psql
次のクエリを実行してファイルの場所を見つけます。
postgres=# SHOW hba_file;
次の出力が得られます。
hba_file
------------------------------------
/var/lib/pgsql/16/data/pg_hba.conf
(1 row)
シェルを終了するにはexitと入力します。
ファイル/var/lib/pgsql/16/data/pg_hba.confを編集のために開きます。
$ sudo nano /var/lib/pgsql/16/data/pg_hba.conf
次の行を最後に貼り付けます。
host all odoo odoo.yourdomain.com scram-sha-256
この行は、odooユーザーがこのサーバー内のすべてのデータベースに接続する権限を付与します。allキーワードを使用する代わりに、データベースの名前を指定することもできます。
Ctrl + Xを押してエディタを閉じ、ファイルを保存するように求められたらYを押します。
PostgreSQLリスニングアドレスの設定
次に、データベースサーバーがリモート接続をリッスンできるようにする必要があります。
PostgreSQLシェルを起動し、次のコマンドを実行してPostgreSQL設定ファイルの場所を見つけます。
$ sudo -u postgres psql
postgres=# SHOW config_file;
次の出力が得られます。
config_file
----------------------------------------
/var/lib/pgsql/16/data/postgresql.conf
(1 row)
シェルを終了するにはexitと入力します。
ファイル/var/lib/pgsql/16/data/postgresql.confを編集のために開きます。
$ sudo nano /var/lib/pgsql/16/data/postgresql.conf
listen_addressesの行を次のように変更します。
#listen_addresses = 'localhost' # what IP address(es) to listen on;
から
listen_addresses = '*'
*はすべてのIPアドレスをリッスンすることを意味します。OdooインスタンスのIPアドレスに変更することもできます。
listen_addresses = 'localhost, '
Ctrl + Xを押してエディタを閉じ、ファイルを保存するように求められたらYを押します。
PostgreSQLサービスの有効化と開始
設定が完了したので、PostgreSQLサービスを開始する時が来ました。
$ sudo systemctl start postgresql-16
ステップ4 - Odooのインストール
Python 3.10のインストール
Rocky Linux 9にはPython 3.9が付属していますが、Odoo 17はPython 3.10以上を必要とします。したがって、まずそれをインストールする必要があります。
現在の利用可能なバージョンを最初に確認できます。
$ python --version
Python 3.9.18
Pythonに必要な依存関係をインストールします。
$ sudo dnf groupinstall "Development Tools"
$ sudo dnf install readline-devel ncurses-devel openssl-devel sqlite-devel tk-devel gdbm-devel libc6-dev libbz2-dev libffi-dev zlib1g-dev
$ sudo dnf install -y openssl-devel bzip2-devel libffi-devel readline-devel ncurses-devel sqlite-devel tk-devel
Pythonのウェブサイトからソースコードをダウンロードします。このチュートリアルを書く時点での最新の3.10.xバージョンは3.10.14で、これを使用しました。
$ wget https://www.python.org/ftp/python/3.10.14/Python-3.10.14.tgz
アーカイブを抽出します。
$ tar xzf Python-3.10.14.tgz
抽出したディレクトリに移動します。
$ cd Python-3.10.14
ソースコードを設定します。
$ ./configure --enable-optimizations
Python 3.10.14をインストールします。altinstallコマンドは、システムのPythonバージョンを上書きしないように使用されます。
$ sudo make altinstall
インストールを確認します。
$ python3.10 -V
OR
$ python3.10 --version
次の出力が得られるはずです。
Python 3.10.14
次に、Python 3.10をデフォルトのPythonバージョンとして設定する必要があります。サーバーにインストールされている各Pythonバージョンのシンボリックリンクを作成します。シンボリックバージョンを作成する際には、コマンドにPythonの正確なバージョンを含める必要があります。次のコマンドを実行してシンボリックリンクを作成します。
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.10 1
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2
利用可能なPythonバージョンを表示するには、次のコマンドを使用します。
$ sudo update-alternatives --config python3
次の出力が表示されるはずです。
There are 2 programs which provide 'python3'.
Selection Command
-----------------------------------------------
1 /usr/local/bin/python3.10
*+ 2 /usr/bin/python3.9
Enter to keep the current selection[+], or type selection number:
番号1を選択してPython 3.10に切り替えます。
ターミナルからログアウトして再度ログインすると、Pythonバージョンが切り替わります。これでpythonを直接使用してPython 3.10.14を使用できます。
依存関係のインストールとインストールの準備
Odooサーバー上でOdooプロセスを管理するための新しいシステムユーザーを作成します。ホームディレクトリは/opt/odooです。これは、rootユーザーで実行することによるセキュリティリスクを防ぐためです。
$ sudo useradd -m -d /opt/odoo -U -r -s /bin/bash odoo
Odoo 17のセットアップに必要なシステム依存関係をインストールします。
$ sudo dnf install -y git libxslt-devel bzip2-devel openldap-devel libjpeg-devel freetype-devel libpq-devel
Nodejsをインストールします。Rocky Linux 9にはNode 18.xが付属しており、これはNodejsの現在のLTSバージョンです。ただし、公式のNodesourceリポジトリを使用します。
Node 20リポジトリを追加します。
$ curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
Nodejsをインストールします。
$ sudo dnf -y install nodejs
Nodeのバージョンを確認します。
$ node --version
v20.12.1
Nodeを使用してLess CSSパッケージをインストールします。右から左にインターフェースを持つ言語を使用している場合は、rtlcssパッケージもインストールします。
$ sudo npm install -g less rtlcss
wkhtmltopdfをインストールします。Wkhtmltopdf GitHubパッケージリポジトリからRPMパッケージを使用します。このチュートリアルを書く時点での最新バージョンは0.12.6.1 r3です。
Wkhtmltopdf RPMをダウンロードします。
$ cd ~
$ wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox-0.12.6.1-3.almalinux9.x86_64.rpm
Wkhtmltopdfに必要なフォントをインストールします。
$ sudo dnf install xorg-x11-fonts-75dpi.noarch xorg-x11-fonts-Type1.noarch
Wkhtmltopdfをインストールします。
$ sudo rpm -i wkhtmltox-0.12.6.1-3.almalinux9.x86_64.rpm
インストールされたwkhtmltopdfのバージョンを確認します。
$ wkhtmltopdf --version
wkhtmltopdf 0.12.6.1 (with patched qt)
Odooファイルのダウンロード
Odooシステムユーザーに切り替えます。
$ sudo su - odoo
OdooのGitHubリポジトリをシステムにクローンします。
$ git clone https://github.com/odoo/odoo.git --depth 1 --branch 17.0 --single-branch
私たちの目的のために、Odooを/opt/odooディレクトリにコピーしています。ここからインストールされます。これにより、/opt/odoo/odooディレクトリが作成され、インストールに使用されます。
Python環境の仮想環境の設定
このステップはオプションですが、Odooの仮想Python環境を作成することで、特にOSのアップグレードを行う際に、オペレーティングシステムのPythonモジュールとの競合を避けるのに役立ちます。
これにはvirtualenvを使用します。
- Odoo用の新しい
virtualenv環境を作成します。$ python3 -m venv odoo-env - 仮想環境をアクティブにします。システムユーザーのホームディレクトリの下に環境を作成しています。好きな場所を選んで構いません。
$ source odoo-env/bin/activate - 念のためPIPを更新します。
(odoo-env) $ pip3 install --upgrade pip - 仮想環境にPythonのwheelをインストールします。
$ pip3 install wheel
Python依存関係のインストール
Odoo 17に必要なPython依存関係をインストールします。
$ pip3 install -r /opt/odoo/odoo/requirements.txt
要件のインストールには時間がかかる場合があるので、辛抱強くお待ちください。
インストールされたPythonモジュールのリストを確認して、要件が正しくインストールされているかどうかを確認します。
$ pip3 list
Package Version
----------------- --------
attrs 23.2.0
Babel 2.9.1
beautifulsoup4 4.12.3
cached-property 1.5.2
certifi 2024.2.2
cffi 1.16.0
chardet 4.0.0
cryptography 3.4.8
decorator 4.4.2
docopt 0.6.2
docutils 0.17
ebaysdk 2.1.5
freezegun 1.1.0
geoip2 2.9.0
gevent 21.8.0
greenlet 1.1.2
idna 2.10
isodate 0.6.1
Jinja2 3.0.3
libsass 0.20.1
lxml 4.8.0
MarkupSafe 2.0.1
maxminddb 2.6.0
num2words 0.5.10
ofxparse 0.21
passlib 1.7.4
Pillow 9.0.1
pip 24.0
platformdirs 4.2.0
polib 1.1.1
psutil 5.9.0
psycopg2 2.9.2
pyasn1 0.6.0
pyasn1_modules 0.4.0
pycparser 2.22
pydot 1.4.2
pyOpenSSL 21.0.0
pyparsing 3.1.2
PyPDF2 1.26.0
pyserial 3.5
python-dateutil 2.8.1
python-ldap 3.4.0
python-stdnum 1.17
pytz 2024.1
pyusb 1.2.1
qrcode 7.3.1
reportlab 3.6.8
requests 2.25.1
requests-file 2.0.0
requests-toolbelt 1.0.0
rjsmin 1.1.0
setuptools 65.5.0
six 1.16.0
soupsieve 2.5
urllib3 1.26.5
vobject 0.9.6.1
Werkzeug 2.0.2
wheel 0.43.0
xlrd 1.2.0
XlsxWriter 3.0.2
xlwt 1.3.0
zeep 4.1.0
zope.event 5.0
zope.interface 6.2
Python仮想環境を終了します。
$ deactivate
サードパーティのアドオン用のディレクトリを作成
$ mkdir /opt/odoo/odoo/custom-addons
このディレクトリは、Odooがモジュールを探すディレクトリを定義するaddons_pathパラメータに追加する必要があります。Odooシステムユーザーから退出します。
$ exit
ステップ5 - Odooの設定
デフォルトのOdoo設定ファイルをコピーして新しいものを作成します。
$ sudo cp /opt/odoo/odoo/debian/odoo.conf /etc/odoo.conf
編集のためにファイルを開きます。
$ sudo nano /etc/odoo.conf
ファイルを次のように編集します。
[options]
; This is the password that allows database operations:
admin_passwd = admin
db_host = postgresql.yourdomain.com
db_port = False
db_user = odoo
db_password = odoo_password
addons_path = /opt/odoo/odoo/addons, /opt/odoo/odoo/custom-addons
xmlrpc_port = 8069
default_productivity_apps = True
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は、デフォルトのアドオンパスです。カスタムパスをアドオン用に追加することもできます。
オプションxmlrpc_portは、Odooがリッスンするポートです。
オプションdefault_productivity_appsは、デフォルトの生産性アプリ(従業員、メールマーケティング、プロジェクト、調査)が有効のままにすることを確認します。これらの4つのアプリは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
Requires=postgresql-16.service
After=network.target postgresql-16.service
[Service]
Type=simple
SyslogIdentifier=odoo-server
User=odoo
Group=odoo
ExecStart=/opt/odoo/odoo-env/bin/python3 /opt/odoo/odoo/odoo-bin --config=/etc/odoo.conf --addons-path=/opt/odoo/odoo/addons/ --logfile /var/log/odoo/odoo-server.log
WorkingDirectory=/opt/odoo/odoo/
StandardOutput=journal+console
KillMode=mixed
[Install]
WantedBy=multi-user.target
/home/をPython仮想環境のインストール先に置き換えます。
Ctrl + Xを押してエディタを閉じ、ファイルを保存するように求められたらYを押します。
Odoo用のログディレクトリを作成
$ sudo mkdir /var/log/odoo
ファイルの権限を設定
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: /opt/odoo/odoo-env
$ sudo chown -R odoo: /var/log/odoo
Odoo設定ファイルの制限を設定します。
$ sudo chown odoo: /etc/odoo.conf
$ sudo chmod 640 /etc/odoo.conf
Odooサーバーの開始
Odooサーバーを開始して有効にします。
$ sudo systemctl start odoo-server
$ sudo systemctl enable odoo-server
サーバーの状態を確認します。
$ sudo systemctl status odoo-server
? odoo-server.service - Odoo Open Source ERP and CRM
Loaded: loaded (/usr/lib/systemd/system/odoo-server.service; enabled; preset: disabled)
Active: active (running) since Tue 2024-04-09 23:59:38 UTC; 1s ago
Main PID: 102598 (python3)
Tasks: 4 (limit: 10736)
Memory: 69.6M
CPU: 895ms
CGroup: /system.slice/odoo-server.service
??102598 /opt/odoo/odoo-env/bin/python3 /opt/odoo/odoo/odoo-bin --config=/etc/odoo.conf --addons-path=/opt/odoo/odoo/addons/ --logfile /var/log/odoo/odoo-server.log
Apr 09 23:59:38 odoo.yourdomain.com systemd[1]: Started Odoo Open Source ERP and CRM.
ステップ6 - Nginxのインストールと設定
Rocky Linux 9には古いバージョンのNginxが付属しています。最新バージョンをインストールするには、公式のNginxリポジトリを使用する必要があります。
ファイル/etc/yum.repos.d/nginx.repoを作成し、編集のために開きます。
$ sudo nano /etc/yum.repos.d/nginx.repo
次のコードを貼り付けます。
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
完了したら、Ctrl + Xを押してファイルを保存し、Yを押します。上記のファイルのmainlineセクションでenabled=1を使用してmainlineリポジトリを有効にしたため、私たちはmainlineバージョンのNginxを使用します。どちらかを選択できます。
Nginxをインストールします。
$ sudo dnf install -y nginx
インストールを確認します。
$ nginx -v
nginx version: nginx/1.25.4
Nginxサーバーサービスを有効にして開始します。
$ sudo systemctl enable nginx --now
サービスの状態を確認します。
$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)
Active: active (running) since Wed 2024-04-10 06:52:14 UTC; 3s ago
Docs: http://nginx.org/en/docs/
Process: 103452 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 103453 (nginx)
Tasks: 3 (limit: 10736)
Memory: 3.1M
CPU: 17ms
CGroup: /system.slice/nginx.service
??103453 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
??103454 "nginx: worker process"
??103455 "nginx: worker process"
ステップ7 - SSLのインストール
Let’s Encryptが提供する無料のSSL証明書を生成するためにCertbotをインストールする必要があります。それにはSnapdパッケージインストーラーを使用します。これにはEPEL(Enterprise Linux用の追加パッケージ)リポジトリが必要です。
EPELリポジトリをインストールします。
$ sudo dnf install -y epel-release
Rocky Linux 9にはSnapdがインストールされていません。Snapdパッケージをインストールします。
$ sudo dnf install -y snapd
Snapサービスを有効にして開始します。
$ sudo systemctl enable snapd --now
Snapコアパッケージをインストールし、Snapdのバージョンが最新であることを確認します。
$ sudo snap install core
$ sudo snap refresh core
Snapdが機能するために必要なリンクを作成します。
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Certbotをインストールします。
$ sudo snap install --classic certbot
Certbotコマンドが実行できることを確認するために、次のコマンドを使用して/usr/binディレクトリにシンボリックリンクを作成します。
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Certbotが正常に機能しているか確認します。
$ certbot --version
certbot 2.10.0
証明書を生成します。DHParams証明書も作成する必要があります。
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d odoo.yourdomain.com
Diffie-Hellman鍵交換証明書を生成します。
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Certbotの更新スケジューラーサービスを確認します。
$ sudo systemctl list-timers
スケジュールされたサービスの1つとしてsnap.certbot.renew.serviceが表示されます。
NEXT LEFT LAST PASSED UNIT ACTIVATES
.... .... .... ...... .... ..........
Wed 2024-04-10 13:32:11 UTC 1h 42min left Wed 2024-04-10 11:43:41 UTC 5min ago dnf-makecache.timer dnf-makecache.service
Wed 2024-04-10 19:08:00 UTC 7h left - - snap.certbot.renew.timer snap.certbot.renew.service
Thu 2024-04-11 00:00:00 UTC 12h left Wed 2024-04-10 00:00:36 UTC 11h ago logrotate.timer logrotate.service
SSL更新が正常に機能しているか確認するために、プロセスのドライランを行います。
$ sudo certbot renew --dry-run
エラーが表示されなければ、すべて設定完了です。証明書は自動的に更新されます。
ステップ8 - Nginxの設定
Nginx経由で実行するには、Odooをlocalhostで実行する必要があります。それを変更するために、Odooサービスを停止します。
$ sudo systemctl stop odoo-server
Odooサーバー設定ファイルを開きます。
$ sudo nano /etc/odoo.conf
次の行を追加します。
xmlrpc_interface = 127.0.0.1
proxy_mode = True
Odoo用のNginx設定ファイルを作成します。
$ sudo nano /etc/nginx/conf.d/odoo.conf
以下のコードを貼り付けます。
#odoo server
upstream odoo {
server 127.0.0.1:8069;
}
upstream odoochat {
server 127.0.0.1:8072;
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
map $sent_http_content_type $content_type_csp {
default "";
~image/ "default-src 'none'";
}
# http -> https
server {
listen 80;
listen [::]:80;
server_name odoo.yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
http3 on;
quic_retry on;
server_name odoo.yourdomain.com;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
# Add Headers for odoo proxy mode
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 parameters
ssl_certificate /etc/letsencrypt/live/odoo.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/odoo.yourdomain.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/odoo.yourdomain.com/chain.pem;
ssl_session_timeout 30m;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
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_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_prefer_server_ciphers off;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
# log
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;
# Redirect longpoll requests to odoo longpolling port
location /longpolling {
proxy_pass http://odoochat;
}
location /websocket {
proxy_pass http://odoochat;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-Host $http_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;
proxy_cookie_flags session_id samesite=lax secure; # requires nginx 1.19.8
}
# Redirect requests to odoo backend server
location / {
# Add Headers for odoo proxy mode
proxy_set_header X-Forwarded-Host $http_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;
proxy_redirect off;
proxy_pass http://odoo;
proxy_cookie_flags session_id samesite=lax secure; # requires nginx 1.19.8
}
# common gzip
gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript;
gzip on;
# Serve static files right away
location ~ ^/[^/]+/static/.+$ {
# root and try_files both depend on your addons paths
root /opt/odoo/odoo;
try_files /opt/odoo/odoo/addons$uri @odoo;
expires 24h;
add_header Content-Security-Policy $content_type_csp;
}
}
Ctrl + Xを押してエディタを閉じ、ファイルを保存するように求められたらYを押します。
ファイル/etc/nginx/nginx.confを編集のために開きます。
$ sudo nano /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf;の前に次の行を追加します。
server_names_hash_bucket_size 64;
Ctrl + Xを押してファイルを保存し、Yを押します。
Nginx設定をテストします。
$ sudo nginx -t
エラーが表示されなければ、準備完了です。Nginxサーバーを再起動します。
$ sudo systemctl restart nginx
ステップ9 - Odooの起動
すべての設定が完了したら、Odooサーバーを再度起動できます。
$ sudo systemctl start odoo-server
ブラウザでhttps://odoo.yourdomain.comにアクセスします。ブラウザでURLhttp://またはhttp://odoo.yourdomain.com:8069を開くと、すべてが正常に動作していればOdooのデータベース作成画面が表示されます。

メールアドレスとパスワードを選択してログイン資格情報を作成します。マスターパスワードは/etc/odoo.confファイルに追加したadmin_passwdです。残りのフィールドにすべて入力します。
データベースにサンプルデータを入力するためにDemo Dataフィールドをチェックします。インターネットに接続されたサーバーにデモデータをインストールしないでください。デモデータを含むデータベースには、システムに侵入するために使用できるデフォルトのログインとパスワードが含まれており、重大な問題を引き起こす可能性があります。これはチュートリアル目的でのみ使用しています。
Create databaseボタンをクリックしてインストールを完了します。データベースを初めて作成する際、アドオンページの読み込みに時間がかかるため、ページをリフレッシュしないでください。データベースが作成されると、自動的に次のログインページにリダイレクトされます。

前のステップで使用した資格情報を入力してOdoo ERPにログインすると、以下のようなダッシュボードページに移動します。デモデータで事前に入力されています。デモデータオプションをデータベース作成ページでチェックしなかった場合、異なる、はるかにクリーンなダッシュボードが表示されます。

ここからOdooを使用してビジネスを管理できます。
ステップ10 - Odooの更新
Odooサーバーを停止します。
$ sudo systemctl stop odoo-server
Odooシステムユーザーに切り替えます。
$ sudo su - odoo
GitHubから最新のソースコードを取得します。
$ git fetch
$ git rebase --autostash
2番目のコマンドは、ソースを手動で変更した場合にソースコードの競合が発生する可能性があります。競合したファイルのリストが表示されます。すべてのファイルを手動で変更し、問題を修正するためにコマンドを再実行する必要があります。
競合する変更を破棄したい場合は、次のコマンドを実行してソースをリセットできます。
$ git reset --hard
Python仮想環境をアクティブにします。
$ source odoo-env/bin/activate
Python依存関係をインストールします。
$ pip3 install -r /opt/odoo/odoo/requirements.txt
Python仮想環境を終了します。
$ deactivate
Odooサーバーを起動します。
$ sudo systemctl start odoo-server
ステップ11 - Fail2Banを使用してOdooを保護
このステップはオプションですが、Fail2Banがインストールされている場合は、Odooを保護するための設定を追加できます。
odoo-login.confファイルを作成して編集のために開きます。
$ sudo nano /etc/fail2ban/jail.d/odoo-login.conf
次のコードを貼り付けます。
[odoo-login]
enabled = true
port = http,https
bantime = 900 ; 15 min ban
maxretry = 10 ; if 10 attempts
findtime = 60 ; within 1 min /!\ Should be adjusted with the TZ offset
logpath = /var/log/odoo.log ; set the actual odoo log path here
Ctrl + Xを押してエディタを閉じ、ファイルを保存するように求められたらYを押します。
odoo-login.confフィルタファイルを作成して編集のために開きます。
$ sudo nano /etc/fail2ban/filter.d/odoo-login.conf
次のコードを貼り付けます。
[Definition]
failregex = ^ \d+ INFO \S+ \S+ Login failed for db:\S+ login:\S+ from
ignoreregex =
Ctrl + Xを押してエディタを閉じ、ファイルを保存するように求められたらYを押します。
Fail2Banを再起動します。
$ sudo systemctl restart fail2ban
結論
これで、Rocky Linux 9サーバーにOdooをインストールおよび設定するチュートリアルが終了しました。質問がある場合は、下のコメントに投稿してください。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。