Підготовка сервера
Розглянемо процес підготовки сервера на Ubuntu 22.04 Server для розгортання робочого середовища системи Odoo версії 16.0. Всі налаштування ми проводимо на чистому, щойно створеному сервері.
Налаштування SSH доступу
Виконайте команду у терміналі для встановлення пакета openssh:
sudo apt-get install openssh-server
Далі внесіть зміни у налаштування SSH з метою підвищення безпеки:
sudo nano /etc/ssh/sshd_config
змінюємо номер порту зі стандартного 22 на інший у діапазоні від 1000 та вище:
Port 22
забороняємо підключення до ssh-сервера використовуючи логін суперкористувача:
PermitRootLogin no
забороняємо підключення до ssh-сервера використовуючи паролі (буде дозволено лише по ключах), для цього розкоментуйте цей рядок:
PasswordAuthentication no
дозволяємо підключення по ssh лише певним користувачам (додати рядок у самий низ файлу):
AllowUsers user1 user2
дозволяємо SSH підключення тільки з певних IP адрес:
AllowUsers = *@123.123.123.123
# Allow access only for IP 123.123.123.123
Генеруємо пару SSH ключів на локальній машині:
ssh-keygen -t rsa -b 4096
Додаємо відкриті ключі для доступу без вводу пароля:
На локальній машині, копіюємо ключ у буфер обміну
cat ~/.ssh/id_rsa.pub
На сервері, вставляємо з буфера обміну та зберігаємо файл
nano ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
Після внесення змін перезавантажуємо сервіс SSH командою
sudo /etc/init.d/ssh reload
Відкриваємо новий термінал (не закриваючи поточний) та пробуємо під'єднатися до сервера по SSH. Якщо під'єднатися не вдалося, перевіряємо все ще раз і вносимо необхідні зміни через перший термінал.
Встановлення та налаштування Docker
Виконайте наступні команди для отримання оновлень системи:
sudo apt-get update
sudo apt-get upgrade -y
Наступні команди встановлять docker у вашій системі:
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
UBUNTU_RLS=$(lsb_release -rs)
if [[ ${UBUNTU_RLS:0:2} -le 21 ]] ; then
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
else
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
fi
sudo apt update
apt-cache policy docker-ce
sudo apt install -y docker-ce docker-compose
Перевіряємо статус встановлення docker:
sudo systemctl status docker
Додаємо поточного користувача у групу docker:
sudo usermod -aG docker $(whoami)
Створимо каталог для docker контейнерів Odoo:
sudo mkdir /opt/docker
sudo chown -R $(whoami): /opt/docker
Moving on now ... create a directory structure for a separate project and give it a name, for example, "test":
mkdir /opt/docker/test
mkdir /opt/docker/test/config
mkdir /opt/docker/test/addons
mkdir /opt/docker/test/addons/custom
mkdir /opt/docker/test/backups
mkdir /opt/docker/test/build
mkdir /opt/docker/test/logs
mkdir /opt/docker/test/geoip
Далі створимо конфігураційний файл для Odoo "odoo.conf":
nano /opt/docker/test/config/odoo.conf
Додамо наступний текст у файл:
[options]
admin_passwd = MASTER_PASS
xmlrpc_port = 8069
db_user = odoo
db_password = odoo
addons_path=
dbfilter = ^%d$
list_db = True
log_db_level = warning
log_handler = :INFO
log_level = debug_rpc
logfile = /mnt/logs/odoo-server.log
logrotate = False
limit_time_cpu = 120
limit_time_real = 180
limit_time_real_cron = 0
max_cron_threads = 2
proxy_mode = True
workers = 3
Генерація надійного майстер-пароля "MASTER_PASS" може бути виконана наступним чином:
python3 -c 'import base64, os; print(base64.b64encode(os.urandom(72)))'
Вставте згенерований пароль у конфігураційний файл у параметр admin_passwd
.
Creating the "docker-compose" file
Тепер створимо конфігураційний файл "docker-compose.yml" командою:
nano /opt/docker/test/docker-compose.yml
Додамо наступний текст у файл:
version: "2"
services:
web:
build: ./build
depends_on:
- db
restart: unless-stopped
ports:
- "127.0.0.1:18069:8069"
- "127.0.0.1:18072:8072"
volumes:
- odoo-web-data:/var/lib/odoo
- ./config:/etc/odoo
- ./addons:/mnt/extra-addons
- ./backups:/mnt/backups
- ./logs:/mnt/logs
- ./geoip:/usr/share/GeoIP/
# command: -u all -d test
networks:
- test
db:
image: postgres:12
restart: unless-stopped
command: postgres -c "max_connections=300"
environment:
- POSTGRES_DB=postgres
- POSTGRES_PASSWORD=odoo
- POSTGRES_USER=odoo
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- odoo-db-data:/var/lib/postgresql/data/pgdata
logging:
options:
max-size: 50m
networks:
- test
volumes:
odoo-web-data:
odoo-db-data:
networks:
test:
Створення конфігураційного файлу "Dockerfile"
Спочатку перегляньте ідентифікатор вашого поточного користувача Linux, наступним чином:
sudo grep "^$(whoami):" /etc/passwd | cut -f 3 -d:
1000
Аналогічним чином отримаємо ідентифікатор групи користувача:
sudo grep "^$(whoami):" /etc/passwd | cut -f 4 -d:
1000
Додамо файл для створення Odoo контейнера:
nano /opt/docker/test/build/Dockerfile
Вставимо наступний текст у файл Dockerfile:
FROM odoo:16.0
USER root
RUN usermod -u 1000 odoo
RUN groupmod -g 1000 odoo
RUN mkdir /var/lib/odoo/.local
RUN chown -R 1000:1000 /var/lib/odoo
RUN pip3 install --upgrade pip
# Adding additional python libraries is as follows:
# Python dependency for installing the "auto_backup" module
RUN pip3 install paramiko
# After adding a new line, the container needs to be rebuilt with the command: docker-compose down && docker-compose up -d –-build
USER odoo
Спробуємо запустити контейнер:
cd /opt/docker/test
docker-compose up -d
Почнеться процес завантаження образів та створення контейнера для поточного проєкту. Після завершення цих процесів, docker контейнер буде запущено. Ви можете переглядати лог Odoo використовуючи наступну команду:
tail -f /opt/docker/test/logs/odoo-server.log
Якщо створення контейнера відбулося успішно, зупиніть контейнер командою:
docker-compose down