導入
Odooは、Pythonで書かれたオープンソースのエンタープライズ・リソース・プランニング(ERP)ツールです。会計、給与計算、在庫管理など、様々なビジネスニーズに対応する多数のプラグインをサポートしています。このチュートリアルでは、Docker Composeを使用してOdooとPostgreSQLデータベースをインストールし、Odooサイトのリバースプロキシとして機能するNginxをインストールします。最後に、Certbotを使用してLet's Encrypt証明機関からTLS証明書をダウンロード・設定し、安全なHTTPS接続を有効にします。.
前提条件
- 2 つ以上の CPU、sudo 権限を持つ非 root ユーザー、および有効なファイアウォールを備えた Ubuntu サーバー。.
- Dockerがインストールされている
- 最後に、TLSを有効にするには、サーバーのパブリックIPアドレスを指すドメイン名が必要です。example.comやodoo.example.comのようなドメイン名です。.
すべての前提条件が準備できたら、手順 1 に進み、docker-compose パッケージをインストールします。.
ステップ1 – Docker Composeをインストールする
コマンドラインツールをインストールするには docker-composeパッケージリストを更新し、次の方法でパッケージをインストールします。 適切 インストール:
sudo apt update
sudo apt install docker-compose次のコマンドを実行すると、パッケージがインストールされているかどうかを確認できます。
docker-compose –version次のような出力が得られるはずです。
Output
docker-compose version 1.25.0, build unknown
docker-py version: 4.1.0
CPython version: 3.8.10サーバーに Docker Compose がインストールされていることを確認したら、このチュートリアルの次の手順で Docker Compose を使用して Odoo と PostgreSQL を設定および起動します。.
ステップ2 – Docker ComposeでOdooとPostgreSQLを実行する
Odoo と PostgreSQL コンテナの作成を開始するには、ホームディレクトリに odoo というディレクトリを作成し、このチュートリアルで作成するファイルを保存してください。このディレクトリに、Odoo の実行に必要なすべてのファイルを保存してください。.
次のコマンドを実行してディレクトリを作成し、 CD 実行します:
mkdir ~/odoo
cd ~/odoo次に、新しい空のYAMLファイルを作成します。 docker-compose.yml 使用して ナノ または、お気に入りのエディターを開きます。
nano docker-compose.ymlこのファイルは次のコマンドで使用できます docker-compose これを使ってOdooコンテナとPostgreSQLコンテナを起動し、それらをリンクします。ファイルに以下の行を追加してください。
version: '3'
services:
odoo:
image: odoo:15.0
env_file: .env
depends_on:
- postgres
ports:
- "127.0.0.1:8069:8069"
volumes:
- data:/var/lib/odoo
postgres:
image: postgres:13
env_file: .env
volumes:
- db:/var/lib/postgresql/data/pgdata
volumes:
data:
db:このファイルは2つのサービスを定義しています。1つ目はodooで、Odooアプリケーションを実行します。2つ目はpostgresで、PostgreSQLデータベースコンテナです。どちらのサービスも、実行中のコンテナインスタンスの外部にデータを保存するために使用するボリュームを参照します。最後に、odooサービスはサーバーのポート8069を、同じポート8069で実行されるOdooコンテナに公開します。.
ファイルの編集が終わったら、保存して終了します。nanoを使用している場合は、Ctrl+Oを押してからReturnキーを押して保存し、Ctrl+Xキーを押して終了します。.
OdooコンテナとPostgreSQLコンテナは、設定に環境変数を使用します。docker-compose.ymlファイルでは、両方のサービスに対してenv_fileディレクティブが指定されています。このディレクティブには、各サービスの実行に必要な変数を含む参照ファイルがインクルードされています。.
docker-compose.yml ファイルにパスワードを含めないことが推奨されるため、環境変数を直接 docker-compose.yml ファイルに追加するよりも、このアプローチが推奨されます。このアプローチは、ファイルを Git リポジトリやその他のソース管理システムにコミットする場合に特に便利です。.
nano で新しい env ファイルを開きます。
nano .envファイルに次の行を追加し、強調表示された値を POSTGRES_USER そして POSTGRES_パスワード 選択内容を置き換えます:
# postgresql environment variables
POSTGRES_DB=postgres
POSTGRES_PASSWORD=a_strong_password_for_user
POSTGRES_USER=odoo
PGDATA=/var/lib/postgresql/data/pgdata
# odoo environment variables
HOST=postgres
USER=odoo
PASSWORD=a_strong_password_for_userOdooとPostgreSQLのパスワードを生成するには、opensslコマンドを使用します。これはほとんどのLinuxシステムで利用できるはずです。サーバー上で以下のコマンドを実行すると、ランダムなバイト列が生成され、パスワードとして使用できるbase64エンコードされたバージョンが出力されます。
openssl rand -base64 30ガード パスワードの代わりに結果の文字列を使用します。 ユーザー用の強力なパスワード ファイル内 .env .env ファイルの編集が完了したら、保存してテキスト エディターを終了します。.
これでコンテナを作成する準備が整いました。 ドゥー そして ポストグル コマンドで docker-compose 始めましょう:
docker-compose up -dup サブコマンドは、docker-compose にコンテナと、docker-compose.yml ファイルで定義された関連ボリュームおよびネットワークを起動するよう指示します。-d フラグ(「daemonize」の略)は、ターミナルコマンドによる処理の中断を防ぐために、コンテナをバックグラウンドで実行するよう docker-compose に指示します。docker-compose は必要な Docker イメージをダウンロードし、コンテナを起動する際に、簡単な出力を表示します。
Output
Creating network "odoo_default" with the default driver
Creating volume "odoo_odoo_data" with default driver
Creating volume "odoo_postgres_data" with default driver
Pulling odoo (odoo:14.0)...
15.0: Pulling from library/odoo
. . .これが完了すると、Odoo が起動するはずです。curl コマンドを使用してホームページを取得することで、Web サーバーが起動しているかどうかをテストできます。 127.0.0.1:8069 実行:
curl --head http://localhost:8069これにより、応答から HTTP ヘッダーのみが出力されます。
Output
HTTP/1.0 303 SEE OTHER
Content-Type: text/html; charset=utf-8
Content-Length: 215
Location: http://localhost:8069/web
Set-Cookie: session_id=142fa5c02742d0f5f16c73bc14ec8144b8230f8a; Expires=Mon, 06-Jun-2022 20:45:34 GMT; Max-Age=7776000; HttpOnly; Path=/
Server: Werkzeug/0.14.1 Python/3.7.3
Date: Tue, 08 Mar 2022 20:45:34 GMT答え 303 他の人を見る これは、サーバーが オドゥー 起動して実行中ですが、インストールを完了するには別のページにアクセスする必要があります。ヘッダー http://localhost:8069/web 指定された場所は、ブラウザで Odoo インストーラ ページにアクセスする場所を示します。.
次に、パブリック トラフィックを Odoo コンテナにプロキシするように Nginx を設定します。.
ステップ3 – Nginxのインストールと設定
Odooサーバーの前にNginxなどのWebサーバーを配置すると、キャッシュ、圧縮、静的ファイルの配信をオフロードしてプロセスを効率化できるため、パフォーマンスが向上します。Nginxをインストールし、Odooへのリクエストをリバースプロキシするように設定しましょう。つまり、ユーザーからのリクエストをOdooに送信し、OdooからNginxに返す処理をNginxが担います。コンテナ化されていないNginxプロセスを使用することで、次のステップでLet's Encrypt TLS証明書を追加する作業が容易になります。.
まずパッケージリストを更新し、次にNginxをインストールします。 適切 インストール:
sudo apt update
sudo apt install nginxNginx Full UFW アプリケーション プロファイルを使用して、ポート 80 および 443 (HTTP および HTTPS) へのパブリック トラフィックを許可します。
sudo ufw allow "Nginx Full"Output
Rule added
Rule added (v6)次に、/etc/nginx/sites-availableディレクトリに新しいNginx設定ファイルを開きます。ここではodoo.confとしますが、別の名前でも構いません。
sudo nano /etc/nginx/sites-available/odoo.conf新しい設定ファイルに以下のコードを貼り付けます。your_domain_here の部分は、Odoo サーバーに設定したドメインに置き換えてください。例えば、odoo.example.com のようなドメインになります。
server {
listen 80;
listen [::]:80;
server_name your_domain_here;
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto https;
proxy_pass http://localhost:8069;
}
}この設定は現時点ではHTTPのみです。次のステップでCertbotにTLSの設定を任せるためです。設定ファイルの残りの部分では、レジストラの場所を設定し、すべてのトラフィックと重要なプロキシヘッダーを、前のステップで起動したOdooコンテナであるhttp://localhost:8069に送信します。.
ファイルを保存して閉じ、/etc/nginx/sites-enabled/ にリンクして設定を有効にします。
sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/nginx -t を使用して、設定ファイルの構文を確認します。
sudo nginx -tOutput
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful最後に、新しい設定で nginx サービスを再ロードします。
sudo systemctl reload nginx.serviceこれで、Odoo サイトはプレーン HTTP 経由でアクセス可能になります。http://your_domain_here を読み込むと(セキュリティ警告が表示される場合があります)、次のように表示されます。
HTTP経由でサイトをセットアップしたら、CertbotとLet's Encryptの証明書で接続を保護しましょう。Odooのウェブベースのセットアッププロセスに進む前に、この作業を行う必要があります。.
ステップ4 – Certbotをインストールし、TLS証明書を設定する
Certbot と無料の Let's Encrypt ライセンスのおかげで、Odoo アプリケーションに TLS 暗号化を追加するには 2 つのコマンドだけが必要です。.
まず、Certbot とその Nginx プラグインをインストールします。
sudo apt install certbot python3-certbot-nginx次に、certbot を –nginx モードで実行し、Nginx server_name 構成ディレクティブで使用したのと同じドメインを指定します。
sudo certbot --nginx -d your_domain_hereLet's Encryptの利用規約に同意し、メールアドレスを入力するよう求められます。その後、すべてのHTTPトラフィックをHTTPSにリダイレクトするかどうかを尋ねられます。これは任意ですが、一般的に推奨されており、安全です。.
その後、Let's Encrypt がリクエストを承認し、Certbot が証明書をダウンロードします。
Output
Congratulations! You have successfully enabled https://odoo.example.com
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=odoo.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/odoo.example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/odoo.example.com/privkey.pem
Your cert will expire on 2022-05-09. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-leCertbot は新しい設定と証明書を使用して Nginx を自動的に読み込みます。ブラウザでサイトを再読み込みし、リダイレクトオプションを選択した場合は自動的に HTTPS に切り替わります。.
これでサイトは安全になり、Web ベースのセットアップ プロセスを続行しても安全です。.
ステップ5 – Odooの設定
ウェブブラウザに戻り、ページを再読み込みしてください。これで、安全なhttps://接続でOdooデータベース設定ページを開けるはずです。ユーザー名とパスワードを安全に入力して、インストールプロセスを完了できます。.
このページに入力する情報は、Odoo アプリケーションに PostgreSQL データベースの作成方法とデフォルトの管理ユーザーの詳細を伝えます。.
次のフィールドに入力します。
- データベース名: odoo
- メールアドレス: あなたのメールアドレス
- パスワード: 管理者ログイン用の強力かつ一意のパスワード。
- デモ データ: Odoo を初めてインストールする場合は、このオプションがオンになっていることを確認してください。
残りのフィールドはデフォルトのままで問題ありません。選択したメールアドレスとパスワードは、今後Odooにログインする際に使用するので、必ず記録しておいてください。.
ページの左下にある「データベースを作成」ボタンをクリックします。Odooがデータベーステーブルを作成するまで1~2分かかる場合があります。処理が完了すると、Odooアプリの管理ページにリダイレクトされます。.
ここから、ERPのニーズに合わせてインストールして使用するOdooモジュールを選択できます。アプリをテストしたい場合は、「Sales」タイルの「インストール」ボタンをクリックしてください。Odooがモジュールをインストールし、Discussアプリの個人ページにリダイレクトします。.
ページの左上にある分割された四角形のアイコンをクリックし、オプションのドロップダウン リストで [販売] リンクを選択します。.
データ、価格、注文、および実験できる販売サンプルのリストをカスタマイズするためのガイドとなるページが表示されます。.
結果
このチュートリアルでは、Docker Compose を使用して Odoo ERP アプリケーションと PostgreSQL データベースをデプロイし、Nginx リバース プロキシを設定し、Let's Encrypt TLS 証明書を使用してセキュリティ保護しました。.












