系统配置¶
本文档介绍在正式运行数据库或面向互联网的服务器上安装 Odoo 的基本步骤。它遵循 安装,对于不面向互联网的开发系统一般不需要。
警告
如果您正在设置公共服务器,请务必查看我们的 安全性 建议!
数据库过滤器¶
Odoo是一个多租户系统:一个Odoo系统可以运行和服务于多个数据库实例。它也是高度可定制的,自定义(从加载的模块开始)取决于“当前数据库”。
当作为已登录的公司用户使用后端(Web客户端)时,这不是问题:可以在登录时选择数据库,然后加载自定义设置。
然而,对于未登录的用户(门户网站),这是一个问题,因为他们没有绑定到数据库:Odoo需要知道应该使用哪个数据库来加载网页或执行操作。如果不使用多租户,那么这不是问题,只有一个数据库可用,但如果有多个可访问的数据库,Odoo需要一条规则来知道应该使用哪个。
这是 --db-filter
的一个目的:它指定了如何根据请求的主机名(域名)选择数据库。值是一个 正则表达式,可能包括动态注入的主机名(%h
)或通过系统访问的第一个子域(%d
)。
对于在生产环境中托管多个数据库的服务器,特别是如果使用了 website
,则 必须 设置 dbfilter,否则许多功能将无法正常工作。
配置示例¶
仅显示名称以’mycompany’开头的数据库
在 配置文件 中设置:
[options]
dbfilter = ^mycompany.*$
只显示与
www
后的第一个子域名匹配的数据库:例如,如果传入请求发送到www.mycompany.com
或mycompany.co.uk
,则会显示数据库 “mycompany”,但不会显示www2.mycompany.com
或helpdesk.mycompany.com
。
在 配置文件 中设置:
[options]
dbfilter = ^%d$
注解
设置正确的 --db-filter
是保护您的部署的重要部分。一旦它正确工作并且只匹配每个主机名的单个数据库,强烈建议阻止访问数据库管理屏幕,并使用 --no-database-list
启动参数防止列出您的数据库,并阻止访问数据库管理屏幕。另请参阅 security。
PostgreSQL¶
默认情况下,PostgreSQL仅允许通过UNIX套接字和回环连接(从”localhost”,即安装PostgreSQL服务器的同一台机器)进行连接。
UNIX socket 适用于希望 Odoo 和 PostgreSQL 在同一台机器上运行的情况,且在没有提供主机时是默认选项,但如果您希望 Odoo 和 PostgreSQL 在不同的机器上运行 1 ,则需要 监听网络接口 2 ,具体如下:
只接受回环连接并在Odoo运行的机器和PostgreSQL运行的机器之间
使用SSH隧道
_,然后配置Odoo连接到隧道的末端接受连接到安装了Odoo的机器上,可能通过ssl连接(详见 PostgreSQL连接设置 ),然后配置Odoo以通过网络连接
配置示例¶
允许本地主机上的 TCP 连接
允许来自192.168.1.x网络的TCP连接
在 /etc/postgresql/<YOUR POSTGRESQL VERSION>/main/pg_hba.conf
中设置:
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 192.168.1.0/24 md5
in /etc/postgresql/<YOUR POSTGRESQL VERSION>/main/postgresql.conf
设置:
listen_addresses = 'localhost,192.168.1.2'
port = 5432
max_connections = 80
配置Odoo¶
开箱即用,Odoo通过端口5432连接到本地的UNIX套接字上的postgres。当您的Postgres部署不是本地的和/或不使用安装默认值时,可以使用 数据库选项 来覆盖此设置。
The packaged installers will automatically
create a new user (odoo
) and set it as the database user.
数据库管理界面受
admin_passwd
设置的保护。此设置只能使用配置文件设置,并在执行数据库更改之前进行简单检查。应将其设置为随机生成的值,以确保第三方无法使用此界面。所有数据库操作都使用 数据库选项,包括数据库管理 屏幕。要使数据库管理屏幕正常工作,需要 PostgreSQL 用户具有
createdb
权限。用户可以随时删除自己拥有的数据库。为了使数据库管理界面完全无法使用,需要创建具有
no-createdb
权限的PostgreSQL用户,并且数据库必须由不同的PostgreSQL用户拥有。警告
PostgreSQL用户 不能 是超级用户
配置示例¶
连接到位于192.168.1.2的PostgreSQL服务器
端口 5432
使用 ‘odoo’ 用户账户,
使用’pwd’作为密码
仅筛选名称以’mycompany’开头的数据库
在 配置文件 中设置:
[options]
admin_passwd = mysupersecretpassword
db_host = 192.168.1.2
db_port = 5432
db_user = odoo
db_password = pwd
dbfilter = ^mycompany.*$
Odoo和PostgreSQL之间的SSL¶
自Odoo 11.0版本开始,您可以在Odoo和PostgreSQL之间强制使用SSL连接。在Odoo中,db_sslmode控制连接的SSL安全性,可选值为’disable’、’allow’、’prefer’、’require’、’verify-ca’或’verify-full’
内置服务器¶
Odoo 包括内置 HTTP、cron 和实时聊天服务器,应用多线程或多进程模式任选其一。
多线程 服务器是一个较为简单的服务器,主要用于开发、演示以及其与各种操作系统(包括 Windows)的兼容性。每个新的 HTTP 请求都会生成一个新线程,即使是像 websocket 这样的长连接也是如此。此外,还会生成额外的守护 cron 线程。由于 Python 的限制(GIL),它并不能充分利用硬件资源。
多线程服务器是默认服务器,也适用于 docker 容器。不使用 --workers
选项或将其设置为 0
,就可以选择多线程服务器。
多进程 服务器是一个功能完备的服务器,主要用于生产环境。它不受 Python 资源使用限制(GIL)的影响,因此能够充分利用硬件资源。服务器启动时会创建一组工作进程。新的 HTTP 请求由操作系统排队,直到有工作进程准备好处理它们。一个额外的事件驱动 HTTP 工作进程会在另一个端口上启动,用于实时聊天。额外的定时任务工作进程也会被启动。一个可配置的进程监视器会监控资源使用情况,并可以终止/重启失败的工作进程。
多进程服务器是可选的。可通过将 --workers
选项设置为非空整数来选择。
注解
由于多进程服务器为 Linux 服务器高度定制,因此 Windows 无法使用。
工作进程数量计算¶
经验法则:(#CPU * 2) + 1
Cron工作进程需要CPU
1个工作进程 ~= 6个并发用户
内存大小计算¶
我们认为20%的请求是重型请求,而80%的请求是较简单的请求
当所有计算字段和 SQL 请求都设计良好时,一个繁重的工作进程预计会消耗约 1GB 的 RAM。
在相同的场景中,一个轻量级的工作进程预计会消耗大约150MB的内存。
所需内存 = #worker * ( (轻型工作进程比率 * 轻型工作进程内存估算) + (重型工作进程比率 * 重型工作进程内存估算) )
在线聊天¶
在多进程模式下,会自动启动一个专用 LiveChat Worker,并通过 --gevent-port
监听。默认情况下,HTTP 请求将继续访问普通 HTTP 工作进程,而不是 LiveChat 工作进程。您必须在 Odoo 前部署一个代理,并将路径以 /websocket/
开头的传入请求重定向到 LiveChat 工作进程。您还必须在 --proxy-mode
下启动 Odoo,这样它就会使用真正的客户端头信息(如主机名、协议和 IP 地址)而不是代理头信息。
配置示例¶
带有4个CPU和8个线程的服务器
60个并发用户
60个用户 / 6 = 10 <- 理论上需要的工作人员数量
(4 * 2) + 1 = 9 <- 理论上的最大工作人数
我们将使用8个工作进程+1个cron。我们还将使用监控系统来测量CPU负载,并检查它是否在7到7.5之间。
RAM = 9 * ((0.8*150) + (0.2*1024)) ~= 3Go RAM for Odoo
在 配置文件 中:
[options]
limit_memory_hard = 1677721600
limit_memory_soft = 629145600
limit_request = 8192
limit_time_cpu = 600
limit_time_real = 1200
max_cron_threads = 1
workers = 8
HTTPS¶
无论是通过网站/网页客户端还是Web服务访问,Odoo都会以明文形式传输身份验证信息。这意味着Odoo的安全部署必须使用HTTPS3。SSL终止可以通过几乎任何SSL终止代理实现,但需要以下设置:
启用Odoo的
代理模式
。这只应在Odoo位于反向代理后启用设置SSL终止代理 (Nginx终止示例)
设置代理本身 (Nginx 代理示例)
您的 SSL 终止代理应该自动将非安全连接重定向到安全端口
配置示例¶
将http请求重定向到https
代理请求到Odoo
在 配置文件 中设置:
proxy_mode = True
在 /etc/nginx/sites-enabled/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;
}
# http -> https
server {
listen 80;
server_name odoo.mycompany.com;
rewrite ^(.*) https://$host$1 permanent;
}
server {
listen 443 ssl;
server_name odoo.mycompany.com;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
# SSL parameters
ssl_certificate /etc/ssl/nginx/server.crt;
ssl_certificate_key /etc/ssl/nginx/server.key;
ssl_session_timeout 30m;
ssl_protocols TLSv1.2;
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;
# log
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;
# Redirect websocket requests to odoo gevent port
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;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
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;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
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;
}
HTTPS 强化¶
向所有请求添加 Strict-Transport-Security
标头,以防止浏览器向此域名发送纯 HTTP 请求。您需要始终在此域名上维护一个有效的 HTTPS 服务,否则您的用户将看到安全警报或完全无法访问。
在 NGINX 中使用以下命令行,在一年内强制每个访客使用 HTTPS 连接:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
可以为 session_id
cookie 定义其他配置。可添加`安全`标志以确保不会通过 HTTP 传输,并添加`SameSite=Lax`以防止验证`CSRF`_。
# requires nginx 1.19.8
proxy_cookie_flags session_id samesite=lax secure;
将Odoo作为WSGI应用程序¶
也可以将Odoo作为标准的WSGI_应用程序进行挂载。Odoo提供了一个WSGI启动脚本的基础,名为 odoo-wsgi.example.py
。该脚本应该被定制化(可能需要从设置目录中复制),以便直接在 odoo.tools.config
中正确设置配置,而不是通过命令行或配置文件。
然而,WSGI服务器仅会为Web客户端、网站和Web服务API公开主要的HTTP端点。因为Odoo不再控制工作进程的创建,所以它无法设置cron或livechat工作进程。
定时任务工作者¶
需要启动一个内置的 Odoo 服务器与 WSGI 服务器一起运行,以处理 cron 任务。该服务器必须配置为仅处理 cron 任务,而不处理 HTTP 请求。可以通过使用 --no-http
命令行选项或将配置文件中的 http_enable = False
设置为实现此目的。
在类 Linux 系统上,建议使用多进程服务器而不是多线程服务器,这样可以更好地利用硬件并提高稳定性,即使用 --workers=-1
和 --max-cron-threads=n
cli 选项。
在线聊天¶
要正确运行即时聊天功能,必须使用与 gevent 兼容的 WSGI 服务器。该服务器应能同时处理多个长连接,但不需要很强的处理能力。所有路径以 /websocket/
开头的请求都应指向该服务器。所有其他请求都应使用普通的(基于线程/进程的)WSGI 服务器。
Odoo cron 服务器也可用于处理即时聊天请求。只需从 cron 服务器中删除 --no-http
cli 选项,并确保路径以 /websocket/
开头的请求会被定向到该服务器,或者在 --http-port
上(多线程服务器),或者在 --gevent-port
上(多处理服务器)。
提供静态文件和附件服务¶
为了开发方便,Odoo直接在其模块中提供所有静态文件和附件。但是,这在性能方面可能不是理想的,静态文件通常应该由静态HTTP服务器提供。
提供静态文件服务¶
Odoo静态文件位于每个模块的 static/
文件夹中,因此可以通过拦截所有请求到 /MODULE/static/FILE
来提供静态文件,并在各个插件路径中查找正确的模块(和文件)。
建议在网络服务器发送的所有图像上设置``Content-Security-Policy: default-src ‘none’``标头。严格来说,这并非必要,因为用户无法在模块的 static/
文件夹中修改/注入内容,而且现有图像是最终的(它们不会自行获取新资源)。不过,这是一个很好的做法。
使用上述 NGINX (https) 配置,应添加以下 map
和 location
块,以便通过 NGINX 提供静态文件。
map $sent_http_content_type $content_type_csp {
default "";
~image/ "default-src 'none'";
}
server {
# the rest of the configuration
location @odoo {
# copy-paste the content of the / location block
}
# Serve static files right away
location ~ ^/[^/]+/static/.+$ {
# root and try_files both depend on your addons paths
root ...;
try_files ... @odoo;
expires 24h;
add_header Content-Security-Policy $content_type_csp;
}
}
实际的 root
和 try_files
指令取决于安装,特别是 --addons-path
。
Example
假设 Odoo 已通过 debian 包 安装,适用于社区版和企业版,并且 --addons-path
为 '/usr/lib/python3/dist-packages/odoo/addons'
。
root
和 try_files
应该为:
root /usr/lib/python3/dist-packages/odoo/addons;
try_files $uri @odoo;
假设 Odoo 已通过 sources 安装,社区版和企业版的 git 仓库分别克隆在 /opt/odoo/community
和 /opt/odoo/enterprise
中,并且 --addons-path
是 '/opt/odoo/community/odoo/addons,/opt/odoo/community/addons,/opt/odoo/enterprise'
。
root
和 try_files
应该为:
root /opt/odoo;
try_files /community/odoo/addons$uri /community/addons$uri /enterprise$uri @odoo;
附件服务¶
附件是存储在文件存储中的文件,其访问受Odoo管理。无法通过静态Web服务器直接访问它们,因为访问它们需要在数据库中进行多次查找,以确定文件存储的位置以及当前用户是否可以访问它们。
无论如何,一旦文件被定位并且访问权限由Odoo验证通过,使用静态Web服务器而不是Odoo来提供文件是个好主意。为了让Odoo将文件服务委托给静态Web服务器,必须在静态Web服务器上启用和配置 X-Sendfile <https://tn123.org/mod_xsendfile/>
_(apache)或 X-Accel <https://www.nginx.com/resources/wiki/start/topics/examples/x-accel/>
_(nginx)扩展。设置完成后,使用 --x-sendfile
命令行标志启动Odoo(此唯一标志同时用于X-Sendfile和X-Accel)。
注解
Apache(和兼容的Web服务器)的X-Sendfile扩展不需要任何补充配置。
NGINX 的 X-Accel 扩展 确实 需要以下额外配置:
location /web/filestore { internal; alias /path/to/odoo/data-dir/filestore; }
如果您不知道文件存储的路径,请使用
--x-sendfile
选项启动 Odoo,并直接通过 Odoo 导航到/web/filestore
URL(不要通过 NGINX 导航到该 URL)。这将记录一个警告,其中包含您需要的配置信息。
安全性¶
首先,请记住,保护信息系统是一个持续的过程,而不是一次性操作。在任何时候,您的安全性只能与您环境中最薄弱的环节一样安全。
因此,请不要将本节视为可防止所有安全问题的终极措施清单。它仅旨在总结您应该确保包含在安全行动计划中的首要重要事项。其余的措施将来自于操作系统和发行版的最佳安全实践,用户、密码和访问控制管理方面的最佳实践等。
在部署面向互联网的服务器时,请务必考虑以下与安全相关的主题:
始终设置一个强大的超级管理员密码,并在系统设置完成后立即限制对数据库管理页面的访问。请参阅 数据库管理器安全性。
为所有数据库的所有管理员账户选择唯一的登录名和强密码。不要使用 ‘admin’ 作为登录名。不要将这些登录名用于日常操作,仅用于控制/管理安装。 永远不要 使用任何默认密码,如 admin/admin,即使是用于测试/暂存数据库。
不要在面向互联网的服务器上安装演示数据。包含演示数据的数据库包含默认的登录名和密码,这些信息可能被用来进入您的系统并造成严重问题,即使在暂存/开发系统上也是如此。
使用适当的数据库筛选器 (
--db-filter
) 根据主机名限制数据库的可见性。请参阅:db_filter。您还可以使用-d
来提供您自己的(逗号分隔的)可用数据库列表,以便从中进行筛选,而不是让系统从数据库后端获取所有数据库。一旦你的
db_name
和dbfilter
配置完成,并且每个主机名仅匹配一个数据库,你应该将list_db
配置选项设置为False
,以完全阻止数据库列表的显示,并阻止访问数据库管理界面(这也作为--no-database-list
命令行选项提供)确保 PostgreSQL 用户 (
--db_user
) 不是 超级用户,并且您的数据库由不同的用户拥有。例如,如果您使用专用的非特权db_user
,它们可以由postgres
超级用户拥有。另请参阅 配置Odoo。定期安装最新版本的构建,可以通过GitHub或从https://www.odoo.com/page/download或http://nightly.odoo.com下载最新版本来保持安装程序更新。
将服务器配置为多进程模式,并设置适合您典型使用情况的限制(内存/CPU/超时)。另请参阅: 内置服务器 。
在一个提供有效SSL证书的Web服务器后面运行Odoo,以防止窃听明文通信。SSL证书价格便宜,并且有很多免费选项。配置Web代理以限制请求大小,设置适当的超时时间,然后启用
代理模式
选项。另请参阅 HTTPS 。如果您需要允许远程SSH访问您的服务器,请确保为 所有 帐户设置强密码,而不仅仅是
root
。强烈建议完全禁用基于密码的身份验证,仅允许公钥身份验证。还要考虑通过VPN限制访问,仅允许防火墙中的受信任IP,和/或运行类似fail2ban
或等效的暴力破解检测系统。考虑在您的代理或防火墙上安装适当的速率限制,以防止暴力攻击和拒绝服务攻击。另请参阅 阻止暴力攻击 以获取具体措施。
许多网络提供商提供分布式拒绝服务攻击(DDOS)的自动缓解,但这通常是一项可选服务,因此您应该与他们咨询。
如果可能的话,请将公共演示/测试/暂存实例托管在与生产实例不同的机器上。并采取与生产相同的安全预防措施。
如果您的公共面向的Odoo服务器可以访问敏感的内部网络资源或服务(例如通过私有VLAN),请实施适当的防火墙规则来保护这些内部资源。这将确保Odoo服务器不能被意外使用(或由于恶意用户行为)来访问或干扰这些内部资源。通常可以通过在防火墙上应用出站默认拒绝规则,然后仅明确授权Odoo服务器需要访问的内部资源来实现。
Systemd IP流量访问控制<http://0pointer.net/blog/ip-accounting-and-access-lists-with-systemd.html>
_也可能对实施基于进程的网络访问控制有用。如果您的公共Odoo服务器位于Web应用程序防火墙、负载均衡器、透明DDoS保护服务(如CloudFlare)或类似的网络级设备后面,您可能希望避免直接访问Odoo系统。通常很难保持Odoo服务器的终端IP地址的机密性。例如,当从Odoo查询公共系统或发布电子邮件时,它们可能出现在Web服务器日志中或邮件头中。在这种情况下,您可能希望配置防火墙,使终端点除了来自WAF、负载均衡器或代理服务的特定IP地址外,不可公开访问。像CloudFlare这样的服务提供商通常为此维护其IP地址范围的公共列表。
如果您正在托管多个客户,请使用容器或适当的“监狱”技术将客户数据和文件彼此隔离。
设置每日备份数据库和文件存储数据,并将其复制到远程归档服务器,该服务器无法从服务器本身访问。
强烈建议在 Linux 平台上部署 Odoo,而不是 Windows 平台。如果您还是选择在 Windows 平台上部署,则应对服务器进行彻底的安全加固审查,这不在本指南的讨论范围之内。
阻止暴力攻击¶
对于面向互联网的部署,对用户密码进行暴力攻击非常普遍,因此Odoo服务器不应忽视此威胁。每当进行登录尝试时,Odoo都会发出日志记录,并报告结果:成功或失败,以及目标登录和源IP。
日志条目将具有以下格式。
登录失败:
2018-07-05 14:56:31,506 24849 INFO db_name odoo.addons.base.res.res_users: Login failed for db:db_name login:admin from 127.0.0.1
成功登录:
2018-07-05 14:56:31,506 24849 INFO db_name odoo.addons.base.res.res_users: Login successful for db:db_name login:admin from 127.0.0.1
这些日志可以轻松地通过入侵防御系统(如 fail2ban
)进行分析。
例如,以下 fail2ban 过滤器定义应该匹配一个失败的登录:
[Definition]
failregex = ^ \d+ INFO \S+ \S+ Login failed for db:\S+ login:\S+ from <HOST>
ignoreregex =
这可以与监狱定义一起使用,以在HTTP(S)上阻止攻击IP。
当在1分钟内检测到来自同一IP的10次登录尝试失败时,以下是阻止该IP 15分钟的示例:
[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
数据库管理器安全性¶
在 配置Odoo 中提到了 admin_passwd
。
此设置用于所有数据库管理屏幕(用于创建、删除、转储或恢复数据库)。
如果完全不能访问管理界面,您应该将 list_db
配置选项设置为 False
,以阻止访问所有数据库选择和管理界面。
警告
强烈建议禁用数据库管理器用于任何面向互联网的系统!它是作为开发/演示工具而设计的,以便快速创建和管理数据库。它不适用于生产环境,甚至可能向攻击者公开危险功能。它也不适用于处理大型数据库,可能会触发内存限制。
在生产系统中,数据库管理操作应该由系统管理员执行,包括新数据库的配置和自动备份。
请确保设置合适的 db_name
参数(以及可选的 dbfilter
),以便系统能够确定每个请求的目标数据库,否则用户将被阻止,因为他们将无法自行选择数据库。
如果管理界面只能从一组选定的机器访问,请使用代理服务器的功能来阻止访问所有以 /web/database
开头的路由,除了(也许)显示数据库选择界面的 /web/database/selector
。
如果要保留数据库管理界面的访问权限,则必须更改 admin_passwd
设置,以避免使用默认的 admin
密码。在允许数据库更改操作之前,将检查此密码。
应该安全地存储,并随机生成,例如:
$ python3 -c 'import base64, os; print(base64.b64encode(os.urandom(24)))'
生成一个32字符的伪随机可打印字符串。
重置主密码¶
在某些情况下,主密码可能会丢失或泄露,需要重置。以下流程适用于 Odoo 本地数据库的系统管理员,详细介绍了如何手动重置并重新加密主密码。
另请参阅
有关更改 Odoo.com 账户密码的更多信息,请参阅此文档:修改 Odoo.com 账户密码。
创建新的本地数据库时,会生成一个随机的主密码。Odoo 建议使用此密码来保护数据库。默认情况下会启用此密码,因此任何 Odoo 本地部署都有一个安全的主密码。
警告
创建 Odoo 本地数据库时,安装程序对互联网上的任何人都是可访问的,直到设置此密码以保护数据库为止。
主密码在 Odoo 配置文件中指定(odoo.conf
或 `odoorc`(隐藏文件))。需要通过图形用户界面(GUI)修改、创建或删除数据库时,需要 Odoo 主密码。
定位配置文件¶
首先,打开 Odoo 配置文件 (odoo.conf
或 odoorc
(隐藏文件)).
配置文件位于: c:\ProgramFiles\Odoo{VERSION}\server\odoo.conf
根据 Odoo 在 Linux 机器上的安装方式,配置文件位于以下两个不同位置之一:
包安装:
/etc/odoo.conf
源安装:
~/.odoorc
更改旧密码¶
打开相应的文件后,继续将配置文件中的旧密码修改为临时密码。
找到配置文件后,使用 (GUI(图形用户界面)) 打开它。只需双击文件即可实现此操作。然后,设备应该有一个默认的 GUI(图形用户界面) 来打开该文件。
接下来,将主密码行 admin_passwd = $pbkdf2-sha…
修改为 admin_passwd = newpassword1234
,例如。此密码可以是任何内容,只要暂时保存即可。确保修改 =
后的所有字符。
Example
该行显示如下:admin_passwd = $pbkdf2-sh39dji295.59mptrfW.9z6HkA$w9j9AMVmKAP17OosCqDxDv2hjsvzlLpF8Rra8I7p/b573hji540mk/.3ek0lg%kvkol6k983mkf/40fjki79m
修改后的行如下所示:admin_passwd = newpassword1234
使用以下详细说明的 Unix 命令修改主密码行。
通过安全外壳(SSH)协议连接到 Odoo 服务器的终端,并编辑配置文件。要修改配置文件,请输入以下命令:sudo nano /etc/odoo.conf
打开配置文件后,将主密码行 admin_passwd = $pbkdf2-sha…
修改为 admin_passwd = newpassword1234
。此密码可以是任意值,只要暂时保存即可。确保修改 =
后的所有字符。
Example
该行显示如下:admin_passwd = $pbkdf2-sh39dji295.59mptrfW.9z6HkA$w9j9AMVmKAP17OosCqDxDv2hjsvzlLpF8Rra8I7p/b573hji540mk/.3ek0lg%kvkol6k983mkf/40fjki79m
修改后的行如下所示:admin_passwd = newpassword1234
重要
必须将密码更改为其他内容,而不是通过在行首添加分号 ;
来触发新的密码重置。这确保了在整个密码重置过程中数据库的安全性。
重启 Odoo 服务器¶
设置临时密码后,必须 重新启动 Odoo 服务器。
要重启 Odoo 服务器,首先在 Windows 的 搜索 栏中输入 services
。然后,选择 服务 应用程序,并向下滚动到 Odoo 服务。
接下来,右键点击 Odoo,然后选择 启动 或 重新启动。此操作将手动重启 Odoo 服务器。
通过输入以下命令重启 Odoo 服务器:sudo service odoo15 restart
注解
将 odoo
后的数字更改为服务器运行的特定版本。
使用网页界面重新加密密码¶
首先,在浏览器中导航到 /web/database/manager
或 http://server_ip:port/web/database/manager
。
注解
将 server_ip
替换为数据库的 IP 地址。将 port
替换为数据库可访问的端口号。
接下来,点击 设置主密码,并在 主密码 字段中输入之前选择的临时密码。完成此步骤后,输入 新主密码。一旦点击 继续 按钮,新主密码 将被哈希(或加密)。
此时,密码已成功重置,配置文件中现在显示新密码的哈希版本。
另请参阅
有关 Odoo 数据库安全的更多信息,请参阅此文档:数据库管理器安全性。
支持的浏览器¶
Odoo支持市场上所有主要的桌面和移动浏览器,只要它们得到其发布商的支持。
以下是支持的浏览器:
谷歌浏览器
Mozilla Firefox
微软 Edge
苹果Safari
警告
请在提交错误报告之前确保您的浏览器是最新的,并且仍然得到其发布者的支持。
注解
自Odoo 13.0起,支持ES6。因此,不再支持IE。