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