Table of Contents

Packaged to docker

Migrate packaged installation to docker compose.

WHY:

References:

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:

New docker installation:

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

Configuring inbound emails

Outbound mails

References:

References to do:

Verify what final docker compose envs looks like with command:

docker compose config

There are issues with passing SMTP related env to OP:

Using postfix relay on local host.