====== 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.