Install Prerequisites
The examples on this guide are using the following versions:
- Ubuntu 22.04 64 bits
- PostgreSQL 14
- OpenJDK 17
In order to run iDempiere you need to have a JDK (not JRE) version of java
iDempiere can also run with Oracle 12C and later, and also with PostgreSQL 11 and later, for this tutorial we use postgresql 14
Ubuntu
Please refer to http://www.ubuntu.com/download
Downloaded and installed Ubuntu Server 22.04 LTS
PostgreSQL 14
Install
Create the file repository configuration:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Import the repository signing key:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
Update the package lists:
sudo apt-get update
Install the version 14 of PostgreSQL.
sudo apt-get -y install postgresql-14
In other versions of linux you need to additionally install the package postgresql-contrib corresponding to the version you are installing. In ubuntu is included by default, but in other cases is mandatory to install it, otherwise you'll get errors about the generate_uuid() function. Also, instructions are different for other linux versions, in some you need to create and start the cluster, and also configure the service for auto-start. Please refer to the specific PostgreSQL instructions for such cases.
Assign a password to user postgres
In order to create the database the installer needs to know the password of user postgres, by default this user doesn't have a password in ubuntu (windows installer asks for a password).
Please take note of the password you assign here as it will be required in the setup process:
Steps are (replace your_chosen_password by your preferred):
echo "alter user postgres password 'your_chosen_password'" | sudo su postgres -c "psql -U postgres"
Configure pg_hba.conf
After installing postgres you must check the correct configuration of pg_hba.conf
The following line requires change of the authentication method:
- Ubuntu
- Windows
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
Change to:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all scram-sha-256
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
Change to:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all scram-sha-256
Some guides suggest configuring trust instead of md5 - but that creates a security issue on your postgres server.
And then reload the configuration:
sudo service postgresql reload
OpenJDK
sudo apt-get update
sudo apt-get install openjdk-17-jdk-headless
openjdk-17-jdk-headless is for server without GUI, if you plan to use UI programs install openjdk-17-jdk instead. Also note that openjdk-17-jre is not sufficient because it doesn't have the jar command used in some scripts.
You can install also openjdk > 17, we recommend to use a long term supported like 17.
Troubleshooting
No postgres user
In the event that there's no 'postgres' role in your postgres db, you have to create on your own using the following steps:
Connect to your postgres db instance via psql.
psql
Create 'postgres' role
CREATE USER postgres
Alter the role and specify what the role suppose to be.
ALTER USER postgres SUPERUSER CREATEDB
InvocationTargetException on CentOS
On a CentOS server with minimum version you can get error on home page (by render graph) java.lang.InternalError: java.lang.reflect.InvocationTargetException
Suggested solution:
sudo apt install fontconfig
sudo yum install fontconfig
Windows
Most installation problems in Windows are caused by not configured environment variables:
- PATH must be configured to make the commands psql and jar accessible
- JAVA_HOME environment variable must be configured