Migration

Move from the monolith

Transfer your accounts, projects, tasks and files to a new Desklog installation.

Export the old installation

Update the monolith to an exporter-enabled image, then run the export from its Docker Compose directory. The command detects the source revision and writes the files to storage/app/desklog-export. Stop making changes in the old app after the final export. Keep these files private: they include account credentials and attachments.

docker compose exec app php artisan desklog:migration:export
docker compose cp app:/var/www/html/storage/app/desklog-export ./desklog-export

Import into the new installation

Start a fresh installation with docker compose up -d, without creating an account first. Copy the three export files into its imports directory with read access for the container user, then run the importer. It checks the files, transfers the records and verifies attachment checksums automatically. Sign in with your existing account afterwards.

docker compose exec api php artisan desklog:migration:import-files

Retire the old Docker installation

After confirming your records in the new instance, run this from the old installation directory, using its original Compose project name if you set one. This stops and removes the old containers and their Compose network. The old database and uploaded files remain in their volumes.

docker compose down

Remove the old application image

Remove the monolith image used by the default installation. If you pinned a different tag, use that image reference instead. Leave shared PostgreSQL and Redis images alone; other applications may still use them. Docker will refuse to remove an image still used by a container. Do not force its removal.

docker image rm registry.slaty.dev/slaty/desklog:latest

Delete the old data when you no longer need it

Optional and permanent: from the same old installation directory, this removes its declared database, Redis and uploaded-file volumes. Keep an independent backup outside that directory first. It does not delete external volumes, bind-mounted folders or the installation directory. Afterwards, you can delete the old installation folder, including its configuration, when nothing in it is needed. Never run this from the new installation directory.

docker compose down --volumes

Report a problem