Reorganized Docs. In Progress.

This commit is contained in:
Lauri Ojansivu 2024-06-27 11:08:43 +03:00
parent 1961e22cbd
commit ce89ff4833
202 changed files with 0 additions and 0 deletions

242
docs/Docker/Docker.md Normal file
View file

@ -0,0 +1,242 @@
## Docker Containers
- [GitHub](https://github.com/wekan/wekan/pkgs/container/wekan)
- [Docker Hub](https://hub.docker.com/r/wekanteam/wekan)
- [Quay](https://quay.io/repository/wekan/wekan)
docker-compose.yml at https://github.com/wekan/wekan
Edit it to have IP address of your server
```
export ROOT_URL=http://SERVER-IP-ADDRESS-HERE
```
Then start WeKan with:
```
docker-compose up -d
```
SSL/TLS info at https://github.com/wekan/wekan/wiki/Settings
## Please only use Docker release tags
## Repair Docker
[Repair Docker](Repair-Docker)
## Using only Docker commands
[![Docker Repository on Quay](https://quay.io/repository/wekan/wekan/status "Docker Repository on Quay")](https://quay.io/repository/wekan/wekan)
[Many tags available](https://quay.io/repository/wekan/wekan?tab=tags)
## Note: docker-compose.yml works
There is much more settings at well-documented [docker-compose.yml](https://raw.githubusercontent.com/wekan/wekan/master/docker-compose.yml), those can also be added to be used below.
If you don't need to build Wekan, use prebuilt container with docker-compose.yml from https://github.com/wekan/wekan like this:
```
docker-compose up -d
```
If you like to build from source, clone Wekan repo:
```
git clone https://github.com/wekan/wekan
```
Then edit docker-compose.yml with [these lines uncommented](https://github.com/wekan/wekan/blob/main/docker-compose.yml#L132-L142) this way:
```
#-------------------------------------------------------------------------------------
# ==== BUILD wekan-app DOCKER CONTAINER FROM SOURCE, if you uncomment these ====
# ==== and use commands: docker-compose up -d --build
build:
context: .
dockerfile: Dockerfile
args:
- NODE_VERSION=${NODE_VERSION}
- METEOR_RELEASE=${METEOR_RELEASE}
- NPM_VERSION=${NPM_VERSION}
- ARCHITECTURE=${ARCHITECTURE}
- SRC_PATH=${SRC_PATH}
- METEOR_EDGE=${METEOR_EDGE}
- USE_EDGE=${USE_EDGE}
#-------------------------------------------------------------------------------------
```
Then you can build Wekan with
```
docker-compose up -d --build
```
## Example for latest Wekan, port 2000 to Docker Wekan internal port 8080
```
docker run -d --restart=always --name wekan-db mongo:5
docker run -d --restart=always --name wekan --link "wekan-db:db" -e "WITH_API=true" -e "MONGO_URL=mongodb://wekan-db:27017/wekan" -e "ROOT_URL=http://192.168.1.200:2000" -p 2000:8080 wekanteam/wekan:v5.41
```
Specific release in above URL, not latest:
```
quay.io/wekan/wekan:v3.37
```
For latest development version, use without tag:
```
quay.io/wekan/wekan
```
## DockerBunker: Easy Docker management
[Managing Docker containers with DockerBunker](https://github.com/chaosbunker/dockerbunker)
## CaptainDuckDuck
[Managing Docker containers with CaptainDuckDuck](https://github.com/wekan/wekan/issues/1375#issuecomment-413626075)
## Backup and Upgrade
[Import/Export MongoDB data to/from Docker container](Export-Docker-Mongo-Data)
[Move Docker containers to other computer](Move-Docker-containers-to-other-computer), needs more details
### Backup before upgrade
```
docker stop wekan-app
docker exec -it wekan-db bash
cd /data
rm -rf dump
mongodump
exit
docker start wekan-app
docker cp wekan-db:/data/dump .
```
### Upgrade
```
docker stop wekan-app
docker rm wekan-app
```
Then edit docker-compose.yml to have higher wekan-app image version tag, like `image: wekanteam/wekan:v4.12`. Then:
```
docker-compose up -d
```
### Images
Quay: `image: quay.io/wekan/wekan:v4.07`
Docker Hub: `image: wekanteam/wekan:v4.07`
### Restore
```
docker stop wekan-app
docker exec -it wekan-db bash
cd /data
rm -rf dump
exit
docker cp dump wekan-db:/data/
docker exec -it wekan-db bash
cd /data
mongorestore --drop
exit
docker start wekan-app
```
## Cleanup
[Cleanup and delete all Docker data to get Docker Compose working](https://github.com/wekan/wekan/issues/985)
[Cleanup scripts to remove old data](https://github.com/wekan/wekan-cleanup)
## Docker Compose
[Docker Compose: Wekan <=> MongoDB](https://github.com/wekan/wekan-mongodb). REQUIRED: READ AND ADD SETTINGS LIKE ROOT_URL ETC TO docker-compose.yml textfile. It also has info about using same MongoDB database for office and VPN users.
[Docker Compose: Wekan <=> MongoDB <=> ToroDB => PostgreSQL read-only mirroring](https://github.com/wekan/wekan-postgresql)
TODO: [Docker Compose: Wekan <=> MongoDB <=> ToroDB => MySQL read-only mirroring](https://github.com/torodb/stampede/issues/203)
## OpenShift
[OpenShift](OpenShift)
## SLES
[SLES SP1](Install-Wekan-Docker-on-SUSE-Linux-Enterprise-Server-12-SP1)
## Rancher
[Rancher Rancher Active Proxy](Rancher---Rancher-Active-Proxy---Wekan-MongoDB-Docker)
## Testing
[Install for testing](Install-Wekan-Docker-for-testing)
## Production
[Production setup for thousands of users with Docker at AWS](AWS)
[Other way to do production](Install-Wekan-Docker-in-production)
## External MongoDB auth
[External MongoDB authentication](https://github.com/wekan/wekan/issues/1375)
## Admin Panel
First registered Wekan user will get Admin Panel on new Docker and source based
installs. You can also [enable Admin Panel manually](https://github.com/wekan/wekan/blob/main/CHANGELOG.md#v0111-rc2-2017-03-05-wekan-prerelease)
## Docker Hub - sometimes broken
Currently there are two dockerhub builds for wekan. One at [mquandalle dockerhub](https://hub.docker.com/r/mquandalle/wekan/builds/) and another at [wekanteam dockerhub](https://hub.docker.com/r/wekanteam/wekan/builds/).
[wekanteam dockerhub](https://hub.docker.com/r/wekanteam/wekan/builds/) is usually broken.
## Development:
### `docker run` examples
- MongoDB:
```
docker run -d --restart=always --name wekan-db mongo:3.2.20
```
- No build step, pull from the [quay](https://quay.io/repository/wekan/wekan?tab=tags) and
specify docker variables
```
docker run -d --restart=always --name wekan --link "wekan-db:db" -e "MONGO_URL=mongodb://db" -e "ROOT_URL=http://localhost:8080" -p 8080:8080 quay.io/wekan/wekan
```
### `docker-compose` examples
- No build step and pull from [quay](https://quay.io/repository/wekan/wekan?tab=tags)
```
sudo docker-compose up -d --nobuild
```
- Build default
```
sudo docker-compose up -d --build
```
- Build with newer Node version:
```
echo 'NODE_VERSION=v8.11.1' >> .env && \
sudo docker-compose up -d --build
```
- Build custom image off a release candidate or beta for meteor
```
echo 'METEOR_EDGE=1.5-beta.17' >> .env && \
echo 'USE_EDGE=true' >> .env && \
sudo docker-compose up -d --build
```
## Docker env for Wekan dev
* [Docker environment for Wekan Development](https://github.com/wekan/wekan-dev)
## Alpine, needs testing
* [Docker Compose: Alpine Linux and Wekan <=> MongoDB](https://github.com/wekan/wekan-launchpad)
## Webserver Config
* [Caddy Webserver Config](Caddy-Webserver-Config)
* [Nginx Webserver Config](Nginx-Webserver-Config)
* [Apache Webserver Config](Apache)

View file

@ -0,0 +1,205 @@
[Managing Docker containers with DockerBunker](https://github.com/chaosbunker/dockerbunker)
## Important info
You need to stop Wekan before importing MongoDB database with command:
`docker stop wekan-app`
And also check that in your start-wekan.sh or docker-compose.yml or similar that
you have corrent MongoDB database name admin, wekan, etc.
Otherwise it will be empty.
Docker containers are at `/var/lib/docker`, so it [may contain important data that could be hard to recover](https://github.com/wekan/wekan-mongodb/issues/8). Restoring mongodump files is much easier. [Related backup feature request](https://github.com/wekan/wekan/issues/1534). With backups it's important to [save file and directory permissions](https://askubuntu.com/questions/225865/copy-files-without-losing-file-folder-permissions).
***
Check from your Dockerfile or docker-compose.yml what is name of MongoDB container.
It can be wekan-db, mongodb or something else.
1) You can run Wekan on Docker locally like this on http://localhost:8080/
(or other port it you change 8080 in script):
```bash
docker run -d --restart=always --name wekan-db mongo:3.2.18
docker run -d --restart=always --name wekan-app --link "wekan-db:db" -e "MONGO_URL=mongodb://db" -e "ROOT_URL=http://localhost:8080" -p 8080:80 wekanteam/wekan:latest
```
2) List docker containers, your ID:s will be different:
```bash
docker ps
```
Result:
```bash
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1234wekanid wekanteam/wekan:latest "/bin/sh -c 'bash $ME" About an hour ago Up 46 minutes 0.0.0.0:8080->80/tcp wekan-app
4321mongoid mongo "/entrypoint.sh mongo" About an hour ago Up 46 minutes 27017/tcp wekan-db
```
3) Enter inside mongo container:
```bash
docker exec -it wekan-db bash
```
4) OPTIONAL: If you want to browse data inside container, you can use CLI commands like listed at
https://docs.mongodb.com/manual/reference/mongo-shell/
like this:
```bash
> mongo <==== START MONGO CLI
MongoDB shell version: 3.2.18
connecting to: test
Server has startup warnings:
2016-06-25T11:39:55.913+0000 I CONTROL [initandlisten]
2016-06-25T11:39:55.913+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2016-06-25T11:39:55.913+0000 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2016-06-25T11:39:55.913+0000 I CONTROL [initandlisten]
2016-06-25T11:39:55.913+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2016-06-25T11:39:55.913+0000 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2016-06-25T11:39:55.913+0000 I CONTROL [initandlisten]
> show dbs <=== SHOW DATABASES
admin 0.034GB
local 0.000GB
> use admin <=== CHANGE TO USE ADMIN DATABASE
switched to db admin
> show collections <=== SHOWS TABLES
activities
boards
card_comments
cards
cfs._tempstore.chunks
cfs.attachments.filerecord
cfs_gridfs._tempstore.chunks
cfs_gridfs._tempstore.files
cfs_gridfs.attachments.chunks
cfs_gridfs.attachments.files
esCounts
lists
meteor-migrations
meteor_accounts_loginServiceConfiguration
presences
users
> db.users.find() <=== LISTS ALL USERS
(list of all users here)
> exit <=== EXIT MONGO CLI
```
5) Go to / directory:
```bash
cd /
```
6) Backup database to files inside container to directory /dump, only Wekan database with name "wekan" is included, not local:
```bash
mongodump -o /dump/
```
7) Exit from inside of container:
```bash
exit
```
8) Copy backup directory /dump from inside of container to current directory:
```bash
docker cp wekan-db:/dump .
```
9a) Restore backup later (restore from /data/dump):
```bash
docker cp dump wekan-db:/data/
docker exec -it wekan-db bash
cd /data
## Only if you get errors about existing indexes, use this instead:
## mongorestore --drop --noIndexRestore --db wekan /data/dump/wekan/
mongorestore --drop --db wekan /data/dump/wekan/
exit
```
That dbname can be for example wekan:
```
## Only if you get errors about existing indexes, use this instead:
## mongorestore --drop --noIndexRestore --db wekan /data/dump/wekan/
mongorestore --drop --db wekan /data/dump/wekan/
```
9b) Or restore to another mongo database, in different port:
```bash
mongorestore --port 11235
```
10) If you would like to browse mongo database that is outside of docker in GUI, you could try some admin interface:
https://docs.mongodb.com/ecosystem/tools/administration-interfaces/
11) If you sometime after backups want to remove wekan containers to reinstall them, do (CAREFUL):
```bash
docker stop wekan-app wekan-db
docker rm wekan-app wekan-db
```
Then you can reinstall from step 1.
12) If latest version of Wekan Docker image is broken, here's how to run older version:
https://github.com/wekan/wekan/issues/659
## Backup and restore scripts
Edit these to suit your own requirements - they will delete backups older than 7 days.
Backup Script
```bash
#!/bin/bash
DATE=$(date +%Y-%m-%d-%H-%M)
SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
cd $SCRIPTPATH
mkdir -p backups/$DATE
docker ps -a | grep 'wekan-db' &> /dev/null
if [ $? = 0 ]; then
docker exec -t wekan-db bash -c "rm -fr /dump ; mkdir /dump ; mongodump -o /dump/"
docker cp wekan-db:/dump $SCRIPTPATH/backups/$DATE
tar -zc -f backups/$DATE.tgz -C $SCRIPTPATH/backups/$DATE/dump wekan
if [ -f backups/$DATE.tgz ]; then
rm -fr backups/$DATE
find $SCRIPTPATH/backups/ -name "*.tgz" -mtime +7 -delete
fi
else
echo "wekan-db container is not running"
exit 1
fi
```
Restore Script
```bash
#!/bin/bash
if [ $# -eq 0 ]
then
echo "Supply a path to a tgz file!"
exit 1
fi
SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
DATE=$(basename $1 .tgz)
docker ps -a | grep 'wekan-db' &> /dev/null
if [ $? = 0 ]; then
if [ -f $1 ]; then
docker stop wekan-app
mkdir -p $SCRIPTPATH/backups/$DATE-restore
tar -zx -f $1 -C $SCRIPTPATH/backups/$DATE-restore
docker exec -t wekan-db bash -c "rm -fr /restore ; mkdir /restore"
docker cp $SCRIPTPATH/backups/$DATE-restore/wekan wekan-db:/restore
## Only if you get errors about existing indexes, use this instead:
## docker exec -t wekan-db bash -c "mongorestore --drop --noIndexRestore --db wekan /restore/wekan/"
docker exec -t wekan-db bash -c "mongorestore --drop --db wekan /restore/wekan/"
docker start wekan-app
fi
else
echo "wekan-db container is not running"
exit 1
fi
```

View file

@ -0,0 +1,104 @@
**Purpose**: just to try Wekan on your own Linux workstation
1. [Install Docker](http://docs.docker.com/linux/step_one/)
1. [Install Docker-Compose](http://docs.docker.com/compose/install/)
1. Say we want to save our Wekan data on the host in directory `/home/johndoe/wekan/data`
1. In a given directory (say `/home/johndoe/wekan`), create a `docker-compose.yml` file with:
Use this docker-compose.yml:
https://raw.githubusercontent.com/wekan/wekan/devel/docker-compose.yml
Then, from the directory containing the `docker-compose.yml` (i.e. `/home/johndoe/wekan`), simply run `docker-compose up`. If you want it to be deamonized, you could run `docker-compose up -d`.
Your wekan data are in `/home/johndoe/wekan/data` and thus can be backed up.
**Note**
If the default host port 80 has been used and you would like to set up Wekan for another port, say, 1234, the configuration above
```
ports:
- 80:8080
```
can be replaced by
```
ports:
- 1234:8080
```
also need to change
```
- ROOT_URL=http://localhost
```
to the new port
```
- ROOT_URL=http://localhost:1234
```
(This procedure has been tested on Linux Ubuntu 14.04 and Mac OS 10.11.6.) (Tested on Docker for Windows 17.06.2-ce-win27, MongoDB does not support using mounted Windows volumes, simply remove volumes: from wekandb:)
## Testing with mail server
Above method will create an instance of Wekan without mailing features (users inviting, password recovery, neat registration) because MAIL_URL env var isn't set. This `docker-compose.yml` solves that problem by adding *mailserver* container.
```yaml
wekan:
image: quay.io/wekan/wekan
links:
- wekandb
- mailserver
environment:
- MONGO_URL=mongodb://wekandb/wekan
- ROOT_URL=http://10.2.0.180:8081
- MAIL_URL=smtp://wekan:wekan@mailserver:25
ports:
- 8081:80
wekandb:
image: mongo:3.2.21
volumes:
- /home/wekan/data:/data/db
mailserver:
image: marvambass/versatile-postfix
volumes:
- /home/wekan/dkim:/etc/postfix/dkim/
- /home/wekan/maildirs:/var/mail
command: wekan.com wekan:wekan
environment:
- ALIASES=postmaster:root;hostmaster:root;webmaster:root
```
Several additional steps needed.
1. Create dirs `/home/wekan/dkim`, `/home/wekan/maildirs` that are used by *mailserver* container
```bash
mkdir /home/wekan/dkim
mkdir /home/wekan/maildirs
```
2. Generate DKIM key
```bash
apt-get install opendkim-tools
cd /home/wekan/maildirs
opendkim-genkey -s mail -d example.com
mv mail.private dkim.key
```
## Show mails with a Docker image, without mail configuration
When you did **NOT** setup the `MAIL_URL` environment variable in Wekan, the mail message will be 'sent' to the terminal output instead of sending an actual e-mail. If you are using Docker images, list the containers via:
```sh
docker ps
```
Then display the process output:
```sh
docker logs -f <container_id>
```
With the `-f` flag (`f` for `follow`), you will see the real-time output of the process. You can exit with **CTRL + C** without affecting the Wekan process.
Via the web-interface press the '_forgot your password?_' link and trigger a reset mail. And watch the terminal output for the e-mail.

View file

@ -0,0 +1,46 @@
# Different wiki page: [Production setup for thousands of users at AWS](AWS)
***
## Single server install, for small teams
## Also see: [Using same database for both LAN and VPN Wekan](https://github.com/wekan/wekan-mongodb/blob/master/docker-compose.yml#L86-L100)
**Purpose:** run Wekan on a production Linux server with Docker and Apache or Nginx as a front-end server (reverse proxy)
## 1. Install newest Docker and Docker Compose
[Docker website](https://docker.com)
## 2. Use Wekan-MongoDB with Docker Compose
https://github.com/wekan/wekan-mongodb
[External MongoDB authentication](https://github.com/wekan/wekan/issues/1375)
## 3. Email
[Troubleshooting Email](Troubleshooting-Mail)
## 4. Configure webserver as a front-end proxy
* [Caddy](Caddy-Webserver-Config)
* [Nginx](Nginx-Webserver-Config)
* [Apache](Apache)
## 5. Launch Wekan
As `wekan` user and from `/home/wekan`, run `docker-compose up -d`
## 6. Improvements to bring to this doc
* Verify everything works
## 7. Tested on...
This procedure has been tested on:
* [VPS-SSD 2016 from OVH](https://www.ovh.com/fr/vps/vps-ssd.xml) with Ubuntu 14.04

View file

@ -0,0 +1,66 @@
More complete Docker info at:
* [Docker](Docker)
Tested to work on AWS cloud:
```
ec2-user@ip:~> cat /etc/os-release
NAME="SLES"
VERSION="12-SP1"
VERSION_ID="12.1"
PRETTY_NAME="SUSE Linux Enterprise Server 12 SP1"
ID="sles"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:suse:sles:12:sp1"
```
As root:
1) Install all updates and Docker (recommended):
```
zypper update
zypper in docker
```
2) Start editing textfile to add rights for Docker to access network:
```
vi /etc/sysconfig/SuSEfirewall2
```
3) In that textfile change FW_ROUTE line to this and save:
```
FW_ROUTE="yes"
```
4) Add rights to use docker as another user, examples: ec2-user, virtual
```
/usr/sbin/usermod -a -G docker ec2-user
```
5) Start Docker and enable it on booting
```
systemctl start docker
chkconfig docker on
```
6) Reboot so updates and firewall changes start working:
```
reboot
```
7) As normal user (examples: ec2-user, virtual) (root works still too), install MongoDB and Wekan, you can change 8080 to be another port:
```
docker run -d --restart=always --name wekan-db -v /volume1/docker/wekan/wekan-db:/data/db mongo:3.2.12
docker run -d --restart=always --name wekan --link "wekan-db:db" -e "MONGO_URL=mongodb://db" -e "ROOT_URL=http://localhost:8080" -p 8080:80 wekanteam/wekan:meteor-1.4
```
8) Now Wekan is available at http://ip-address:port , for example: http://192.168.100.50:8080 . Wekan starts at boot, and restarts on error conditions.

View file

@ -0,0 +1,46 @@
Copy all docker containers and data to new server, replacing all of docker on new server:
```
ssh ubuntu@oldserver.com
cd repos/wekan
sudo su
docker-compose stop
systemctl stop docker
cd /var/lib
tar cvpzf docker.tar.gz docker
systemctl start docker
scp docker.tar.gz root@newserver.com:/var/lib/
exit
exit
```
Then on new server restore:
```
ssh ubuntu@newserver.com
sudo su
systemctl stop docker
cd /var/lib
mv docker old-docker
tar xpvzf docker.tar.gz
systemctl start docker
exit
exit
```
***
OLD INFO:
This page is work in progress, and needs more details.
1) If you have installed Wekan with Docker like at this page:
https://github.com/wekan/wekan/wiki/Export-Docker-Mongo-Data
2) and you want to move Docker containers to another computer (laptop, server etc) that also has Docker installed, use Docker export and import commands:
https://docs.docker.com/engine/reference/commandline/export/
https://docs.docker.com/engine/reference/commandline/import/
3) If mongo data is on volume, also use this:
https://docs.docker.com/engine/tutorials/dockervolumes/#backup-restore-or-migrate-data-volumes

View file

@ -0,0 +1,27 @@
You can read up how to set up Rancher on a host together with Rancher Active Proxy and a Wekan/MongoDB Docker Stack.
This way you have Wekan running on a rancher host with automatic letsencrypt retrieval/renewal and proxying to a domain of your choice.
Here's how to set up Rancher + Rancher Active Proxy:
https://github.com/adi90x/rancher-active-proxy/issues/21
Alter the wekan service in the docker-compose like this:
```
wekan:
image: wekanteam/wekan:meteor-1.4
container_name: whatever-you-like
restart: always
ports:
- 80
labels:
- io.rancher.container.pull_image=always
- rap.port=80
- rap.host=your.domain.com
- rap.le_host=your.domain.com
- rap.le_email=your@mail.com
environment:
- MONGO_URL=mongodb://wekandb:27017/wekan
- ROOT_URL=https://your.domain.com
depends_on:
- wekandb
```

View file

@ -0,0 +1,76 @@
## 1) Create Backups first
[Backup](Backup)
Docker data is usually at `/var/lib/docker` or `/var/snap/docker/common/` (in Snap version of Docker).
## 2) No errors of MongoDB ?
- Check does docker-compose.yml have like `mongod --logpath=/dev/null --quiet`. Well, it's very quiet.
- Just remove logpath, or set it to syslog with `--syslog`.
- Or add path to somewhere where mongod service has write access, like `--logpath=/var/lib/docker/mongodb.log` or `--logpath=/var/snap/docker/common/mongodb.log`.
- If you remove `--quiet`, you get even more verbose logs.
## 3) Errors of Wekan connecting to MongoDB ?
Probably did upgrade your kernel. Please reboot.
## 4) Errors about too new or old version of MongoDB ?
Check your docker-compose.yml . Did newer Wekan with newest docker-compose.yml from https://github.com/wekan/wekan have different version of MongoDB? If yes, you should change to that old version. For example:
```
docker-compose stop
```
Then in docker-compose.yml, `image: mongo:latest` to some other like `image: mongo:3.2` or 3.2.22 or 4.2 or something. Then:
```
docker-compose start
```
Or alternatively:
```
docker-compose up -d
```
## 5) MongoDB corruption?
a) [Repair MongoDB](Repair-MongoDB)
b) [Using Meteor MongoDB to repair files](Export-from-Wekan-Sandstorm-grain-.zip-file)
## 6) Trying to upgrade Wekan?
### 1) [Backup](Backup)
### 2a) Nice way:
```
docker-compose stop
docker rm wekan-app
```
Then edit docker-compose.yml wekan-app version tag, for example:
```
image: quay.io/wekan/wekan:v4.55
```
And start Wekan:
```
docker-compose up -d
```
Done!
### 2b) Brutal way: Destroy all Docker data!
Deletes all containers etc! Clean, empty, data loss possible if you did not backup all Docker containers, and no conflicts when installing.
```
git clone https://github.com/wekan/docker-cleanup-volumes
cd docker-cleanup-columes
./start.sh
```
If you have Snap version of Docker, you need to add to scripts path of docker command, that is `/snap/bin/docker`.
Get newest docker-compose.yml from https://github.com/wekan/wekan
Start Wekan
```
docker-compose up -d
```
[Restore](Backup)