OpenProject is a self-hosted project management alternative to Jira that combines native Gantt charts, agile boards, and cost tracking under GPL-3.0.
A technical agency coordinating client delivery milestones quickly faces escalating per-user fees and fragmented project visibility. Operations leads end up synchronizing work across disconnected task boards, spreadsheet timelines, and separate billing tools. OpenProject consolidates hierarchical work packages, interactive Gantt schedules, and cost tracking into one self-hosted workspace.
Jira carries substantial infrastructure overhead and execution friction for teams running complex setups. Extending Atlassian's issue tracker with roadmaps, time tracking, and portfolio views typically demands multiple third-party Marketplace plugins. In self-hosted or heavily customized setups, these add-ons increase page weight, multiply API calls, and inflate host memory requirements. OpenProject avoids third-party clutter by compiling core project management tools into a unified Ruby on Rails and Angular application. Native Gantt charts, milestone timelines, time logs, and cost reports render directly from the base schema without external webhook delays or plugin version conflicts.
Operational throughput also diverges when projects expand. Jira provides deep Lucene search indexing and refined workflow automation tailored to large software departments, but navigating nested hierarchies across multiple teams often requires heavy configuration and multi-tenant cloud plans. OpenProject keeps work packages, parent-child task relationships, and sprint backlogs in a single PostgreSQL database schema. While running OpenProject demands dedicated compute capacity—typically requiring a quad-core host and 4 GB of RAM to handle Puma workers and background jobs—it gives operations leads predictable execution latency, full audit logs, and sovereign data governance.
Is OpenProject free for commercial use? Yes. The self-hosted Community edition is free for commercial use on private infrastructure, while enterprise single sign-on and premium support require a paid license.
OpenProject vs Jira: how do they differ for project tracking? OpenProject includes native Gantt schedules, budgeting, and time tracking out of the box, whereas Jira relies on third-party marketplace apps to provide equivalent timeline tools.
Can OpenProject be self-hosted on private infrastructure? Yes. Teams can deploy OpenProject on Linux servers using native packages or container deployments backed by PostgreSQL.
OpenProject delivers the right balance of project governance and operational control, provided your team has the server capacity to support its memory footprint. A GPL-3.0 codebase backed by continuous weekly releases and active commits through September 2026 ensures you retain full ownership of project records without vendor lock-in. For agencies and engineering operations that require combined roadmap planning and bug tracking on sovereign infrastructure, it remains a dependable long-term workhorse.
We started this exact setup from scratch in a clean Linux machine on Nov 1, 2026 and checked it through OpenProject's own API: every check passed. Recipes are re-checked regularly and removed if they stop working.
mkdir -p openproject && cd openproject
curl -fsSL https://open-source.store/tools/openproject/compose.yml -o compose.ymlcat > .env <<EOF
SECRET_KEY_BASE=$(openssl rand -hex 32)
ADMIN_PASSWORD=$(openssl rand -hex 12)
OPENPROJECT_HOST__NAME=127.0.0.1:8080
EOFSECRET_KEY_BASE — Random 64-character secret key used to encrypt session cookies and tokens. Generated above; keep it secret.ADMIN_PASSWORD — Initial password for the default administrator account (username: admin). Generated above; keep it secret.OPENPROJECT_HOST__NAME — Public domain or IP and port where OpenProject is reached (e.g. openproject.example.com or <your-server>:8080); set this to your server's public host.docker compose up -dservices:
openproject:
image: openproject/openproject:17.9.6
ports:
- "8080:80"
environment:
SECRET_KEY_BASE: ${SECRET_KEY_BASE}
OPENPROJECT_HOST__NAME: ${OPENPROJECT_HOST__NAME}
OPENPROJECT_ADDITIONAL__HOST__NAMES: '["127.0.0.1:8080", "127.0.0.1", "localhost:8080", "localhost"]'
OPENPROJECT_HTTPS: "false"
OPENPROJECT_HSTS: "false"
OPENPROJECT_SEED_ADMIN_USER_PASSWORD: ${ADMIN_PASSWORD}
OPENPROJECT_SEED_ADMIN_USER_PASSWORD_RESET: "false"
OPENPROJECT_APIV3__ENABLE__BASIC__AUTH: "true"
OPENPROJECT_RAILS__CACHE__STORE: "memcache"
volumes:
- openproject-pgdata:/var/openproject/pgdata
- openproject-assets:/var/openproject/assets
restart: always
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost/health_checks/default || exit 1"]
interval: 10s
timeout: 5s
retries: 30
start_period: 120s
volumes:
openproject-pgdata:
openproject-assets:
Go, gRPC and Protobuf done right, LLM agents in production, and the hard parts of shipping a first product.
Show that OpenProject is listed as an open-source alternative. Paste into your README:
Ubuntu 24.04 · Apple container, Docker 29.1.3, Compose 2.40.3+ds1-0ubuntu1~24.04.1. Images pulled in 276 s: openproject/openproject:17.9.6.
Based on the upstream setup. Official all-in-one container pinned to 17.9.6 with internal PostgreSQL and Apache proxy. Session key, admin password, and public host moved to environment variables.
openproject-1 | 2026-11-01T22:26:59.810049336Z 2026-11-01 22:26:59 +0000 HTTP parse error, malformed request ("GET /CuteSoft_Client/CuteEditor/Template.aspx" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:26:59.815745962Z 2026-11-01 22:26:59 +0000 HTTP parse error, malformed request ("GET /tiki-ajax_services.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:26:59.824685837Z I, [2026-11-01T22:26:59.824439 #591] INFO -- : [d41fbe2a-1ea7-41c5-9ae9-e1d30c44c43a] method=GET path=/404 format=*/* controller=ErrorsController action=not_found status=404 allocations=18096 duration=35.42 view=4.81 db=16.13 user=2
openproject-1 | 2026-11-01T22:26:59.827379753Z I, [2026-11-01T22:26:59.827300 #591] INFO -- : [18c498f8-f86c-4a4d-a779-e162acce9786] method=GET path=/404 format=*/* controller=ErrorsController action=not_found status=404 allocations=17326 duration=30.80 view=3.04 db=20.82 user=2
openproject-1 | 2026-11-01T22:27:01.772089337Z 2026-11-01 22:27:01 +0000 HTTP parse error, malformed request ("GET /webmail/" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:01.772184629Z 2026-11-01 22:27:01 +0000 HTTP parse error, malformed request ("GET /webmail/" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:01.821893962Z I, [2026-11-01T22:27:01.821644 #591] INFO -- : [0cc1ab9b-8165-4aab-a193-d7a19e6456f6] method=GET path=/404 format=*/* controller=ErrorsController action=not_found status=404 allocations=14101 duration=27.91 view=7.67 db=16.04 user=2
openproject-1 | 2026-11-01T22:27:01.824217129Z I, [2026-11-01T22:27:01.823893 #591] INFO -- : [e0514872-ab22-4d0d-9339-49b87ac0847b] method=GET path=/404 format=*/* controller=ErrorsController action=not_found status=404 allocations=17825 duration=37.14 view=6.55 db=23.47 user=2
openproject-1 | 2026-11-01T22:27:02.769415546Z 2026-11-01 22:27:02 +0000 HTTP parse error, malformed request ("GET /wp-admin/admin-ajax.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:02.770938713Z 2026-11-01 22:27:02 +0000 HTTP parse error, malformed request ("GET /wp-admin/admin-ajax.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:02.793806671Z 2026-11-01 22:27:02 +0000 HTTP parse error, malformed request ("GET /objects/functiongetOpenGraph.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:02.795418088Z 2026-11-01 22:27:02 +0000 HTTP parse error, malformed request ("GET /objects/functiongetOpenGraph.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:02.806737505Z 2026-11-01 22:27:02 +0000 HTTP parse error, malformed request ("GET /auth/authorize" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:02.806976255Z 2026-11-01 22:27:02 +0000 HTTP parse error, malformed request ("GET /auth/authorize" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:03.804817672Z 2026-11-01 22:27:03 +0000 HTTP parse error, malformed request ("GET /academy/tutor/filter" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:03.809037422Z 2026-11-01 22:27:03 +0000 HTTP parse error, malformed request ("GET /academy/tutor/filter" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:03.813464713Z 2026-11-01 22:27:03 +0000 HTTP parse error, malformed request ("GET /auth/failure" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:03.815096672Z 2026-11-01 22:27:03 +0000 HTTP parse error, malformed request ("GET /browser_search_plugin.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:03.815175297Z 2026-11-01 22:27:03 +0000 HTTP parse error, malformed request ("GET /browser_search_plugin.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:03.817201380Z 2026-11-01 22:27:03 +0000 HTTP parse error, malformed request ("GET /auth/failure" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:04.768485089Z 2026-11-01 22:27:04 +0000 HTTP parse error, malformed request ("GET /index.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:04.772496922Z 2026-11-01 22:27:04 +0000 HTTP parse error, malformed request ("GET /index.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:04.800396506Z 2026-11-01 22:27:04 +0000 HTTP parse error, malformed request ("GET /wp-admin/admin-ajax.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:04.801514464Z 2026-11-01 22:27:04 +0000 HTTP parse error, malformed request ("GET /wp-admin/admin-ajax.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:04.805578464Z 2026-11-01 22:27:04 +0000 HTTP parse error, malformed request ("GET /free_time_failed.cgi" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:04.805586297Z 2026-11-01 22:27:04 +0000 HTTP parse error, malformed request ("GET /Help.aspx" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:04.806506381Z 2026-11-01 22:27:04 +0000 HTTP parse error, malformed request ("GET /free_time_failed.cgi" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:04.807939006Z 2026-11-01 22:27:04 +0000 HTTP parse error, malformed request ("GET /wp-content/plugins/knr-author-list-widget/knrAuthorListCustomSortSave.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:04.813132047Z 2026-11-01 22:27:04 +0000 HTTP parse error, malformed request ("GET /Help.aspx" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:05.773927964Z 2026-11-01 22:27:05 +0000 HTTP parse error, malformed request ("GET /wp-content/plugins/knr-author-list-widget/knrAuthorListCustomSortSave.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:05.790630673Z 2026-11-01 22:27:05 +0000 HTTP parse error, malformed request ("GET /bitrix/components/bitrix/mobileapp.list/ajax.php/" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:05.798027798Z 2026-11-01 22:27:05 +0000 HTTP parse error, malformed request ("GET /wp-login.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:05.798482714Z 2026-11-01 22:27:05 +0000 HTTP parse error, malformed request ("GET /wp-login.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:05.800064798Z 2026-11-01 22:27:05 +0000 HTTP parse error, malformed request ("GET /bitrix/components/bitrix/mobileapp.list/ajax.php/" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:05.808018839Z 2026-11-01 22:27:05 +0000 HTTP parse error, malformed request ("GET /wp-admin/admin-ajax.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:05.808188589Z 2026-11-01 22:27:05 +0000 HTTP parse error, malformed request ("GET /plus/ajax_officebuilding.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:05.808734464Z 2026-11-01 22:27:05 +0000 HTTP parse error, malformed request ("GET /plus/ajax_officebuilding.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:05.809598506Z 2026-11-01 22:27:05 +0000 HTTP parse error, malformed request ("GET /wp-admin/admin-ajax.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:05.810208089Z 2026-11-01 22:27:05 +0000 HTTP parse error, malformed request ("GET /wp-admin/admin-ajax.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:06.767878131Z 2026-11-01 22:27:06 +0000 HTTP parse error, malformed request ("GET /wp-admin/admin-ajax.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:06.769500798Z 2026-11-01 22:27:06 +0000 HTTP parse error, malformed request ("GET /index.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:06.769915215Z 2026-11-01 22:27:06 +0000 HTTP parse error, malformed request ("GET /index.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:06.791738840Z 2026-11-01 22:27:06 +0000 HTTP parse error, malformed request ("GET /bitrix/components/bitrix/socialnetwork.events_dyn/get_message_2.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:06.794145298Z 2026-11-01 22:27:06 +0000 HTTP parse error, malformed request ("GET /webadmin/deny/index.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:06.796223423Z 2026-11-01 22:27:06 +0000 HTTP parse error, malformed request ("GET /webadmin/deny/index.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:06.796308965Z 2026-11-01 22:27:06 +0000 HTTP parse error, malformed request ("GET /bitrix/components/bitrix/socialnetwork.events_dyn/get_message_2.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:06.801763506Z 2026-11-01 22:27:06 +0000 HTTP parse error, malformed request ("GET /index.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:06.801782673Z 2026-11-01 22:27:06 +0000 HTTP parse error, malformed request ("GET /index.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:07.778537757Z 2026-11-01 22:27:07 +0000 HTTP parse error, malformed request ("GET /" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:07.785960007Z 2026-11-01 22:27:07 +0000 HTTP parse error, malformed request ("GET /" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:07.808696799Z 2026-11-01 22:27:07 +0000 HTTP parse error, malformed request ("GET /error.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:07.809744215Z 2026-11-01 22:27:07 +0000 HTTP parse error, malformed request ("GET /error.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:08.793671966Z 2026-11-01 22:27:08 +0000 HTTP parse error, malformed request ("GET /posts" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:08.793686757Z 2026-11-01 22:27:08 +0000 HTTP parse error, malformed request ("GET /posts" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:08.798575924Z 2026-11-01 22:27:08 +0000 HTTP parse error, malformed request ("GET /wp-admin/admin-ajax.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:08.799151549Z 2026-11-01 22:27:08 +0000 HTTP parse error, malformed request ("GET /wp-admin/admin-ajax.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:08.812019549Z 2026-11-01 22:27:08 +0000 HTTP parse error, malformed request ("GET /portal/XsltResultControllerHtml.jsp" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:09.459292258Z I, [2026-11-01T22:27:09.459062 #586] INFO -- : [05edc96c-5f0e-4fc2-bed8-1c416b89d044] method=GET path=/health_checks/default format=*/* controller=OkComputer::OkComputerController action=show status=200 allocations=561 duration=3.81 view=1.73 db=0.00 user=2
openproject-1 | 2026-11-01T22:27:09.773664425Z 2026-11-01 22:27:09 +0000 HTTP parse error, malformed request ("GET /XsltResultControllerHtml.jsp" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:09.782201216Z 2026-11-01 22:27:09 +0000 HTTP parse error, malformed request ("GET /portal/XsltResultControllerHtml.jsp" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:09.783092758Z 2026-11-01 22:27:09 +0000 HTTP parse error, malformed request ("GET /XsltResultControllerHtml.jsp" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:12.773863634Z 2026-11-01 22:27:12 +0000 HTTP parse error, malformed request ("GET /badging/badge_template_v0.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:12.774295093Z 2026-11-01 22:27:12 +0000 HTTP parse error, malformed request ("GET /badging/badge_template_v0.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:12.775298343Z 2026-11-01 22:27:12 +0000 HTTP parse error, malformed request ("GET /cs/idcplg" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:12.775916884Z 2026-11-01 22:27:12 +0000 HTTP parse error, malformed request ("GET /api/icon/getDynamicIcon" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:12.777434718Z 2026-11-01 22:27:12 +0000 HTTP parse error, malformed request ("GET /api/icon/getDynamicIcon" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:12.782474384Z 2026-11-01 22:27:12 +0000 HTTP parse error, malformed request ("GET /cs/idcplg" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:12.783873801Z 2026-11-01 22:27:12 +0000 HTTP parse error, malformed request ("GET /cs/idcplg" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:12.791576676Z 2026-11-01 22:27:12 +0000 HTTP parse error, malformed request ("GET /web/login" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:12.791944759Z 2026-11-01 22:27:12 +0000 HTTP parse error, malformed request ("GET /cs/idcplg" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:12.795245801Z 2026-11-01 22:27:12 +0000 HTTP parse error, malformed request ("GET /web/login" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:12.798831593Z 2026-11-01 22:27:12 +0000 HTTP parse error, malformed request ("GET /web/signup" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:12.805214593Z 2026-11-01 22:27:12 +0000 HTTP parse error, malformed request ("GET /web/reset_password" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:12.807270426Z 2026-11-01 22:27:12 +0000 HTTP parse error, malformed request ("GET /web/signup" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:13.774782676Z 2026-11-01 22:27:13 +0000 HTTP parse error, malformed request ("GET /web/reset_password" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:13.800922385Z 2026-11-01 22:27:13 +0000 HTTP parse error, malformed request ("GET /Forms/rpAuth_1" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:13.801008635Z 2026-11-01 22:27:13 +0000 HTTP parse error, malformed request ("GET /Forms/rpAuth_1" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:13.827824052Z I, [2026-11-01T22:27:13.827587 #591] INFO -- : [174af898-3d0b-462b-806c-20187779e027] method=GET path=/404 format=*/* controller=ErrorsController action=not_found status=404 allocations=5985 duration=13.23 view=6.78 db=2.94 user=2
openproject-1 | 2026-11-01T22:27:14.786290594Z 2026-11-01 22:27:14 +0000 HTTP parse error, malformed request ("GET /sgdadmin/faces/com_sun_web_ui/help/helpwindow.jsp" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:14.786302469Z 2026-11-01 22:27:14 +0000 HTTP parse error, malformed request ("GET /creaprezzi.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:14.787763677Z 2026-11-01 22:27:14 +0000 HTTP parse error, malformed request ("GET /creaprezzi.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:14.789488344Z 2026-11-01 22:27:14 +0000 HTTP parse error, malformed request ("GET /sgdadmin/faces/com_sun_web_ui/help/helpwindow.jsp" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:14.795549594Z 2026-11-01 22:27:14 +0000 HTTP parse error, malformed request ("GET /info.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:14.798131719Z 2026-11-01 22:27:14 +0000 HTTP parse error, malformed request ("GET /info.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:14.802429385Z I, [2026-11-01T22:27:14.802297 #586] INFO -- : [b20d0f8b-a456-471d-89d8-2f02e1d46a47] method=GET path=/404 format=*/* controller=ErrorsController action=not_found status=404 allocations=7216 duration=18.57 view=4.90 db=7.41 user=2
openproject-1 | 2026-11-01T22:27:14.804664344Z 2026-11-01 22:27:14 +0000 HTTP parse error, malformed request ("GET /modifica_cliente.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:14.808182094Z 2026-11-01 22:27:14 +0000 HTTP parse error, malformed request ("GET /widgets/debug.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:14.809195260Z 2026-11-01 22:27:14 +0000 HTTP parse error, malformed request ("GET /modifica_cliente.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:14.809539302Z 2026-11-01 22:27:14 +0000 HTTP parse error, malformed request ("GET /widgets/debug.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:14.810264135Z 2026-11-01 22:27:14 +0000 HTTP parse error, malformed request ("GET /dati/availability_tpl.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:14.814609427Z 2026-11-01 22:27:14 +0000 HTTP parse error, malformed request ("GET /dati/availability_tpl.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:15.774789802Z 2026-11-01 22:27:15 +0000 HTTP parse error, malformed request ("GET /web/set_profiling" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:15.777298011Z 2026-11-01 22:27:15 +0000 HTTP parse error, malformed request ("GET /web/set_profiling" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:15.801007552Z 2026-11-01 22:27:15 +0000 HTTP parse error, malformed request ("GET /print.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:15.802684761Z 2026-11-01 22:27:15 +0000 HTTP parse error, malformed request ("GET /print.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:16.838018470Z I, [2026-11-01T22:27:16.837524 #586] INFO -- : [b4d22f35-9a55-4d00-a903-09cf1781588c] method=GET path=/404 format=*/* controller=ErrorsController action=not_found status=404 allocations=13991 duration=34.06 view=9.91 db=13.53 user=2
openproject-1 | 2026-11-01T22:27:16.841174095Z I, [2026-11-01T22:27:16.840994 #586] INFO -- : [636f5f64-2d92-4646-b0ba-08cb8c939909] method=GET path=/404 format=*/* controller=ErrorsController action=not_found status=404 allocations=11836 duration=26.36 view=7.52 db=14.52 user=2
openproject-1 | 2026-11-01T22:27:17.782908387Z 2026-11-01 22:27:17 +0000 HTTP parse error, malformed request ("GET /scgi-bin/platform.cgi" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:17.784935178Z 2026-11-01 22:27:17 +0000 HTTP parse error, malformed request ("GET /scgi-bin/platform.cgi" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:17.829875178Z I, [2026-11-01T22:27:17.828763 #586] INFO -- : [df1ce7a1-c56d-441e-a434-339cf4902a9f] method=GET path=/404 format=*/* controller=ErrorsController action=not_found status=404 allocations=6870 duration=20.33 view=5.12 db=9.57 user=2
openproject-1 | 2026-11-01T22:27:17.832518262Z I, [2026-11-01T22:27:17.832423 #591] INFO -- : [c3a0d4b3-321f-4b94-b491-81105f7e847e] method=GET path=/404 format=*/* controller=ErrorsController action=not_found status=404 allocations=7049 duration=22.49 view=4.52 db=10.60 user=2
openproject-1 | 2026-11-01T22:27:19.525114263Z I, [2026-11-01T22:27:19.524194 #591] INFO -- : [d122def8-c274-4715-97e3-50e27c6f0126] method=GET path=/health_checks/default format=*/* controller=OkComputer::OkComputerController action=show status=200 allocations=561 duration=2.40 view=0.26 db=0.00 user=2
openproject-1 | 2026-11-01T22:27:19.768747513Z 2026-11-01 22:27:19 +0000 HTTP parse error, malformed request ("GET /cas/logout" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:19.776010679Z 2026-11-01 22:27:19 +0000 HTTP parse error, malformed request ("GET /search" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:19.776807763Z 2026-11-01 22:27:19 +0000 HTTP parse error, malformed request ("GET /search" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:19.780170888Z 2026-11-01 22:27:19 +0000 HTTP parse error, malformed request ("GET /cas/logout" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:19.797993513Z 2026-11-01 22:27:19 +0000 HTTP parse error, malformed request ("GET /search" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:19.798372179Z 2026-11-01 22:27:19 +0000 HTTP parse error, malformed request ("GET /search" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:19.804539013Z 2026-11-01 22:27:19 +0000 HTTP parse error, malformed request ("GET /oauth/idp/logout" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:20.768427971Z 2026-11-01 22:27:20 +0000 HTTP parse error, malformed request ("GET /oauth/idp/logout" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:20.787568430Z 2026-11-01 22:27:20 +0000 HTTP parse error, malformed request ("GET /index.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:20.792496805Z 2026-11-01 22:27:20 +0000 HTTP parse error, malformed request ("GET /index.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:21.773772180Z 2026-11-01 22:27:21 +0000 HTTP parse error, malformed request ("GET /opencms/cmisatom/cmis-online/type" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:21.775400180Z 2026-11-01 22:27:21 +0000 HTTP parse error, malformed request ("GET /opencms/cmisatom/cmis-online/type" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:21.791220764Z 2026-11-01 22:27:21 +0000 HTTP parse error, malformed request ("GET /wa.exe" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:21.797689264Z 2026-11-01 22:27:21 +0000 HTTP parse error, malformed request ("GET /wa.exe" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:22.779502389Z 2026-11-01 22:27:22 +0000 HTTP parse error, malformed request ("GET /wp-content/plugins/pdf-generator-for-wp/package/lib/dompdf/vendor/dompdf/dompdf/I18N/Arabic/Examples/Query.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:22.780199597Z 2026-11-01 22:27:22 +0000 HTTP parse error, malformed request ("GET /wp-content/plugins/pdf-generator-for-wp/package/lib/dompdf/vendor/dompdf/dompdf/I18N/Arabic/Examples/Query.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:22.785885931Z 2026-11-01 22:27:22 +0000 HTTP parse error, malformed request ("GET /client/manage/ourphp_tz.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>
openproject-1 | 2026-11-01T22:27:22.790054889Z 2026-11-01 22:27:22 +0000 HTTP parse error, malformed request ("GET /client/manage/ourphp_tz.php" - (-)): #<Puma::HttpParserError: Invalid HTTP format, parsing fails. Bad protocol HTTP/1.1>