跳至内容

DevPilot 文档

Odoo 专用 AI 远程开发平台,从编码到部署一站搞定。

平台介绍

DevPilot 是专为 Odoo 开发者打造的 AI 远程开发平台。详细内容待补充。

注册与试用

注册流程与 7 天试用期说明。详细内容待补充。

5 分钟跑通第一个项目

从添加服务器到首次 AI 部署的完整流程。详细内容待补充。

项目管理

项目创建、配置、版本选择与仓库关联。详细内容待补充。

AI 对话开发

AI 对话功能、支持的代码生成类型、使用技巧。详细内容待补充。

服务器管理

添加服务器、SSH 配置、连接测试。详细内容待补充。

Git 仓库管理

仓库关联、分支选择、代码克隆。详细内容待补充。

一键部署

拉取代码、重启服务、升级模块的 SSH 脚本配置。详细内容待补充。

Rules & Skills

平台预置的 Odoo 开发规则与技能模板说明。详细内容待补充。

从零新建 Odoo 模块

完整演示从需求描述到线上部署的全过程。详细内容待补充。

修复线上 Bug

通过 AI 对话定位并修复线上问题的实际案例。详细内容待补充。

多服务器部署流程

测试环境与生产环境的分步部署策略。详细内容待补充。

Docker 部署 Odoo 18

本指南面向希望自己动手部署 Odoo 18 的开发者。通过 Docker + 宿主机 PostgreSQL 的方式,你可以在一台 Ubuntu 服务器上快速跑起一个可长期维护的 Odoo 实例。

方案概述

  • Odoo:运行在 Docker 容器中,使用官方镜像。
  • PostgreSQL:运行在宿主机,方便备份、调优和多个 Odoo 实例共享。
  • 代码:通过 Git 克隆到宿主机,以 volume 形式挂载进容器。
  • 网络:容器通过 host.docker.internal 连接宿主机 PostgreSQL。

环境要求

  • Ubuntu 22.04 LTS 或更新版本(推荐服务器版)。
  • 至少 2 核 CPU、4 GB 内存、40 GB 磁盘。
  • 拥有 sudo 权限的普通用户(示例使用 ubuntu)。
  • 一个固定公网 IP 或域名(可选,用于外网访问)。

1. 安装 Docker 与 PostgreSQL

先更新系统并安装 Docker:

sudo apt-get update
sudo apt-get install -y docker.io docker-compose-plugin

把当前用户加入 docker 组,避免每次用 sudo

sudo usermod -aG docker $USER
newgrp docker

安装并启动 PostgreSQL:

sudo apt-get install -y postgresql postgresql-contrib
sudo systemctl enable --now postgresql

2. 配置 PostgreSQL

创建 odoo 数据库用户并设置密码:

sudo -u postgres createuser -s odoo
sudo -u postgres psql -c "ALTER USER odoo WITH PASSWORD '你的强密码';"

让 PostgreSQL 监听所有地址(容器需要访问):

sudo sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/" /etc/postgresql/14/main/postgresql.conf
sudo bash -c 'echo "host all all 172.16.0.0/12 scram-sha-256" >> /etc/postgresql/14/main/pg_hba.conf'
sudo systemctl restart postgresql

放行 Docker 网段访问 PostgreSQL:

sudo ufw allow from 172.16.0.0/12 to any port 5432 proto tcp

3. 准备 Odoo 代码

创建工作目录并克隆 Odoo 源码与你的自定义模块:

mkdir -p /opt/odoo/myinstance/addons
cd /opt/odoo/myinstance
git clone -b 18.0 --depth 1 https://github.com/odoo/odoo.git ./addons/odoo-core
git clone https://你的仓库地址 ./addons/my-custom-module

4. 创建 odoo.conf

创建 /opt/odoo/myinstance/config/odoo.conf

[options]
admin_passwd = 你的强密码
db_host = host.docker.internal
db_port = 5432
db_user = odoo
db_password = 你的强密码
db_name = myinstance
db_filter = ^myinstance$
addons_path = /mnt/odoo-core/addons,/mnt/extra-addons
proxy_mode = True
workers = 4
limit_memory_soft = 0
limit_memory_hard = 0

5. 创建 docker-compose.yml

创建 /opt/odoo/myinstance/docker-compose.yml

services:
  odoo:
    image: odoo:18.0
    container_name: odoo_myinstance
    restart: unless-stopped
    ports:
      - "8069:8069"
    extra_hosts:
      - "host.docker.internal:host-gateway"
    environment:
      - HOST=host.docker.internal
      - USER=odoo
      - PASSWORD=你的强密码
    volumes:
      - odoo_web_data:/var/lib/odoo
      - ./config:/etc/odoo
      - ./addons/odoo-core:/mnt/odoo-core
      - ./addons:/mnt/extra-addons
      - /usr/share/fonts:/usr/share/fonts:ro
    command: odoo --config /etc/odoo/odoo.conf
volumes:
  odoo_web_data:
    name: odoo_myinstance_web_data

6. 启动 Odoo

cd /opt/odoo/myinstance
docker compose up -d

等待 10-30 秒后访问:

http://服务器IP:8069

如果 PostgreSQL 连接正常,Odoo 会自动创建空数据库并跳转到登录页。

7. 从备份恢复数据库(可选)

如果你有一个 Odoo 备份 zip 文件,先临时开启数据库管理器:

docker exec -i odoo_myinstance odoo --config /etc/odoo/odoo.conf --stop-after-init --no-http --init base

更推荐的做法是:在 odoo.conf 中先注释掉 db_namedb_filter,设置 list_db = True,重启容器,然后通过 Web 界面的 Manage Databases → Restore 上传 zip 恢复。恢复完成后再改回最终配置。

另一种命令行方式(适合自动化脚本):

curl -X POST \
  -F "master_pwd=你的强密码" \
  -F "backup_file=@/path/to/backup.zip" \
  -F "copy=true" \
  -F "name=myinstance" \
  http://localhost:8069/web/database/restore

成功后 Odoo 会返回 303 重定向。

8. 查看日志

docker logs -f --tail 100 odoo_myinstance

常见问题

容器连不上 PostgreSQL

检查 listen_addressespg_hba.conf 和 ufw 规则。在容器内测试:

docker exec -it odoo_myinstance bash
apt-get update && apt-get install -y postgresql-client
PGPASSWORD=你的强密码 psql -h host.docker.internal -U odoo -d postgres

字体警告 Can't find .pfb for face 'Courier'

在宿主机安装字体并挂载进容器:

sudo apt-get install -y gsfonts fonts-dejavu
cd /opt/odoo/myinstance && docker compose restart

端口被占用

sudo docker ps --filter "publish=8069"
sudo docker rm -f 容器ID

Deb 包部署 Odoo 18

本指南介绍如何通过官方 Debian 包在 Ubuntu 服务器上部署 Odoo 18。相比 Docker,Deb 部署更贴近传统运维方式,适合需要深度定制系统环境或长期稳定运行的场景。

方案概述

  • Odoo:通过官方 deb 包安装,作为系统服务运行。
  • PostgreSQL:通过 apt 安装在同一台服务器。
  • 代码:自定义模块放在 /opt/odoo/myinstance/addons/,并在配置文件中指定。
  • 服务:使用 systemd 管理 Odoo 进程,支持开机自启。

环境要求

  • Ubuntu 22.04 LTS(Odoo 18 官方 deb 包推荐环境)。
  • 至少 2 核 CPU、4 GB 内存、40 GB 磁盘。
  • 拥有 sudo 权限的普通用户。
  • 建议关闭或正确配置系统默认的 Odoo 服务,避免端口冲突。

1. 安装 PostgreSQL

sudo apt-get update
sudo apt-get install -y postgresql postgresql-contrib
sudo systemctl enable --now postgresql

创建 odoo 数据库用户:

sudo -u postgres createuser -s odoo
sudo -u postgres psql -c "ALTER USER odoo WITH PASSWORD '你的强密码';"

2. 安装 Odoo 18

从 Odoo 官方 nightly 仓库安装:

wget -q -O - https://nightly.odoo.com/odoo.key | sudo gpg --dearmor -o /usr/share/keyrings/odoo-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/odoo-archive-keyring.gpg] https://nightly.odoo.com/18.0/nightly/deb/ ./" | sudo tee /etc/apt/sources.list.d/odoo.list
sudo apt-get update
sudo apt-get install -y odoo

安装完成后,系统默认会启动一个名为 odoo 的服务,占用 8069 端口。如果你要部署多实例,建议先停止并禁用默认服务:

sudo systemctl stop odoo
sudo systemctl disable odoo

3. 准备实例目录与代码

创建项目目录:

sudo mkdir -p /opt/odoo/myinstance/addons
sudo mkdir -p /opt/odoo/myinstance/config
sudo mkdir -p /var/log/odoo
sudo chown -R odoo:odoo /opt/odoo/myinstance
sudo chown -R odoo:odoo /var/log/odoo

克隆 Odoo 源码和自定义模块:

cd /opt/odoo/myinstance
sudo -u odoo git clone -b 18.0 --depth 1 https://github.com/odoo/odoo.git ./addons/odoo-core
sudo -u odoo git clone https://你的仓库地址 ./addons/my-custom-module

4. 创建 odoo.conf

创建 /opt/odoo/myinstance/config/odoo.conf

[options]
admin_passwd = 你的强密码
db_host = localhost
db_port = 5432
db_user = odoo
db_password = 你的强密码
db_name = myinstance
db_filter = ^myinstance$
addons_path = /opt/odoo/myinstance/addons/odoo-core/addons,/opt/odoo/myinstance/addons
logfile = /var/log/odoo/myinstance.log
proxy_mode = True
workers = 4
limit_memory_soft = 0
limit_memory_hard = 0

设置权限:

sudo chown -R odoo:odoo /opt/odoo/myinstance/config

5. 创建 systemd 服务

创建 /etc/systemd/system/odoo-myinstance.service

[Unit]
Description=Odoo 18 - myinstance
After=network.target postgresql.service

[Service]
Type=simple
User=odoo
Group=odoo
ExecStart=/usr/bin/odoo --config /opt/odoo/myinstance/config/odoo.conf
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

启动并启用:

sudo systemctl daemon-reload
sudo systemctl enable --now odoo-myinstance

6. 验证启动

sudo systemctl status odoo-myinstance
sudo tail -f /var/log/odoo/myinstance.log

访问 http://服务器IP:8069,Odoo 会自动创建数据库并进入登录页。

7. 从备份恢复数据库(可选)

如果你有一个 Odoo 备份 zip,可以先用命令行恢复:

sudo -u odoo odoo shell --config /opt/odoo/myinstance/config/odoo.conf -d myinstance --no-http

更常见的方式是临时开启数据库管理器:在 odoo.conf 中注释 db_namedb_filter,设置 list_db = True,重启服务后通过 Manage Databases → Restore 上传 zip。

或者使用 curl 调用 Restore API:

curl -X POST \
  -F "master_pwd=你的强密码" \
  -F "backup_file=@/path/to/backup.zip" \
  -F "copy=true" \
  -F "name=myinstance" \
  http://localhost:8069/web/database/restore

恢复后若遇到 base_registry_signaling 序列冲突,执行:

sudo -u postgres psql -d myinstance -c "DROP SEQUENCE IF EXISTS base_registry_signaling;"

8. 配置 nginx 反向代理(可选)

创建 /etc/nginx/sites-available/myinstance

server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://127.0.0.1:8069;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /longpolling {
        proxy_pass http://127.0.0.1:8072;
    }
}

启用站点:

sudo ln -s /etc/nginx/sites-available/myinstance /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

常见问题

默认 odoo 服务占用 8069 端口

sudo systemctl stop odoo
sudo systemctl disable odoo

字体警告 Can't find .pfb for face 'Courier'

sudo apt-get install -y gsfonts fonts-dejavu
sudo systemctl restart odoo-myinstance

数据库恢复后登录密码不对

通过 odoo shell 重置指定用户密码:

echo "env['res.users'].search([('login','=','admin')]).write({'password':'新密码'});env.cr.commit()" | \
  sudo -u odoo odoo shell --config /opt/odoo/myinstance/config/odoo.conf -d myinstance --no-http

权限问题导致 Odoo 无法写日志

sudo chown -R odoo:odoo /var/log/odoo
sudo chmod 755 /var/log/odoo

套餐与配额

各套餐对应的配额限制与重置规则。详细内容待补充。

升级与续费

升降级规则、续费方式与支付说明。详细内容待补充。

数据安全

代码归属、传输加密、AI 隐私政策。详细内容待补充。

账号注销

注销流程、数据保留与删除策略。详细内容待补充。

试用相关

试用期功能范围、数据保留等常见问题。详细内容待补充。

规则反馈

如何提交规则反馈工单及处理流程。详细内容待补充。

联系支持

技术支持渠道与响应时效。详细内容待补充。

联系客服