OpenProject is an open source project management platform that gives you full control over your project planning, scheduling, and team collaboration. If you have been looking for a self-hosted alternative to Jira, Asana, or Monday.com, OpenProject is one of the strongest options available. It supports Gantt charts, Kanban boards, agile and scrum workflows, time tracking, cost reporting, and document management – all from a single web interface.
In this guide, I will walk you through installing OpenProject on RHEL 10, Rocky Linux 10, or AlmaLinux 10 using the official packaged installer from packager.io. This method handles PostgreSQL, the web server, and all dependencies through an interactive configuration wizard – making it the most straightforward way to get a production-ready instance running.
Prerequisites
Before you begin, make sure you have the following in place:
- A server running RHEL 10, Rocky Linux 10, or AlmaLinux 10 with root or sudo access
- At least 2 GB of RAM (4 GB recommended for teams of 10+ users)
- At least 20 GB of free disk space
- A valid FQDN (fully qualified domain name) pointing to your server – needed if you plan to enable SSL
- Firewall access to ports 80 and 443
Step 1: Update the System
Start by updating all packages on your system to the latest available versions. This makes sure you have the latest security patches and library versions before installing OpenProject.
sudo dnf update -y
Reboot if any kernel updates were applied:
sudo reboot
After the system comes back up, verify you are running the expected release:
cat /etc/redhat-release
You should see output confirming RHEL 10, Rocky Linux 10, or AlmaLinux 10.
Step 2: Install Required Dependencies
Install a few packages that the OpenProject installer and repo setup script depend on:
sudo dnf install -y curl wget gnupg2
Step 3: Add the OpenProject Package Repository
OpenProject provides official packages through packager.io. Run the following command to add the repository and import the GPG signing key. This sets up the repo for the latest stable release (15.x at the time of writing):
sudo curl -fsSL https://dl.packager.io/srv/opf/openproject/key | sudo gpg --dearmor -o /etc/pki/rpm-gpg/RPM-GPG-KEY-openproject
cat << 'EOF' | sudo tee /etc/yum.repos.d/openproject.repo
[openproject]
name=OpenProject Repository
baseurl=https://dl.packager.io/srv/rpm/opf/openproject/stable/15/el/10/$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-openproject
EOF
Note: If at the time you are reading this a newer major version is available (for example, 16), replace stable/15 with the appropriate version in the baseurl above. Check the official OpenProject installation docs for the latest version number.
Verify the repository was added correctly:
sudo dnf repolist | grep openproject
You should see the OpenProject repository listed in the output.
Step 4: Install OpenProject
Now install the OpenProject package:
sudo dnf install -y openproject
This pulls in all required dependencies including Ruby, Node.js, and other libraries that OpenProject needs. The download size is significant, so give it a few minutes depending on your connection speed.
Confirm the package is installed:
rpm -qi openproject
Step 5: Run the OpenProject Configuration Wizard
OpenProject ships with an interactive configuration wizard that handles setting up the database, web server, caching layer, and other services. Launch it with:
sudo openproject configure
The wizard will guide you through several prompts. Here is what to select at each step:
PostgreSQL Database
Select install to let the wizard install and configure PostgreSQL automatically. This is the recommended approach for most deployments. OpenProject will create its own database and user – you do not need to set up PostgreSQL manually.
If you already have an existing PostgreSQL server you want to use, select reuse and provide the connection details when prompted.
Web Server (Apache)
Select install to have the wizard set up Apache as the reverse proxy. It will configure a virtual host and proxy requests to the OpenProject application server running on localhost.
When prompted for the server hostname, enter your FQDN (for example, openproject.example.com). If you are just testing, you can enter the server’s IP address.
SSL/TLS Configuration
If you have an SSL certificate, select yes and provide the paths to your certificate and key files. If you plan to use Let’s Encrypt, you can skip SSL here and set it up afterward with certbot.
For a test or internal setup, you can select no to run on plain HTTP.
Repositories (SVN/Git)
Select skip unless you need built-in SCM repository management. Most teams use external Git hosting (GitHub, GitLab, etc.) and do not need this.
Memcached
Select install to enable memcached for session and cache storage. This improves performance, especially under load.
The wizard will now apply all the configuration. This can take several minutes as it sets up the database schema, precompiles assets, and starts services. Wait for it to complete.
Step 6: Configure the Firewall
Open the HTTP and HTTPS ports in firewalld so you can access the web interface:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
Verify the rules are active:
sudo firewall-cmd --list-services
You should see http and https in the output.
Step 7: Verify Services Are Running
Check that all OpenProject-related services are up and running:
sudo systemctl status openproject
sudo systemctl status postgresql
sudo systemctl status httpd
sudo systemctl status memcached
All four services should show as active (running). If any service is not running, check the logs:
sudo journalctl -u openproject --no-pager -n 50
Step 8: Access the OpenProject Web Interface
Open your web browser and navigate to your server’s hostname or IP address:
http://your-server-hostname-or-ip
You should see the OpenProject login page.
Step 9: Initial Admin Setup
Log in with the default administrator credentials:
- Username: admin
- Password: admin
You will be prompted to change the admin password immediately. Set a strong password and store it securely.
After changing the password, take a few minutes to configure the basics:
- Go to Administration > General and set your instance name and default language
- Go to Administration > Users and update the admin user’s email address and display name
- Go to Administration > Authentication and review the authentication settings – disable self-registration if this is an internal deployment
Step 10: Create Your First Project
With the admin setup complete, create your first project:
- Click the + Project button in the top navigation bar
- Enter a project name and an optional identifier (the identifier is used in URLs)
- Select a project template if you want pre-configured work package types and workflows, or start with a blank project
- Click Save
Once the project is created, you can start adding work packages, setting up boards, and inviting team members.
Step 11: Configure SMTP for Email Notifications
OpenProject needs a working SMTP configuration to send email notifications for work package updates, mentions, and other events. Edit the OpenProject configuration file:
sudo nano /etc/openproject/conf.d/smtp
Add the following content, replacing the values with your SMTP server details:
export SMTP_HOST="smtp.example.com"
export SMTP_PORT=587
export SMTP_DOMAIN="example.com"
export SMTP_AUTHENTICATION="login"
export SMTP_USER_NAME="[email protected]"
export SMTP_PASSWORD="your-smtp-password"
export SMTP_ENABLE_STARTTLS_AUTO="true"
After saving the file, reconfigure OpenProject to apply the changes:
sudo openproject configure
To verify that email delivery works, go to Administration > Emails and notifications in the web UI and click Send a test email. Check your inbox to confirm it arrived.
Step 12: Set Up Backups
OpenProject includes a built-in backup command that dumps the database and copies uploaded files and configuration. Run a manual backup to verify it works:
sudo openproject run backup
By default, backups are stored in /var/db/openproject/backup/. List the contents to confirm:
ls -lh /var/db/openproject/backup/
You should see timestamped files for the database dump, attachments archive, and configuration archive.
To automate daily backups, create a cron job:
sudo crontab -e
Add the following line to run a backup every day at 2:00 AM:
0 2 * * * /usr/bin/openproject run backup > /var/log/openproject-backup.log 2>&1
For production environments, copy the backup files to remote storage (S3, NFS, or another server) so you do not lose them if the server fails. A simple rsync cron job running after the backup works well for this.
Optional: Enable SSL with Let’s Encrypt
If you skipped SSL during the configuration wizard, you can set it up now using certbot. Install it from the EPEL repository:
sudo dnf install -y epel-release
sudo dnf install -y certbot python3-certbot-apache
Request a certificate for your domain:
sudo certbot --apache -d openproject.example.com
Follow the prompts to complete the process. Certbot will automatically configure Apache to use the certificate and set up auto-renewal.
Verify the renewal timer is active:
sudo systemctl status certbot-renew.timer
Troubleshooting
OpenProject service fails to start
Check the application logs for specific error messages:
sudo openproject logs --tail 100
Also check the system journal:
sudo journalctl -u openproject --no-pager -n 100
502 Bad Gateway or connection refused
This usually means the OpenProject application server is not running or Apache cannot connect to it. Verify the service is up:
sudo systemctl status openproject
If the service is running but you still get a 502, check that SELinux is not blocking the connection:
sudo setsebool -P httpd_can_network_connect 1
Then restart Apache:
sudo systemctl restart httpd
Database connection errors
If OpenProject cannot connect to PostgreSQL, first verify PostgreSQL is running:
sudo systemctl status postgresql
If it is not running, start it and check for errors:
sudo systemctl start postgresql
sudo journalctl -u postgresql --no-pager -n 50
You can also re-run the configuration wizard to reset the database connection:
sudo openproject reconfigure
Emails not being sent
Double-check your SMTP settings in /etc/openproject/conf.d/smtp. Common issues include wrong port numbers, missing STARTTLS configuration, or incorrect credentials. After making changes, reconfigure:
sudo openproject configure
Check the mail delivery logs:
sudo openproject logs --tail 50 | grep -i mail
Insufficient memory errors
If OpenProject crashes or behaves slowly, check available memory:
free -h
If you are running on a server with only 2 GB of RAM, consider adding swap space:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Resetting the admin password
If you have locked yourself out, reset the admin password from the command line:
sudo openproject run rails runner "User.find_by(login: 'admin').update!(password: 'newpassword123', password_confirmation: 'newpassword123')"
Change newpassword123 to your desired password. You will be prompted to change it again on next login.
Upgrading OpenProject
When a new version is released, upgrading is straightforward. Always take a backup first:
sudo openproject run backup
sudo dnf update -y openproject
sudo openproject configure
The configure step will run any pending database migrations and recompile assets as needed.
Conclusion
You now have a working OpenProject installation on RHEL 10, Rocky Linux 10, or AlmaLinux 10. The packaged installer handles the heavy lifting – PostgreSQL, Apache, memcached, and the application itself are all managed through the openproject configure command. From here, you can start creating projects, inviting team members, and organizing your work. If you are running this in production, make sure your backups are automated and tested regularly, and put SSL in front of everything.





























































