====== Packaged to docker ====== 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: pg_dump $(sudo openproject config:get DATABASE_URL) -x -O | zstd > openproject.sql.zst 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: 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;" Restore ''.sql'' dump: zstd -d -c openproject.sql.zst | docker compose exec -T -u postgres db psql -d openproject Convert schema openproject to public 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;" Verify that there are tables and OP users: 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;" Startup everything: docker compose up -d ====== Restore attachments ====== tar -C /var/openproject/assets/files/ -xf attachments-latest.tar.gz chown -R 1000:1000 /var/openproject/assets ====== 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: docker compose config 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.