meta data for this page
  •  

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
linux:sw:openproject:package_to_docker [2026/06/29 16:31] – created niziaklinux:sw:openproject:package_to_docker [2026/06/30 11:46] (current) niziak
Line 3: Line 3:
 Migrate packaged installation to docker compose. Migrate packaged installation to docker compose.
  
 +WHY: 
 +  * it will be only official supported method in future (until current distros reaches EOL)
 +  * it can be scaled easily (i.e. docker swarm)
 +  * easier migration to another machine
 +
 +References:
 +  * [[https://www.openproject.org/docs/installation-and-operations/installation/docker-compose/#openproject-installation-with-docker-compose|OpenProject installation with Docker Compose]]
 +  * [[https://www.openproject.org/docs/installation-and-operations/misc/packaged-docker-migration/#migrating-your-packaged-openproject-database-to-docker|Migrating your packaged OpenProject database to Docker]]
 +  * [[https://www.openproject.org/docs/installation-and-operations/operation/restoring/#changing-the-database-schema-from-cloud-to-on-premises|Restoring an OpenProject backup]]
 +  * [[https://www.openproject.org/docs/installation-and-operations/installation/docker/#openproject-on-docker-all-in-one-container|OpenProject on Docker all-in-one container]]
 +  * [[https://medium.com/@jaydeepawar4912/deploying-openproject-on-kubernetes-a-step-by-step-guide-with-aws-ses-email-integration-d2b625750102|Deploying OpenProject on Kubernetes: A Step-by-Step Guide with AWS SES Email Integration]]
 +  * [[https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/00fafb6a1bc9efb91d5fa3f7a0815ce61701a3d8/helmfile/apps/openproject/values.yaml]]
 + 
 +
 +===== setup docker compose =====
 +
 +Setup all containers...
 +
 +===== database migration =====
 +
 +Packaged installation creates binary ''.pgdump'' which cannot be restored directly on target container due to owner mismatch.
 +
 +Packaged installation:
 +  * user: openproject
 +  * database:  openproject
 +  * schema: openproject
 +  * owner (role): openproject
 +
 +New docker installation:
 +  * user: postgres
 +  * database:  openproject
 +  * schema: public
 +  * owner (role): postgres
 +
 +[[https://www.openproject.org/docs/installation-and-operations/operation/restoring/#changing-the-database-schema-from-cloud-to-on-premises]]
 +
 +First create ''.sql'' dump on packaged installation:
 +<code bash>
 +pg_dump $(sudo openproject config:get DATABASE_URL) -x -O | zstd > openproject.sql.zst
 +</code>
 +
 +Restore ''.sql'' dump on target. Clean installation of OpenProject in docker compose should be running. Stop all containers. Run only ''db'' container and remove everything from default installation:
 +
 +<code bash>
 +docker compose down
 +docker compose up -d db
 +docker compose exec -it -u postgres db psql -c "DROP DATABASE openproject;"
 +docker compose exec -it -u postgres db psql -c "CREATE DATABASE openproject OWNER postgres;"
 +</code>
 +
 +Restore ''.sql'' dump:
 +
 +<code bash>
 +zstd -d -c openproject.sql.zst | docker compose exec -T  -u postgres db psql -d openproject
 +</code>
 +
 +Convert schema openproject to public
 +<code bash>
 +docker compose exec -it -u postgres db psql -d openproject -c "DROP SCHEM A public CASCADE;"
 +docker compose exec -it -u postgres db psql -d openproject -c "ALTER SCHEMA openproject RENAME TO public;"
 +</code>
 +
 +Verify that there are tables and OP users:
 +<code bash>
 +docker compose exec -it -u postgres db psql -d openproject -c "\dt"
 +docker compose exec -it -u postgres db psql -d openproject -c "SELECT count(*) FROM users;"
 +</code>
 +
 +Startup everything:
 +<code bash>
 +docker compose up -d
 +</code>
 +
 +====== Restore attachments ======
 +
 +<code bash>
 +tar -C /var/openproject/assets/files/ -xf attachments-latest.tar.gz
 +chown -R 1000:1000 /var/openproject/assets
 +</code>
 +
 +====== Inbound emails ======
 +
 +[[https://www.openproject.org/docs/installation-and-operations/configuration/incoming-emails/|Configuring inbound emails]]
 +
 +====== Outbound mails ======
 +
 +References:
 +  * [[https://www.openproject.org/docs/installation-and-operations/configuration/outbound-emails/]]
 +
 +References to do:
 +  * [[https://dev.to/eddited17/how-to-fix-openproject-email-with-microsoft-365-the-easy-way-aa8|How to Fix OpenProject Email with Microsoft 365 (The Easy Way)]]
 +  * [[https://medium.com/@jaydeepawar4912/deploying-openproject-on-kubernetes-a-step-by-step-guide-with-aws-ses-email-integration-d2b625750102]]
 +
 +
 +Verify what final docker compose envs looks like with command:
 +<code bash>
 +docker compose config
 +</code>
 +
 +There are issues with passing SMTP related env to OP:
 +
 +  * [[https://github.com/opf/openproject-docker-compose/issues/155|Docker Compose SMTP configuration behavior does not match documentation #155]]
 +  * 
 +
 +Using postfix relay on local host.