How to Install OpenProject on Ubuntu 24.04 LTS Manually
This guide explains how to manually install OpenProject on a fresh Ubuntu 24.04 LTS server. The steps below perform the same actions that an Ansible installation playbook would automate.
This guide is written for beginners. Commands are provided step-by-step and should be executed in order.
Requirements
- Ubuntu 24.04 LTS VPS or Dedicated Server
- Minimum 4GB RAM recommended
- Root access or a user with sudo privileges
- Public IP address
- Internet connection
Example server IP used in this guide:
102.202.47.171
Replace this IP address with your own server IP.
Step 1 - Connect to Your Ubuntu Server
Connect using SSH:
ssh username@YOUR\\\\\\\_SERVER\\\\\\\_IP
Example:
ssh ubuntu@102.202.47.171
Step 2 - Update Ubuntu Packages
Run:
sudo apt update sudo apt upgrade -y
Step 3 - Install Required Packages
Install the required software packages:
sudo apt install -y \\\\\\\\ curl \\\\\\\\ gnupg \\\\\\\\ ca-certificates \\\\\\\\ wget \\\\\\\\ nginx \\\\\\\\ postgresql \\\\\\\\ postgresql-contrib
Step 4 - Start PostgreSQL Database Service
sudo systemctl enable postgresql sudo systemctl start postgresql Check PostgreSQL status:
sudo systemctl status postgresql Press:
q to exit.
Step 5 - Add OpenProject Repository
Download the OpenProject repository key:
curl -fsSL https://dl.packager.io/srv/opf/openproject/key \\\\\\\\ | sudo tee /etc/apt/trusted.gpg.d/openproject.asc Add the repository:
echo "deb https://dl.packager.io/srv/opf/openproject/stable/16/ubuntu 24.04 main" \\\\\\\\ | sudo tee /etc/apt/sources.list.d/openproject.list Update package list:
sudo apt update
Step 6 - Install OpenProject
sudo apt install openproject -y
Step 7 - Create OpenProject Database
Switch to PostgreSQL:
sudo -u postgres psql Create database user:
CREATE USER openproject WITH PASSWORD 'ChangeThisPassword123!'; Create database:
CREATE DATABASE openproject OWNER openproject; Exit PostgreSQL:
\\\\\\\\q
Step 8 - Configure OpenProject Environment
Open the configuration file:
sudo nano /etc/openproject/conf.d/openproject.env Add the following:
OPENPROJECT\\\\\\\_HOST\\\\\\\_\\\\\\\_NAME=YOUR\\\\\\\_SERVER\\\\\\\_IP OPENPROJECT\\\\\\\_DATABASE\\\\\\\_\\\\\\\_URL=postgresql://openproject:ChangeThisPassword123!@127.0.0.1:5432/openproject OPENPROJECT\\\\\\\_DEFAULT\\\\\\\_\\\\\\\_LANGUAGE=en OPENPROJECT\\\\\\\_WEB\\\\\\\_\\\\\\\_HOST=127.0.0.1 OPENPROJECT\\\\\\\_WEB\\\\\\\_\\\\\\\_PORT=6000 OPENPROJECT\\\\\\\_HTTPS=false OPENPROJECT\\\\\\\_FORCE\\\\\\\_\\\\\\\_SSL=false OPENPROJECT\\\\\\\_RAILS\\\\\\\_\\\\\\\_RELATIVE\\\\\\\_\\\\\\\_URL\\\\\\\_\\\\\\\_ROOT= Example:
OPENPROJECT\\\\\\\_HOST\\\\\\\_\\\\\\\_NAME=102.202.47.171 Save the file:
CTRL + O ENTER CTRL + X
Step 9 - Restart OpenProject
Reload services:
sudo systemctl daemon-reload Restart OpenProject:
sudo systemctl restart openproject Restart web service:
sudo systemctl restart openproject-web-1 Check status:
sudo systemctl status openproject-web-1 --no-pager You should see:
Active: active (running)
Step 10 - Configure Nginx Reverse Proxy
Create Nginx configuration:
sudo nano /etc/nginx/sites-available/openproject Paste:
server {
listen 80;
server\\\\\\\_name YOUR\\\\\\\_SERVER\\\\\\\_IP;
client\\\\\\\_max\\\\\\\_body\\\\\\\_size 100M;
location / {
proxy\\\\\\\_pass http://127.0.0.1:6000;
proxy\\\\\\\_http\\\\\\\_version 1.1;
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 http;
}
}
Save:
CTRL + O ENTER CTRL + X Enable the site:
sudo ln -s /etc/nginx/sites-available/openproject \\\\\\\\ /etc/nginx/sites-enabled/openproject Test Nginx:
sudo nginx -t Restart Nginx:
sudo systemctl restart nginx
Step 11 - Create OpenProject Administrator Account
Open the OpenProject console:
sudo openproject run console You will see:
open-project(prod):001> Create administrator user:
user = User.new( login: "admin", firstname: "Admin", lastname: "User", mail: "admin@example.com", admin: true, status: 1, language: "en", first\\\\\\\_login: false, force\\\\\\\_password\\\\\\\_change: false, password: "AdminPassword123!", password\\\\\\\_confirmation: "AdminPassword123!" ) Save the user:
user.save! Verify:
User.pluck(:id, :login, :firstname, :lastname, :admin) Exit:
exit
Step 12 - Login to OpenProject
Open your browser:
http://YOUR\\\\\\\_SERVER\\\\\\\_IP Example:
http://102.202.47.171 Login:
| Username | admin |
| Password | AdminPassword123! |
Important: Change the administrator password after your first login.
Troubleshooting
Check OpenProject Web Service
sudo systemctl status openproject-web-1
Check Logs
journalctl -u openproject-web-1 -n 50 --no-pager
Check Nginx
sudo nginx -t
Check Database Connection
sudo -u postgres psql openproject
Installation Completed
Your OpenProject installation is now complete.
You can now create projects, users, work packages, milestones, and manage your team's tasks.

