### Setup BIM Edition Dependencies Source: https://www.openproject.org/docs/development/development-environment/docker Start the worker service and then execute the setup-bim command within the worker container to install tools for IFC file conversion. ```bash docker compose up -d worker ``` ```bash docker compose exec -u root worker setup-bim ``` -------------------------------- ### Start OpenProject Configuration Wizard Source: https://www.openproject.org/docs/installation-and-operations/installation/packaged Start the OpenProject configuration wizard. Use 'reconfigure' for interactive setup or 'configure' for non-interactive setup using stored values. ```bash sudo openproject reconfigure #interactive - manual choices are stored in /etc/openproject/installer.dat sudo openproject configure #non-interactive - using values stored in /etc/openproject/installer.dat ``` -------------------------------- ### Setup Backend and Frontend Dependencies Source: https://www.openproject.org/docs/development/development-environment/docker Run backend setup, which includes database migrations and seeding, followed by installing frontend npm packages. ```bash docker compose run --rm backend setup ``` ```bash docker compose run --rm frontend npm install ``` -------------------------------- ### Setup Development Environment Source: https://www.openproject.org/docs/development/development-environment/macos Install code dependencies, link plugin modules, and export translation files. ```bash bin/setup_dev ``` -------------------------------- ### Docker All-in-One Container Setup Example Source: https://www.openproject.org/docs/installation-and-operations/operation/backing-up This command demonstrates how to launch the OpenProject all-in-one Docker container, including binding local volumes for data persistence. Back up the specified local directories. ```bash sudo mkdir -p /var/lib/openproject/{pgdata,assets} docker run -d -p 8080:80 --name openproject -e SECRET_KEY_BASE=secret \ -v /var/lib/openproject/pgdata:/var/openproject/pgdata \ -v /var/lib/openproject/assets:/var/openproject/assets \ openproject/openproject:17 ``` -------------------------------- ### Setup OpenProject Development Environment Source: https://www.openproject.org/docs/development/development-environment/linux Installs code dependencies, links plugin modules, and exports translation files for the OpenProject development environment. This is a crucial step after cloning the repository. ```bash bin/setup_dev ``` -------------------------------- ### Copy and Edit Environment File Source: https://www.openproject.org/docs/installation-and-operations/installation/docker-compose Copy the example environment file and edit it to customize your OpenProject setup. Use a text editor like vim to modify the settings. ```bash cp .env.example .env vim .env ``` -------------------------------- ### Relaunch OpenProject with PostgreSQL 17 (Docker All-in-One) Source: https://www.openproject.org/docs/installation-and-operations/misc/migration-to-postgresql17 Starts a new OpenProject container, connecting it to the upgraded PostgreSQL 17 data volume. Ensure environment variables and versions match your setup. ```bash docker run -d -p 8080:80 --name openproject \ -e OPENPROJECT_HOST__NAME=openproject.example.com \ -e SECRET_KEY_BASE=secret \ -v /var/lib/openproject/pgdata17:/var/openproject/pgdata \ -v /var/lib/openproject/assets:/var/openproject/assets \ openproject/openproject:17 ``` -------------------------------- ### Get Portfolio Form Source: https://www.openproject.org/docs/api/v3/spec.yml Retrieves the form for a portfolio, which can be used to start the guided update of a portfolio. ```APIDOC ## POST /api/v3/portfolios/{id}/form ### Description Retrieves the form for a portfolio, which can be used to start the guided update of a portfolio. ### Method POST ### Endpoint /api/v3/portfolios/{id}/form ### Parameters #### Path Parameters - **id** (integer) - Required - Portfolio id ### Request Body - **empty** (object) - Optional - Empty request to get the form initially in order to start the guided update of a portfolio ### Request Example { "example": "{}" } ### Response #### Success Response (200) OK #### Error Response - **400**: Invalid Request Body ``` -------------------------------- ### Get Schema for Start Date Value Source: https://www.openproject.org/docs/api/endpoints/values-property Example response when requesting the schema for a 'startDate' property. This schema indicates that the 'startDate' property is a String and its corresponding value is of type Date. ```json { "_type": "Schema", "property": { "name": "Property", "type": "String" }, "value": { "name": "Start date", "type": "Date" }, "_links": { "self": { "href": "api/v3/values/schemas/startDate" } } } ``` -------------------------------- ### Get Example Schema Source: https://www.openproject.org/docs/api/v3/spec.yml Retrieves the schema for examples, defining the structure and types of example attributes. ```APIDOC ## GET /api/v3/example/schema ### Description Retrieves the schema for examples, defining the structure and types of example attributes. ### Method GET ### Endpoint /api/v3/example/schema ### Response #### Success Response (200) - **_dependencies** (array) - An array of dependencies for the schema. - **_links** (object) - Links to related resources. - **_type** (string) - The type of the schema. - **lockVersion** (object) - Schema definition for the lockVersion attribute. - **name** (string) - The name of the attribute. - **type** (string) - The data type of the attribute. - **writable** (boolean) - Indicates if the attribute is writable. - **status** (object) - Schema definition for the status attribute. - **_embedded** (object) - Embedded resources related to the status. - **allowedValues** (array) - An array of allowed status objects. - **_links** (object) - Links to related resources. - **_type** (string) - The type of the status. - **createdAt** (string) - The creation timestamp of the status. - **defaultDoneRatio** (integer) - The default done ratio for the status. - **id** (integer) - The ID of the status. - **isClosed** (boolean) - Indicates if the status is closed. - **isDefault** (boolean) - Indicates if the status is the default. - **name** (string) - The name of the status. - **position** (integer) - The position of the status. - **updatedAt** (string) - The last update timestamp of the status. - **_links** (object) - Links to related resources. - **type** (string) - The data type of the status. ``` -------------------------------- ### Start Development Stack Source: https://www.openproject.org/docs/development/development-environment/docker Start the backend and frontend containers. Use 'docker compose up backend' to start only the backend, or 'docker compose up backend frontend' to include frontend logs. ```bash docker compose up backend ``` ```bash docker compose up backend frontend ``` -------------------------------- ### Install PostgreSQL 17 (SLES) Source: https://www.openproject.org/docs/installation-and-operations/misc/migration-to-postgresql17 Installs PostgreSQL 17 on SLES systems. This includes adding a repository, installing packages, and starting the service. ```bash TODO: sudo zypper addrepo https://download.postgresql.org/pub/repos/zypp/17/suse/sles-15.5-x86_64/ openSUSE-PostgreSQL-17 TODO: sudo zypper install --repo openSUSE-PostgreSQL-17 postgresql17 postgresql17-server postgresql17-libs postgresql17-contrib #TODO:? sudo su - postgres -c '/usr/lib/postgresql17/bin/initdb -D /var/lib/pgsql/17/data' sudo systemctl enable postgresql sudo systemctl start postgresql ``` -------------------------------- ### URL-Encoded Filter Example Source: https://www.openproject.org/docs/api/filters Shows how the example filter is URL-encoded when passed as a GET parameter to the work packages endpoint. ```url https://community.openproject.org/api/v3/work_packages?filters=%5B%7B%22subjectOrId%22:%7B%22operator%22:%22**%22,%22values%22:%5B%2212%22%5D%7D%7D,%7B%22status%22:%7B%22operator%22:%22=%22,%22values%22:%5B%225%22%5D%7D%7D%5D ``` -------------------------------- ### List Users Example Source: https://www.openproject.org/docs/api/endpoints/principals This example demonstrates how to list users. It includes parameters for pagination, filtering, sorting, and selecting specific properties. The response schema is also provided. ```json { "_type": "Collection", "total": 2, "count": 2, "_links": { "self": { "href": "/api/v3/users" } }, "_embedded": { "elements": [ { "_abbreviated": "User resource shortened for brevity", "_type": "User", "id": 1337 }, { "_abbreviated": "User resource shortened for brevity", "_type": "User", "id": 1338 } ] } } ``` -------------------------------- ### Start OpenProject with Profiling Enabled (Custom Gemfile) Source: https://www.openproject.org/docs/development/profiling Start the OpenProject application using thin, enabling the rack profiler, and specifying a custom gemfile. ```bash CUSTOM_PLUGIN_GEMFILE=gemfile.profiling OPENPROJECT_RACK_PROFILER_ENABLED=true thin start ``` -------------------------------- ### Verify Ruby and Node.js Installation Source: https://www.openproject.org/docs/development/development-environment/macos Checks the installed versions of Ruby, Bundler, Node.js, and NPM to confirm the environment setup. ```bash $ ruby --version ruby 4.0.1 (2026-01-13 revision e04267a14b) +PRISM [arm64-darwin25] $ bundler --version 4.0.3 node --version v22.2.0 npm --version 10.5.0 ``` -------------------------------- ### Start OpenProject with Profiling Enabled (Development Mode) Source: https://www.openproject.org/docs/development/profiling Start the OpenProject application using thin and enable the rack profiler with the OPENPROJECT_RACK_PROFILER_ENABLED environment variable. This starts the app in development mode. ```bash OPENPROJECT_RACK_PROFILER_ENABLED=true thin start ``` -------------------------------- ### Install PostgreSQL 17 (Debian/Ubuntu) Source: https://www.openproject.org/docs/installation-and-operations/misc/migration-to-postgresql17 Installs PostgreSQL 17 and creates a new cluster on Debian/Ubuntu systems. This command also starts the new cluster. ```bash sudo apt update sudo apt install postgresql-17 sudo pg_createcluster 17 main --start ``` -------------------------------- ### View Configuration Response Source: https://www.openproject.org/docs/api/endpoints/configuration This example shows the structure of the response when viewing the system configuration. It includes general settings and links to related resources like user preferences. ```json { "_type": "Configuration", "_links": { "self": { "href": "/api/v3/configuration" }, "userPreferences": { "href": "/api/v3/my_preferences" } }, "maximumAttachmentFileSize": 5242880, "hostName": "example.com:8080", "perPageOptions": [ 1, 10, 100 ], "durationFormat": "hours_only", "activeFeatureFlags": [ "aFeatureFlag", "anotherFeatureFlag" ] } ``` -------------------------------- ### Configure Environment Variables Source: https://www.openproject.org/docs/development/development-environment/docker Copy the example .env file and optionally set the OPENPROJECT_EDITION to 'bim' if developing the BIM Edition. ```bash cp .env.example .env ``` ```bash OPENPROJECT_EDITION=bim ``` -------------------------------- ### Get Sprint Example Source: https://www.openproject.org/docs/api/endpoints/sprints This example shows the structure of a successful response when retrieving a sprint by its ID. It includes details about the sprint, its dates, and associated links. ```json { "_type": "Sprint", "id": 3, "name": "Sprint 11", "startDate": "2026-02-02", "finishDate": "2026-02-09", "createdAt": "2026-02-06T09:30:49.157Z", "updatedAt": "2026-02-10T09:53:21.620Z", "_links": { "self": { "href": "/api/v3/sprints/3", "title": "Sprint 11" }, "definingWorkspace": { "href": "/api/v3/projects/10", "title": "Scrum project" }, "status": { "href": "urn:openproject-org:api:v3:sprints:status:in_planning", "title": "In planning" } } } ``` -------------------------------- ### Start ng Serve Middleware Source: https://www.openproject.org/docs/development/testing/running-tests-locally Start the Angular development server, binding it to a specified interface, to enable development against a local setup with remote CSP access. ```bash FE_HOST= PROXY_HOSTNAME= npm run serve ``` -------------------------------- ### Copy Database Configuration Source: https://www.openproject.org/docs/installation-and-operations/installation/manual Copies the example database configuration file to create the actual configuration file for your OpenProject instance. ```bash [openproject@host] cp config/database.yml.example config/database.yml ``` -------------------------------- ### Get Project Ancestors Source: https://www.openproject.org/docs/api/endpoints/projects Retrieves an array of all ancestors of the project, starting from the root node. ```APIDOC ## GET PROJECT ANCESTORS ### Description Array of all ancestors of the project, down from the root node (first element) to the parent (last element). ### Method GET ### Endpoint /projects/{id}/ancestors ### Parameters #### Path Parameters - **id** (integer) - Required - The ID of the project. ### Response #### Success Response (200) - **_type** (string) - The type of the returned object (e.g., 'Collection'). - **_count** (integer) - The number of ancestors. - **_embedded** (object) - **elements** (array) - An array of ancestor projects. #### Error Response (Details on potential errors, e.g., permission denied) ``` -------------------------------- ### Fetch Projects API Request Example Source: https://www.openproject.org/docs/system-admin-guide/authentication/oauth-applications This example shows how to make a GET request to the /api/v3/projects endpoint using Postman. Ensure the {{protocolHostPort}} variable is correctly set for your OpenProject instance. ```http GET {{protocolHostPort}}/api/v3/projects ``` -------------------------------- ### Run OpenProject Installation Steps Source: https://www.openproject.org/docs/installation-and-operations/installation/manual After modifying the Gemfile, execute these commands to install dependencies, migrate the database, seed data, and precompile assets. ```bash [openproject@all] cd ~/openproject [openproject@all] bundle install [openproject@all] npm install [openproject@all] RAILS_ENV="production" ./bin/rake db:migrate [openproject@all] RAILS_ENV="production" ./bin/rake db:seed [openproject@all] RAILS_ENV="production" ./bin/rake assets:precompile ``` -------------------------------- ### View Post Example Source: https://www.openproject.org/docs/api/endpoints/posts This example shows the structure of a successful response when retrieving an individual post. It includes embedded project information and links to related resources. ```json { "_embedded": { "project": { "_type": "Project..." } }, "_links": { "addAttachment": { "href": "/api/v3/posts/1/attachments", "method": "post" }, "attachments": { "href": "/api/v3/posts/1/attachments" }, "project": { "href": "/api/v3/projects/1", "title": "A project with a title" }, "self": { "href": "/api/v3/posts/1" } }, "_type": "Post", "id": 1, "subject": "A post with a subject" } ``` -------------------------------- ### Get Kubernetes Pod Names Source: https://www.openproject.org/docs/installation-and-operations/operation/control List the names of running pods in the OpenProject namespace for Kubernetes installations. ```bash kubectl get pods -n openproject ``` -------------------------------- ### Run OpenProject Configuration Source: https://www.openproject.org/docs/installation-and-operations/misc/migration Execute this command after restoring data and updating installer.dat to complete the configuration process. It applies previous settings, handles new features, performs database migrations, and starts the server. ```bash openproject configure ``` -------------------------------- ### Get current database URL Source: https://www.openproject.org/docs/installation-and-operations/misc/time-entries-corrupted-by-10-4 Retrieve the DATABASE_URL configuration for your OpenProject installation. This is needed to connect to your database. ```bash $ openproject config:get DATABASE_URL #=> e.g.: postgres://:@:/ ``` ```bash $ openproject config:get DATABASE_URL postgres://openproject:L0BuQvlagjmxdOl6785kqwsKnfCEx1dv@127.0.0.1:45432/openproject ``` -------------------------------- ### Ubuntu: Download and Install OpenProject Source: https://www.openproject.org/docs/installation-and-operations/installation/packaged Update the package index again after adding the new repository and then install the OpenProject package. ```bash sudo apt-get update sudo apt-get install openproject ``` -------------------------------- ### Get Notification by ID (Mention) Source: https://www.openproject.org/docs/api/endpoints/notifications Retrieves a specific notification identified by its ID. This example shows a notification for being mentioned in a comment. ```json { "_type": "Notification", "id": 1, "readIAN": false, "reason": "mentioned", "createdAt": "2022-04-05T14:38:28.881Z", "updatedAt": "2022-04-06T09:03:24.591Z", "_embedded": { "author": { "_abbreviated": "User resource shortened for brevity", "_type": "User", "id": 13, "name": "Darth Nihilus" }, "project": { "_abbreviated": "Project resource shortened for brevity", "_type": "Project", "id": 11, "name": "Jedi Remnant Locator" }, "activity": { "_abbreviated": "Activity resource shortened for brevity", "_type": "Activity::Comment", "id": 180, "version": 3 }, "resource": { "_abbreviated": "WorkPackage resource shortened for brevity", "_type": "WorkPackage", "id": 77, "subject": "Educate Visas Marr" }, "details": [] }, "_links": { "self": { "href": "/api/v3/notifications/1" }, "readIAN": { "href": "/api/v3/notifications/1/read_ian", "method": "post" }, "actor": { "href": "/api/v3/users/13", "title": "Darth Nihilus" }, "project": { "href": "/api/v3/projects/11", "title": "Jedi Remnant Locator" }, "activity": { "href": "/api/v3/activities/180" }, "resource": { "href": "/api/v3/work_packages/77", "title": "Educate Visas Marr" } } } ``` -------------------------------- ### Create Backup for OpenProject Community Instance Source: https://www.openproject.org/docs/enterprise-guide/enterprise-cloud-guide/enterprise-cloud-faq Use this command to create a database dump and attachments for migrating your OpenProject community instance to the Enterprise cloud. Ensure you are the root user. ```bash openproject run backup ``` -------------------------------- ### Get Notification Collection Example Source: https://www.openproject.org/docs/api/endpoints/notifications Retrieves a collection of in-app notifications. Supports pagination, sorting, grouping, and filtering by various criteria. ```json { "_type": "Collection", "count": 2, "total": 2, "offset": 1, "pageSize": 20, "_embedded": { "elements": [ { "_abbreviated": "Notification resource shortened for brevity", "id": 1, "readIAN": false, "reason": "mentioned" }, { "_abbreviated": "Notification resource shortened for brevity", "id": 2, "readIAN": false, "reason": "dateAlert", "_embedded": { "details": [ { "_type": "Values::Property", "property": "startDate", "value": "2021-01-01", "_links": { "self": { "href": "api/v3/notifications/123/details/0" }, "schema": { "href": "api/v3/values/schemas/startDate" } } } ] } } ], "detailsSchemas": [ { "_type": "Schema", "property": { "name": "Property", "type": "String" }, "value": { "name": "Start date", "type": "Date" }, "_links": { "self": { "href": "/api/v3/values/schemas/startDate" } } } ] }, "_links": { "self": { "href": "/api/v3/notifications?offset=1&pageSize=20" }, "jumpTo": { "href": "/api/v3/notifications?filters=%5B%5D&offset=%7Boffset%7D&pageSize=20", "templated": true }, "changeSize": { "href": "/api/v3/notifications?filters=%5B%5D&offset=1&pageSize=%7Bsize%7D", "templated": true } } } ``` -------------------------------- ### Get Notification by ID (Date Alert) Source: https://www.openproject.org/docs/api/endpoints/notifications Retrieves a specific notification identified by its ID. This example shows a notification related to a date alert. ```json { "_type": "Notification", "id": 1, "readIAN": false, "reason": "dateAlert", "createdAt": "2022-04-05T14:38:28.361Z", "updatedAt": "2022-04-06T09:03:24.347Z", "_embedded": { "project": { "_abbreviated": "Project resource shortened for brevity", "_type": "Project", "id": 11, "name": "Jedi Remnant Locator" }, "resource": { "_abbreviated": "WorkPackage resource shortened for brevity", "_type": "WorkPackage", "id": 77, "subject": "Educate Visas Marr" }, "details": [ { "_type": "Values::Property", "property": "startDate", "value": "2021-01-01", "_links": { "self": { "href": "api/v3/notifications/123/details/0" }, "schema": { "href": "api/v3/values/schemas/startDate" } } } ] }, "_links": { "self": { "href": "/api/v3/notifications/1" }, "readIAN": { "href": "/api/v3/notifications/1/read_ian", "method": "post" }, "actor": { "href": null }, "project": { "href": "/api/v3/projects/11", "title": "Jedi Remnant Locator" }, "activity": { "href": null }, "resource": { "href": "/api/v3/work_packages/77", "title": "Educate Visas Marr" } } } ``` -------------------------------- ### Start Full OpenProject Stack (Docker Compose) Source: https://www.openproject.org/docs/installation-and-operations/misc/migration-to-postgresql17 Brings up all OpenProject services, including the newly configured PostgreSQL 17 database. This completes the migration process. ```bash docker compose up -d ``` -------------------------------- ### PostgreSQL Database Configuration Source: https://www.openproject.org/docs/installation-and-operations/installation/manual Example configuration for the production environment in `config/database.yml` using PostgreSQL. Ensure the database, username, and password match your setup. ```yaml production: adapter: postgresql encoding: unicode database: openproject pool: 5 username: openproject password: openproject ``` -------------------------------- ### Quick Start OpenProject Docker Container Source: https://www.openproject.org/docs/installation-and-operations/installation/docker Run this command to quickly start an OpenProject instance for testing. It maps port 8080 and sets essential environment variables. The container will run in the foreground, displaying logs. ```bash docker run -it -p 8080:80 \ -e SECRET_KEY_BASE=secret \ -e OPENPROJECT_HOST__NAME=localhost:8080 \ -e OPENPROJECT_HTTPS=false \ -e OPENPROJECT_DEFAULT__LANGUAGE=en \ openproject/openproject:17 ``` -------------------------------- ### Create Database Dump with openproject Source: https://www.openproject.org/docs/installation-and-operations/misc/changing-database-encoding Use the `openproject run backup` command to create a full database backup. Note the path of the generated dump file for later use. ```bash openproject run backup ```