Docker
There is no way to revert after migrating to v2 without a proper backup.
This guide is only for users who still have version 1.
If you are already running any 2.0.0-rc version, see the migration guide for 2.0.0-rc.
Before proceeding, ensure you are running >= 1.26.2 of PLANKA.
If not, update to this version first.
1. Create a Backup
Navigate to the directory containing your docker-compose.yml file.
Database Backup
The instance should be running while performing the backup.
docker compose exec postgres pg_dump -U postgres planka > planka_backup_$(date +%Y%m%d).sql
Volume Backups
Important: Replace the volume names (
planka_user-avatars,planka_attachments,planka_project-background-images) below with the actual volume names used in your setup.After running the commands, verify the created
.tar.gzfiles contain the expected data.
docker run --rm -v $(pwd):/backup -v planka_user-avatars:/data alpine tar -czvf /backup/user-avatars.tar.gz -C /data .
docker run --rm -v $(pwd):/backup -v planka_attachments:/data alpine tar -czvf /backup/attachments.tar.gz -C /data .
docker run --rm -v $(pwd):/backup -v planka_project-background-images:/data alpine tar -czvf /backup/project-background-images.tar.gz -C /data .
2. Stop and Remove Containers
docker compose down
3. Add New Volumes
Update the volumes sections:
services:
planka:
...
volumes:
+ - data:/app/data
- user-avatars:/app/public/user-avatars
- project-background-images:/app/public/project-background-images
+ - background-images:/app/public/background-images
- attachments:/app/private/attachments
...
volumes:
+ data:
user-avatars:
project-background-images:
+ background-images:
attachments:
db-data:
4. Clean Up Environment Variables
Remove Deprecated Variables
Delete the following from your environment section:
ALLOW_ALL_TO_CREATE_PROJECTS— Now managed via user-specific global roles.SLACK_*,GOOGLE_*,TELEGRAM_*— Replaced by in-app notifications with support for 100+ services.TZ- No longer needed, now handled automatically.
Update the TRUST_PROXY Value
Regardless of whether you've previously set the TRUST_PROXY environment variable, you have to ensure it uses the correct boolean string value. If it's currently set to 0, update it to false (even if the variable is commented out). If it's set to 1, update it to true. The use of numeric values (0 or 1) is no longer supported and may lead to unexpected behavior.
Add New Variables
Add these new environment variable if needed:
# - MAX_UPLOAD_FILE_SIZE=
# - STORAGE_LIMIT=
# - ACTIVE_USERS_LIMIT=
# The default application language used as a fallback when a user's language is not set.
# This language is also used for per-board notifications.
# - DEFAULT_LANGUAGE=en-US
# All outgoing HTTP requests (SMTP, webhooks, Apprise notifications, favicon fetching, etc.)
# will be sent through this proxy if set.
# If commented out, an internal Squid proxy will be started inside the container,
# which you can control via OUTGOING_BLOCKED_* and OUTGOING_ALLOWED_* below.
# - OUTGOING_PROXY=http://proxy:3128
# - SMTP_NAME=
# Using Gravatar directly exposes user IPs and hashed emails to a third party (GDPR risk).
# Use a proxy you control for privacy, or leave commented out or empty to disable.
# - GRAVATAR_BASE_URL=https://www.gravatar.com/avatar/
# --------------------------------------------------------------------
# Outgoing traffic control (internal Squid proxy)
# --------------------------------------------------------------------
# These IPs/hostnames will always be blocked (highest priority)
# - OUTGOING_BLOCKED_IPS=
# - OUTGOING_BLOCKED_HOSTS=localhost,postgres
# Only these IPs/hostnames will be reachable
# - OUTGOING_ALLOWED_IPS=
# - OUTGOING_ALLOWED_HOSTS=
If you are using S3 or other internal integrations, we recommend uncommenting OUTGOING_BLOCKED_HOSTS and adding their hostnames to the blocked list.
5. Pull the Docker Image
Ensure the PLANKA image is set to the latest tag in your docker-compose.yml.
docker compose pull