Some links in this post may be affiliate links. We may get paid if you buy something or take an action after clicking one of these, but without addictional costs for you compared to direct buying.

Installing an ERP and CRM with Odoo on Raspberry Pi

odoo-raspberry-featured-image_2
5
(2)

Big companies usually spend a lot of money to have complete ERP (Enterprise Resource Planning) and CRM (Customer Relationship Management) solutions. These products usually support business and internal tasks to perform correctly complex processes. Small companies usually adopt low-cost solutions (sometimes simple spreadsheets).

In this article, we’ll see a very simple way to setup Odoo on Raspberry Pi 3 model B+. Don’t expect surprising performances from this experiment, but this can be a funny way to play with your Raspberry Pi.

What is Odoo

Odoo, formerly known as OpenERP, is a suite of open-source business apps written in Python and released under the AGPL license. This is a suite of applications born to support companies in their business and internal processes. It has an Open Source basis (Community Edition), but its features can be easily expanded just adding modules. Odoo has also a Customer Support and Commercial features to support the needs of all companies.

What We Need

Raspberry PI 3 Model B+ image

As usual, I suggest adding from now to your favorite e-commerce shopping cart all needed hardware, so that at the end you will be able to evaluate overall costs and decide if continuing with the project or removing them from the shopping cart. So, hardware will be only:

Check hardware prices with following links:

Amazon raspberry pi boards box
Amazon Micro SD box
Amazon Raspberry PI Power Supply box

Step-by-Step Guide

Preparing the Operating System

Start installing Raspberry PI OS Lite as operating system.

Our Odoo installation will be powered by defaul with a PostgreSQL database.

We’ll also use the root account. It is a simplification that we can apply to our development environment.  To unlock root user, from terminal:

sudo passwd

and then insert twice your desired password for root user. The login as root by typing:

su root

It is strongly recommended that you have updated your installation before starting:

apt update
apt upgrade

Install PostgreSQL

Installing the database is as simple as running a single command:

apt install postgresql -y

Installing Odoo

Also installing our Odoo instance is simple, but requires adding a new key and apt source :

wget -O - https://nightly.odoo.com/odoo.key | apt-key add -
echo "deb http://nightly.odoo.com/12.0/nightly/deb/ ./" >> /etc/apt/sources.list.d/odoo.list

then update the new source and install odoo:

apt update && apt install odoo

… and wait… Installation will require a while.

Once finished, connect with your browser to the following URL (substitute <<YourRaspberryIpAddress>> with the required IP address):

http://<<YourRaspberryIpAddress>>:8069

You will see the following initialization page:

odoo install page

Complile required fields (at your choice) and click on “Create Database”. Note that the field Email will be used as username, so in this filed you can also just use a simple username instead of a complete email address.

Again, wait a while to complete the database configuration. Because of the heavy setup process, the page could result in timeout. In this case, launch again in your browser the URL:

http://<<YourRaspberryIpAddress>>:8069

Login page will appear:

Odoo_install_2

You should use your email/username and password. If everything is ok, you will be logged on. If someting went wrong because of the heavy install, don’t give it up! You can use the admin password recover procedure.

Admin Password Recover Procedure

Type the following terminal command:

nano /etc/odoo/odoo.conf

Uncomment the “admin_passwd = admin” line, by eliminating commas. So, your odoo.conf should appear as the following:

[options]
; This is the password that allows database operations:
admin_passwd = admin
db_host = False
db_port = False
db_user = odoo
db_password = False
; addons_path = /usr/lib/python3/dist-packages/odoo/addons

Edit the admin password with whatever you want, save and exit. Restart Odoo:

systemctl restart odoo

Re-launch the default URL (http://<<YourRaspberryIpAddress>>:8069) in your browser and login using “admin” as Email and what you set in odoo.conf as password. If left as mine above, it will be:

Email: admin

Password: admin

You should now be able to use your Odoo installation.

Enjoy!

How useful was this post?

Click on a star to rate it anonymously!

Average rating 5 / 5. Vote count: 2

No votes so far! Be the first to rate this post.

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

42 comments

  1. Just for information:
    I tried with a Raspberry Pi 3B+ and nice to see the first screen after the installation (initialization page) but after setting up the database, i got always a timeout (trying to show the login page) 🙁
    So no working for me with a version lower than the Raspberry Pi 4!

    1. Hi Adam,
      as said in this post, installation process after database setup is heavy and may lead to a timeout page. In this case, just wait a while and simply try querying again “http://YourRaspberryIpAddress:8069” page. This time it should work. Let me know if it goes ok.
      Many thanks for your feedback

      1. Thanks,
        With my Raspberry pi 4 no problem, no timeout, all working perfectly 🙂
        The only step to add for me:
        Not to forget to setting locale config before installing PostgreSQL and odoo.
        Just follow these commands and PERL will not show any error:

        $ export LANGUAGE=en_US.UTF-8
        $ export LANG=en_US.UTF-8
        $ export LC_ALL=en_US.UTF-8
        $ locale-gen en_US.UTF-8
        $ dpkg-reconfigure locales

        *My first comment was concerning the installation in a Raspberry pi 3, I tried twice and was impossible to run it. But anyways, now with the Raspberry pi 4 everything runs great 🙂

        1. Thank you for your feedback, Adam. Addictional ino for Raspberry PI 3B users: to have it working in setup phase, but generally to have the best from Raspberry PI, it is better to use performing SD cards. Performing SD card have the same effect that SDD disks have vs HDD disks on personal computers: if you boost speed on media hosting your OS, you have an overall improvement in performances. Other optimization tricks can be found at https://peppe8o.com/4-tricks-to-improve-raspberry-pi-performance-and-power-consuption/

  2. Hello,
    During the installation I got this error:
    Errors were encountered while processing:
    odoo
    E: Sub-process /usr/bin/dpkg returned an error code (1)

    Can you please help?

    1. This is a generic final error alert. The cause should be available from previous terminal rows while installing, so I need to get the specific error to help you.
      Common causes may be a missing package from required ones, a missing permission, a missing folder, etc. Please try again installation process being aware to follow all steps (from update/upgrade ones) and post all error parts from your terminal

  3. Thanks for this post!!!!!
    Can I change Odoo 12 by 14 in the installing odoo step?

    Sorry for my english, I speack spanish

    Maxi

    1. Hi Maxi,
      please try using same steps (should not change) and let me know if it works or if you have issues. Thanks, Giuseppe

  4. Thank you for the tutorial. I was able to get to the point where I can create a database but after doing so and waiting a while, once I reload the website, I get a temporary error 500.
    How can this be troubleshoooted?
    Thank you

    1. Hi Eliseu,
      please use the Admin Password Recover procedure step. The heavy database setup procedure can bring to 500 server error in Raspberry PI (expecially with not performing micro SD cards). However, the admin password recover procedure should do the trick. Please let me know if it works.

      1. Hi Peppe8o,
        what I forgott to mention, I am trying this on a Raspberry Pi 2 with 32 bit OS (Maybe this is an issue? I have just ordered a new Raspberry PI 4 and will try it again once it has been delivered).

        I have just done everything from scratch again, but same result. After creating the database and waiting a while, error 500. I than tried the admin password recover procedure, but still getting teh 500 error.

        This is the content of the log file after restarting the odoo service, maybe you can recognize something where the problem might be?
        2020-11-11 14:27:35,441 1000 INFO ? odoo.service.server: Initiating shutdown
        2020-11-11 14:27:35,442 1000 INFO ? odoo.service.server: Hit CTRL-C again or send a second signal to force the shutdown.
        2020-11-11 14:27:42,554 1070 INFO ? odoo: Odoo version 14.0-20201111
        2020-11-11 14:27:42,556 1070 INFO ? odoo: Using configuration file at /etc/odoo/odoo.conf
        2020-11-11 14:27:42,557 1070 INFO ? odoo: addons paths: [‘/usr/lib/python3/dist-packages/odoo/addons’, ‘/var/lib/odoo/.local/share/Odoo/addons/14.0’]
        2020-11-11 14:27:42,558 1070 INFO ? odoo: database: odoo@default:default
        2020-11-11 14:27:44,456 1070 INFO ? odoo.addons.base.models.ir_actions_report: You need Wkhtmltopdf to print a pdf version of the reports.
        2020-11-11 14:27:44,940 1070 WARNING ? odoo.addons.base.models.res_currency: The num2words python library is not installed, amount-to-text features won’t be fully available.
        2020-11-11 14:27:45,104 1070 INFO ? odoo.service.server: HTTP service (werkzeug) running on raspberrypi:8069
        2020-11-11 14:29:43,878 1070 INFO ? odoo.http: HTTP Configuring static files
        2020-11-11 14:29:44,222 1070 INFO itsn odoo.modules.loading: loading 1 modules…
        2020-11-11 14:29:44,492 1070 INFO itsn odoo.modules.loading: 1 modules loaded in 0.27s, 0 queries (+0 extra)
        2020-11-11 14:29:44,503 1070 ERROR itsn odoo.modules.loading: Some modules have inconsistent states, some dependencies may be missing: [‘auth_totp’, ‘base_import’, ‘odoo_referral’, $
        2020-11-11 14:29:45,791 1070 INFO itsn odoo.modules.loading: Modules loaded.
        2020-11-11 14:29:45,818 1070 INFO itsn odoo.addons.base.models.ir_http: Generating routing map for key None
        2020-11-11 14:29:46,200 1070 INFO itsn werkzeug: 127.0.0.1 – – [11/Nov/2020 14:29:46] “GET / HTTP/1.1” 303 – 12 0.087 2.203
        2020-11-11 14:29:47,177 1070 WARNING ? odoo.addons.base.models.ir_cron: Skipping database itsn because of modules to install/upgrade/remove.
        2020-11-11 14:29:48,952 1070 INFO itsn werkzeug: 127.0.0.1 – – [11/Nov/2020 14:29:48] “GET /web HTTP/1.1” 303 – 1 0.002 0.022
        2020-11-11 14:29:49,131 1070 INFO itsn werkzeug: 127.0.0.1 – – [11/Nov/2020 14:29:49] “GET /web/login HTTP/1.1” 500 – 4 0.030 0.063
        2020-11-11 14:29:49,204 1070 ERROR itsn werkzeug: Error on request:
        Traceback (most recent call last):
        File “/usr/lib/python3/dist-packages/werkzeug/serving.py”, line 270, in run_wsgi
        execute(self.server.app)
        File “/usr/lib/python3/dist-packages/werkzeug/serving.py”, line 258, in execute
        application_iter = app(environ, start_response)
        File “/usr/lib/python3/dist-packages/odoo/service/server.py”, line 440, in app
        return self.app(e, s)
        File “/usr/lib/python3/dist-packages/odoo/service/wsgi_server.py”, line 124, in application
        return application_unproxied(environ, start_response)
        File “/usr/lib/python3/dist-packages/odoo/service/wsgi_server.py”, line 99, in application_unproxied
        result = odoo.http.root(environ, start_response)
        File “/usr/lib/python3/dist-packages/odoo/http.py”, line 1294, in __call__
        return self.dispatch(environ, start_response)
        File “/usr/lib/python3/dist-packages/odoo/http.py”, line 1262, in __call__
        return self.app(environ, start_wrapped)
        File “/usr/lib/python3/dist-packages/werkzeug/wsgi.py”, line 766, in __call__
        return self.app(environ, start_response)
        File “/usr/lib/python3/dist-packages/odoo/http.py”, line 1464, in dispatch
        result = ir_http._dispatch()
        File “/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_http.py”, line 241, in _dispatch
        return cls._handle_exception(e)
        File “/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_http.py”, line 209, in _handle_exception
        return request._handle_exception(exception)
        File “/usr/lib/python3/dist-packages/odoo/http.py”, line 743, in _handle_exception
        return super(HttpRequest, self)._handle_exception(exception)
        File “/usr/lib/python3/dist-packages/odoo/http.py”, line 314, in _handle_exception
        raise exception.with_traceback(None) from new_cause
        ValueError: External ID not found in the system: web.login – – –
        2020-11-11 14:29:50,096 1070 INFO itsn werkzeug: 127.0.0.1 – – [11/Nov/2020 14:29:50] “GET /favicon.ico HTTP/1.1” 404 – 2 0.018 0.031

        Thank you

        1. Hi Eliseu,
          please try with RPI4. Installation process is already heavy for Raspberry PI 3 model B+, so older models can have too low performances to complete initialization process, resulting in inconsistent modules if timeouts occur during setup.

          Let me know if other issues occur with the new PI.

          Giuseppe

  5. I am getting an error for the step: Installing Odoo:

    Warning: apt-key output should not be parsed (stdout is not a terminal)

      1. This is from my putty session. I’m a new user so I’m sure its something easy! 🙂

        root@raspberrypi:/home/pi# wget -O – https://nightly.odoo.com/odoo.key | apt-key add -echo “deb http://nightly.odoo.com/12.0/nightly/deb/ ./” >> /etc/apt/sources.list.d/odoo.list
        –2021-02-06 14:32:34– https://nightly.odoo.com/odoo.key
        Resolving nightly.odoo.com (nightly.odoo.com)… 178.33.123.40
        Connecting to nightly.odoo.com (nightly.odoo.com)|178.33.123.40|:443… connected.
        Warning: apt-key output should not be parsed (stdout is not a terminal)
        HTTP request sent, awaiting response… 200 OK
        Length: 3112 (3.0K) [application/octet-stream]
        Saving to: ‘STDOUT’

        – 0%[ ] 0 –.-KB/s in 0s

        Cannot write to ‘-’ (Broken pipe).
        root@raspberrypi:/home/pi# apt update && apt install odoo
        E: Type ‘gpg’ is not known on line 1 in source list /etc/apt/sources.list.d/odoo.list
        E: The list of sources could not be read.
        root@raspberrypi:/home/pi#

  6. This is from my putty session. I’m a new user so I’m sure its something easy! 🙂

    root@raspberrypi:/home/pi# wget -O – https://nightly.odoo.com/odoo.key | apt-key add -echo “deb http://nightly.odoo.com/12.0/nightly/deb/ ./” >> /etc/apt/sources.list.d/odoo.list
    –2021-02-06 14:32:34– https://nightly.odoo.com/odoo.key
    Resolving nightly.odoo.com (nightly.odoo.com)… 178.33.123.40
    Connecting to nightly.odoo.com (nightly.odoo.com)|178.33.123.40|:443… connected.
    Warning: apt-key output should not be parsed (stdout is not a terminal)
    HTTP request sent, awaiting response… 200 OK
    Length: 3112 (3.0K) [application/octet-stream]
    Saving to: ‘STDOUT’

    – 0%[ ] 0 –.-KB/s in 0s

    Cannot write to ‘-’ (Broken pipe).
    root@raspberrypi:/home/pi# apt update && apt install odoo
    E: Type ‘gpg’ is not known on line 1 in source list /etc/apt/sources.list.d/odoo.list
    E: The list of sources could not be read.
    root@raspberrypi:/home/pi#

    1. Ok. This should be a really rare problem. I bet you are copying commands from this page to a program like Microsoft Word (or somethig similar), then to your PI terminal. I say this because in wget command the second “-” doesn’t appear to be a minus, but an insane MS Word char…
      Please, try to copy command to notepad and check that the “-” char before “https://nightly…..” is a minus. Or use following:
      wget -O - https://nightly.odoo.com/odoo.key | apt-key add -

  7. Just to be sure I manually typed it in as I was using notepad to make sure the line break in the commands given wouldn’t break anything.

    root@raspberrypi:/home/pi# wget -o – https://nightly.odoo.com/odoo.key | apt-key add -echo “deb http://nightly.odoo.com/12/0/nightly/deb/ ,/” >> /etc/apt/sources.list.d/odoo.list
    Warning: apt-key output should not be parsed (stdout is not a terminal)
    root@raspberrypi:/home/pi# apt update && apt install odoo
    E: Type ‘gpg’ is not known on line 1 in source list /etc/apt/sources.list.d/odoo.list
    E: The list of sources could not be read.

    1. This time your error comes from the lower case in “-o” option in wget, instead of upper “-O”. Linux command options are case sensitive… Please copy from here and paste directily in your terminal following commands (in 2 different rows):
      wget -O - https://nightly.odoo.com/odoo.key | apt-key add -
      then, after this command execution:
      echo "deb http://nightly.odoo.com/12.0/nightly/deb/ ./" >> /etc/apt/sources.list.d/odoo.list

  8. Where does odoo save its data!
    Question: If you have set up a Raid 1 system, which files and paths do you have to copy? And which conf must be edited so that odoo can find the data on Raid 1.

    1. Hi Thomas,
      you are right, it is really hard to find in Odoo doc where data are stored. I watched at https://registry.hub.docker.com/_/odoo/?tab=description, where docs on installing official odoo image with docker are published. Usually, with Docker you map local volumes where data are stored to avoid data loss on container remotion. According to this document, it seems that Odoo data are in following folders:

      • Odoo web data: /var/lib/odoo
      • Odoo configuration: /etc/odoo
      • Odoo addons: /mnt/extra-addons
      • Odoo database (postgres) data: /var/lib/postgresql/data/pgdata

      Hope this can help you

  9. Hi,

    Thanks for the Pi version that is much simpler than the other Odoo installs I’ve seen. That said, I get the following error, even though Python3 is installed:

    The following packages have unmet dependencies:
    odoo : Depends: python3-gevent but it is not installable
    Depends: python3-libsass but it is not installable
    Depends: python3-passlib but it is not installable
    Depends: python3-suds but it is not installable
    Depends: python3-usb but it is not installable
    Recommends: python3-pyldap but it is not installable
    Recommends: python3-qrcode but it is not installable
    Recommends: python3-vobject but it is not installable
    E: Unable to correct problems, you have held broken packages

    Please help and thanks, Jim

      1. at the Install stage, “apt update && apt install odoo”. Result from terminal:

        root@raspberrypi:/home/pi# apt update && apt install odooIgn http://nightly.odoo.com ./ InRelease
        Get:1 http://nightly.odoo.com ./ Release.gpg [833 B]
        Hit http://mirrordirector.raspbian.org jessie InRelease
        Get:2 http://nightly.odoo.com ./ Release [1,188 B]
        Get:3 http://nightly.odoo.com ./ Packages [1,893 B]
        Hit http://mirrordirector.raspbian.org jessie/main armhf Packages
        Hit http://mirrordirector.raspbian.org jessie/contrib armhf Packages
        Hit http://mirrordirector.raspbian.org jessie/non-free armhf Packages
        Hit http://mirrordirector.raspbian.org jessie/rpi armhf Packages
        Ign http://nightly.odoo.com ./ Translation-en_US
        Ign http://nightly.odoo.com ./ Translation-en
        Ign http://mirrordirector.raspbian.org jessie/contrib Translation-en_US
        Ign http://mirrordirector.raspbian.org jessie/contrib Translation-en
        Ign http://mirrordirector.raspbian.org jessie/main Translation-en_US
        Ign http://mirrordirector.raspbian.org jessie/main Translation-en
        Ign http://mirrordirector.raspbian.org jessie/non-free Translation-en_US
        Ign http://mirrordirector.raspbian.org jessie/non-free Translation-en
        Ign http://mirrordirector.raspbian.org jessie/rpi Translation-en_US
        Ign http://mirrordirector.raspbian.org jessie/rpi Translation-en
        Hit http://archive.raspberrypi.org jessie InRelease
        Hit http://archive.raspberrypi.org jessie/main armhf Packages
        Hit http://archive.raspberrypi.org jessie/ui armhf Packages
        Ign http://archive.raspberrypi.org jessie/main Translation-en_US
        Ign http://archive.raspberrypi.org jessie/main Translation-en
        Ign http://archive.raspberrypi.org jessie/ui Translation-en_US
        Ign http://archive.raspberrypi.org jessie/ui Translation-en
        Fetched 3,914 B in 37s (104 B/s)
        Reading package lists… Done
        Building dependency tree
        Reading state information… Done
        All packages are up to date.
        Reading package lists… Done
        Building dependency tree
        Reading state information… Done
        Some packages could not be installed. This may mean that you have
        requested an impossible situation or if you are using the unstable
        distribution that some required packages have not yet been created
        or been moved out of Incoming.
        The following information may help to resolve the situation:

        The following packages have unmet dependencies:
        odoo : Depends: python3-gevent but it is not installable
        Depends: python3-libsass but it is not installable
        Depends: python3-passlib but it is not installable
        Depends: python3-suds but it is not installable
        Depends: python3-usb but it is not installable
        Recommends: python3-pyldap but it is not installable
        Recommends: python3-qrcode but it is not installable
        Recommends: python3-vobject but it is not installable
        E: Unable to correct problems, you have held broken packages.

  10. Hi Jim,
    I’m sorry, but I wasn’t able to reproduce your error, as this evening I started from a fresh Raspberry PI OS Lite installation and followed line by line my tutorial, resulting in a complete and working installation without your errors. I can only suggest to start again from a fresh OS setup.

  11. my error message :
    root@odoo:/home/pi# wget -O – https://nightly.odoo.com/odoo.key | apt-key add – echo “deb http://nightly.odoo.com/12.0/nightly/deb/ ./” >> /etc/apt/sources.list.d/odoo.list
    –2021-05-08 09:09:15– https://nightly.odoo.com/odoo.key
    Resolving nightly.odoo.com (nightly.odoo.com)… 178.33.123.40
    Connecting to nightly.odoo.com (nightly.odoo.com)|178.33.123.40|:443… Warning: apt-key output should not be parsed (stdout is not a terminal)
    connected.
    HTTP request sent, awaiting response… 200 OK
    Length: 3112 (3.0K) [application/octet-stream]
    Saving to: ‘STDOUT’

    – 100%[===========================================>] 3.04K –.-KB/s in 0s

    2021-05-08 09:09:16 (6.73 MB/s) – written to stdout [3112/3112]

    gpg: can’t open ‘echo’: No such file or directory
    gpg: can’t open ‘deb http://nightly.odoo.com/12.0/nightly/deb/ ./’: No such file or directory

    how to do next step ?

    1. Hi. I think this is a common problem when you copy from web, paste to MS Word and then to terminal. MS Word tend to change “-” (minus) with an horizontal bar. To avoid this, please paste the command to a plain text program (like notepad), check that all are “minus” and then use in terminal

  12. Hi peppe8o,
    Could you build odoo img for raspberry pi (.zip. or .img etc..).
    Let’s everyone to download. everyone can happy to use odoo after we just restore img.

    PS. odoo 12, 13 ,14 different odoo version or just build last version only img (odoo 14).
    thx.

    1. Any OS image should be verified costantly (also with different RPI models) and updated on each Odoo update. Installing Odoo from its repository I think is the correct way to stay aligned with current software bug fixes and repositories progress.
      You can use this procedure also with newer Odoo versions as a previous user stated that this procedure works also with Odoo 14 (you only need to change repository link when adding to apt sources list).

  13. Database creation error: decoding with ‘euc_kr’ codec failed
    How should I deal with the error shown above?

    1. Hi. This is a strange error, maybe due to different languages encoding. Please try with a fresh Raspberry PI OS Lite installation (in English). You can also use the latest Odoo packages (maybe something corrected in their development flow) with the following line instead of similar one in my tutorial:
      sudo sh -c 'echo "deb http://nightly.odoo.com/14.0/nightly/deb/ ./" >> /etc/apt/sources.list.d/odoo.list'
      Once Odoo is installed and working in English, you will probably change the application language with more luck.

      Please let me know if this works.

  14. Hi! I was be able to install odoo 14 CE with this method, but can I use it as iotbox at the same time??
    Seems like it isn’t recognizing as iotbox anymore.

    How should I connect my receipt printer??
    Do I need another Pi to set that up?

    1. Hi Yuri. First of all, thank you for your feedback.
      Connecting a printer to Raspberry PI depends on printer brand and model. You have to find Linux drivers for your printer (if not already available in your OS installation). For example, HP printers can be managed with the helpful hplip package.
      The best way is to look on the internet for your users having the same printer.
      You can also think to setup a network printer server by installing CUPS on Raspberry PI.

Leave a Reply

Your email address will not be published. Required fields are marked *

I accept the Privacy Policy