Yes it was. In the effort of transparecy, here is my backup script along with the log file that it creates for me to troubleshoot just in case.
michael@bitwarden:~$ cat /opt/bitwarden/bw_auto_update.sh
#!/bin/bash
set -euo pipefail
BW_DIR="/opt/bitwarden"
LOG="/var/log/bitwarden_update.log"
DATE="$(date '+%Y-%m-%d %H:%M:%S')"
echo "[$DATE] Bitwarden smart-update check started" >> "$LOG"
cd "$BW_DIR"
UPDATE_NEEDED=0
# 1. Update installer & setup container
SELF_OUTPUT=$(su - bitwarden -c "
cd $BW_DIR && \
./bitwarden.sh updateself 2>&1
")
echo "$SELF_OUTPUT" >> "$LOG"
if echo "$SELF_OUTPUT" | grep -qiE 'Updated|Downloading|Pulling'; then
UPDATE_NEEDED=1
fi
# 2. Update templates/config
su - bitwarden -c "
cd $BW_DIR && \
./bitwarden.sh update >> $LOG 2>&1
"
# 3. Pull images (this is what actually fetches new versions)
PULL_OUTPUT=$(su - bitwarden -c "
cd $BW_DIR && \
./bitwarden.sh pull 2>&1
")
echo "$PULL_OUTPUT" >> "$LOG"
if echo "$PULL_OUTPUT" | grep -qiE 'newer image|Downloaded|Pull complete'; then
UPDATE_NEEDED=1
fi
# 4. Restart ONLY if something changed
if [ "$UPDATE_NEEDED" -eq 1 ]; then
echo "[$DATE] Update detected — backing up and restarting" >> "$LOG"
su - bitwarden -c "
cd $BW_DIR && \
./bitwarden.sh backup >> $LOG 2>&1 && \
./bitwarden.sh restart >> $LOG 2>&1
"
echo "[$DATE] Update applied successfully" >> "$LOG"
else
echo "[$DATE] No updates found — skipping restart" >> "$LOG"
fi
echo "----------------------------------------" >> "$LOG"
michael@bitwarden:~$
===================================================
docker compose not found, falling back to docker-compose.
bitwarden.sh version 2025.12.0
Docker version 27.5.1, build 27.5.1-0ubuntu3~22.04.2
docker-compose version 1.29.2, build unknown
docker compose not found, falling back to docker-compose.
Stopping bitwarden-nginx ...
Stopping bitwarden-admin ...
Stopping bitwarden-api ...
Stopping bitwarden-events ...
Stopping bitwarden-identity ...
Stopping bitwarden-attachments ...
Stopping bitwarden-icons ...
Stopping bitwarden-notifications ...
Stopping bitwarden-sso ...
Stopping bitwarden-mssql ...
Stopping bitwarden-web ...
Stopping bitwarden-attachments ... done
Stopping bitwarden-notifications ... done
Stopping bitwarden-events ... done
Stopping bitwarden-icons ... done
Stopping bitwarden-sso ... done
Stopping bitwarden-nginx ... done
Stopping bitwarden-web ... done
Stopping bitwarden-identity ... done
Stopping bitwarden-admin ... done
Stopping bitwarden-api ... done
Stopping bitwarden-mssql ... done
Removing bitwarden-nginx ...
Removing bitwarden-admin ...
Removing bitwarden-api ...
Removing bitwarden-events ...
Removing bitwarden-identity ...
Removing bitwarden-attachments ...
Removing bitwarden-icons ...
Removing bitwarden-notifications ...
Removing bitwarden-sso ...
Removing bitwarden-mssql ...
Removing bitwarden-web ...
Removing bitwarden-nginx ... done
Removing bitwarden-mssql ... done
Removing bitwarden-api ... done
Removing bitwarden-attachments ... done
Removing bitwarden-admin ... done
Removing bitwarden-identity ... done
Removing bitwarden-events ... done
Removing bitwarden-web ... done
Removing bitwarden-sso ... done
Removing bitwarden-notifications ... done
Removing bitwarden-icons ... done
Removing network docker_default
Removing network docker_public
Pulling web ...
Pulling events ...
Pulling sso ...
Pulling identity ...
Pulling icons ...
Pulling attachments ...
Pulling notifications ...
Pulling api ...
Pulling mssql ...
Pulling admin ...
Pulling nginx ...
Pulling notifications ... pulling from bitwarden/notificati...
Pulling notifications ... digest: sha256:2aa89964ae75b534ef...
Pulling notifications ... status: image is up to date for g...
Pulling notifications ... done
Pulling icons ... pulling from bitwarden/icons
Pulling icons ... digest: sha256:86a40955922e2830f4...
Pulling icons ... status: image is up to date for g...
Pulling icons ... done
Pulling mssql ... pulling from bitwarden/mssql
Pulling mssql ... digest: sha256:40999115f801a43c64...
Pulling mssql ... status: image is up to date for g...
Pulling nginx ... pulling from bitwarden/nginx
Pulling sso ... pulling from bitwarden/sso
Pulling mssql ... done
Pulling sso ... digest: sha256:8c2c9f24fa4799e039...
Pulling sso ... status: image is up to date for g...
Pulling nginx ... digest: sha256:f2689d83870e707033...
Pulling nginx ... status: image is up to date for g...
Pulling sso ... done
Pulling nginx ... done
Pulling web ... pulling from bitwarden/web
Pulling web ... digest: sha256:7b95bd8653373ba5e4...
Pulling web ... status: image is up to date for g...
Pulling web ... done
Pulling events ... pulling from bitwarden/events
Pulling identity ... pulling from bitwarden/identity
Pulling admin ... pulling from bitwarden/admin
Pulling attachments ... pulling from bitwarden/attachments
Pulling events ... digest: sha256:368bdc53f2c3320458...
Pulling events ... status: image is up to date for g...
Pulling admin ... digest: sha256:f114e58eddb2e1797f...
Pulling admin ... status: image is up to date for g...
Pulling identity ... digest: sha256:4024ec7018982712c8...
Pulling identity ... status: image is up to date for g...
Pulling events ... done
Pulling admin ... done
Pulling attachments ... digest: sha256:bf91831200a4e07bd6...
Pulling attachments ... status: image is up to date for g...
Pulling identity ... done
Pulling attachments ... done
Pulling api ... pulling from bitwarden/api
Pulling api ... digest: sha256:36a1d7f1bde615ba83...
Pulling api ... status: image is up to date for g...
Pulling api ... done
Creating network "docker_public" with the default driver
Creating network "docker_default" with the default driver
Creating bitwarden-identity ...
Creating bitwarden-web ...
Creating bitwarden-mssql ...
Creating bitwarden-events ...
Creating bitwarden-sso ...
Creating bitwarden-attachments ...
Creating bitwarden-api ...
Creating bitwarden-icons ...
Creating bitwarden-notifications ...
Creating bitwarden-mssql ... done
Creating bitwarden-admin ...
Creating bitwarden-attachments ... done
Creating bitwarden-web ... done
Creating bitwarden-events ... done
Creating bitwarden-sso ... done
Creating bitwarden-identity ... done
Creating bitwarden-notifications ... done
Creating bitwarden-icons ... done
Creating bitwarden-api ... done
Creating bitwarden-admin ... done
Creating bitwarden-nginx ...
Creating bitwarden-nginx ... done
2025.12.0: Pulling from bitwarden/setup
Digest: sha256:3fbdce1dc459b55dc71d3beea63e39522cc7ad350d77c5521f11bad25e64b567
Status: Image is up to date for ghcr.io/bitwarden/setup:2025.12.0
ghcr.io/bitwarden/setup:2025.12.0
Bitwarden is up and running!
===================================================
visit https://vault.xxxxxxx.com
to update, run `./bitwarden.sh updateself` and then `./bitwarden.sh update`
[2025-12-28 03:30:01] Update applied successfully
----------------------------------------
[2026-01-04 03:30:01] Bitwarden smart-update check started
_ _ _ _
| |__ (_) |___ ____ _ _ __ __| | ___ _ __
| '_ \| | __\ \ /\ / / _` | '__/ _` |/ _ \ '_ \
| |_) | | |_ \ V V / (_| | | | (_| | __/ | | |
|_.__/|_|\__| \_/\_/ \__,_|_| \__,_|\___|_| |_|
Open source password management solutions
Copyright 2015-2026, Bitwarden, Inc.
https://bitwarden.com, https://github.com/bitwarden
===================================================
docker compose not found, falling back to docker-compose.
bitwarden.sh version 2025.12.1
Docker version 27.5.1, build 27.5.1-0ubuntu3~22.04.2
docker-compose version 1.29.2, build unknown
Updated self.
_ _ _ _
| |__ (_) |___ ____ _ _ __ __| | ___ _ __
| '_ \| | __\ \ /\ / / _` | '__/ _` |/ _ \ '_ \
| |_) | | |_ \ V V / (_| | | | (_| | __/ | | |
|_.__/|_|\__| \_/\_/ \__,_|_| \__,_|\___|_| |_|
Open source password management solutions
Copyright 2015-2026, Bitwarden, Inc.
https://bitwarden.com, https://github.com/bitwarden
===================================================
docker compose not found, falling back to docker-compose.
bitwarden.sh version 2025.12.1
Docker version 27.5.1, build 27.5.1-0ubuntu3~22.04.2
docker-compose version 1.29.2, build unknown
docker compose not found, falling back to docker-compose.
Update not needed
_ _ _ _
| |__ (_) |___ ____ _ _ __ __| | ___ _ __
| '_ \| | __\ \ /\ / / _` | '__/ _` |/ _ \ '_ \
| |_) | | |_ \ V V / (_| | | | (_| | __/ | | |
|_.__/|_|\__| \_/\_/ \__,_|_| \__,_|\___|_| |_|
Open source password management solutions
Copyright 2015-2026, Bitwarden, Inc.
https://bitwarden.com, https://github.com/bitwarden
===================================================
docker compose not found, falling back to docker-compose.
bitwarden.sh version 2025.12.1
Docker version 27.5.1, build 27.5.1-0ubuntu3~22.04.2
docker-compose version 1.29.2, build unknown
No command found.
Available commands:
install
start
restart
stop
update
updatedb
updaterun
updateself
updateconf
uninstall
renewcert
rebuild
compresslogs
help
See more at https://bitwarden.com/help/article/install-on-premise/#script-commands-reference
[2026-01-04 03:30:01] Update detected — backing up and restarting
_ _ _ _
| |__ (_) |___ ____ _ _ __ __| | ___ _ __
| '_ \| | __\ \ /\ / / _` | '__/ _` |/ _ \ '_ \
| |_) | | |_ \ V V / (_| | | | (_| | __/ | | |
|_.__/|_|\__| \_/\_/ \__,_|_| \__,_|\___|_| |_|
Open source password management solutions
Copyright 2015-2026, Bitwarden, Inc.
https://bitwarden.com, https://github.com/bitwarden
===================================================
docker compose not found, falling back to docker-compose.
bitwarden.sh version 2025.12.1
Docker version 27.5.1, build 27.5.1-0ubuntu3~22.04.2
docker-compose version 1.29.2, build unknown
No command found.
Available commands:
install
start
restart
stop
update
updatedb
updaterun
updateself
updateconf
uninstall
renewcert
rebuild
compresslogs
help
See more at https://bitwarden.com/help/article/install-on-premise/#script-commands-reference
_ _ _ _
| |__ (_) |___ ____ _ _ __ __| | ___ _ __
| '_ \| | __\ \ /\ / / _` | '__/ _` |/ _ \ '_ \
| |_) | | |_ \ V V / (_| | | | (_| | __/ | | |
|_.__/|_|\__| \_/\_/ \__,_|_| \__,_|\___|_| |_|
Open source password management solutions
Copyright 2015-2026, Bitwarden, Inc.
https://bitwarden.com, https://github.com/bitwarden
===================================================
docker compose not found, falling back to docker-compose.
bitwarden.sh version 2025.12.1
Docker version 27.5.1, build 27.5.1-0ubuntu3~22.04.2
docker-compose version 1.29.2, build unknown
docker compose not found, falling back to docker-compose.
Stopping bitwarden-nginx ...
Stopping bitwarden-admin ...
Stopping bitwarden-sso ...
Stopping bitwarden-web ...
Stopping bitwarden-api ...
Stopping bitwarden-icons ...
Stopping bitwarden-events ...
Stopping bitwarden-mssql ...
Stopping bitwarden-attachments ...
Stopping bitwarden-notifications ...
Stopping bitwarden-identity ...
Stopping bitwarden-attachments ... done
Stopping bitwarden-sso ... done
Stopping bitwarden-notifications ... done
Stopping bitwarden-events ... done
Stopping bitwarden-icons ... done
Stopping bitwarden-nginx ... done
Stopping bitwarden-identity ... done
Stopping bitwarden-api ... done
Stopping bitwarden-web ... done
Stopping bitwarden-admin ... done
Stopping bitwarden-mssql ... done
Removing bitwarden-nginx ...
Removing bitwarden-admin ...
Removing bitwarden-sso ...
Removing bitwarden-web ...
Removing bitwarden-api ...
Removing bitwarden-icons ...
Removing bitwarden-events ...
Removing bitwarden-mssql ...
Removing bitwarden-attachments ...
Removing bitwarden-notifications ...
Removing bitwarden-identity ...
Removing bitwarden-attachments ... done
Removing bitwarden-nginx ... done
Removing bitwarden-mssql ... done
Removing bitwarden-events ... done
Removing bitwarden-icons ... done
Removing bitwarden-sso ... done
Removing bitwarden-api ... done
Removing bitwarden-identity ... done
Removing bitwarden-notifications ... done
Removing bitwarden-web ... done
Removing bitwarden-admin ... done
Removing network docker_public
Removing network docker_default
Pulling events ...
Pulling mssql ...
Pulling attachments ...
Pulling notifications ...
Pulling admin ...
Pulling api ...
Pulling icons ...
Pulling web ...
Pulling sso ...
Pulling identity ...
Pulling nginx ...
Pulling sso ... pulling from bitwarden/sso
Pulling events ... pulling from bitwarden/events
Pulling identity ... pulling from bitwarden/identity
Pulling icons ... pulling from bitwarden/icons
Pulling notifications ... pulling from bitwarden/notificati...
Pulling sso ... digest: sha256:bb41795d3a03d772ef...
Pulling sso ... status: image is up to date for g...
Pulling events ... digest: sha256:6b3bd398c28a5b378c...
Pulling events ... status: image is up to date for g...
Pulling notifications ... digest: sha256:71416ef461c9bcda0d...
Pulling notifications ... status: image is up to date for g...
Pulling identity ... digest: sha256:00f99b9416a3f6c9b0...
Pulling identity ... status: image is up to date for g...
Pulling sso ... done
Pulling icons ... digest: sha256:56ccb211bd4da03ecb...
Pulling icons ... status: image is up to date for g...
Pulling events ... done
Pulling notifications ... done
Pulling identity ... done
Pulling icons ... done
Pulling nginx ... pulling from bitwarden/nginx
Pulling attachments ... pulling from bitwarden/attachments
Pulling api ... pulling from bitwarden/api
Pulling mssql ... pulling from bitwarden/mssql
Pulling attachments ... digest: sha256:244a6637c6870e5b24...
Pulling attachments ... status: image is up to date for g...
Pulling admin ... pulling from bitwarden/admin
Pulling nginx ... digest: sha256:08d45f47f46e75dd00...
Pulling nginx ... status: image is up to date for g...
Pulling api ... digest: sha256:81d845e4e05f5f4a2a...
Pulling api ... status: image is up to date for g...
Pulling attachments ... done
Pulling nginx ... done
Pulling mssql ... digest: sha256:2402aea4c643da0f32...
Pulling mssql ... status: image is up to date for g...
Pulling api ... done
Pulling admin ... digest: sha256:0a87212dc9ff96034a...
Pulling admin ... status: image is up to date for g...
Pulling mssql ... done
Pulling admin ... done
Pulling web ... pulling from bitwarden/web
Pulling web ... digest: sha256:5bdc22156c1f003cf2...
Pulling web ... status: image is up to date for g...
Pulling web ... done
Creating network "docker_public" with the default driver
Creating network "docker_default" with the default driver
Creating bitwarden-events ...
Creating bitwarden-sso ...
Creating bitwarden-web ...
Creating bitwarden-mssql ...
Creating bitwarden-icons ...
Creating bitwarden-identity ...
Creating bitwarden-api ...
Creating bitwarden-notifications ...
Creating bitwarden-attachments ...
Creating bitwarden-attachments ... done
Creating bitwarden-web ... done
Creating bitwarden-mssql ... done
Creating bitwarden-admin ...
Creating bitwarden-events ... done
Creating bitwarden-api ... done
Creating bitwarden-identity ... done
Creating bitwarden-icons ... done
Creating bitwarden-sso ... done
Creating bitwarden-notifications ... done
Creating bitwarden-admin ... done
Creating bitwarden-nginx ...
Creating bitwarden-nginx ... done
2025.12.1: Pulling from bitwarden/setup
Digest: sha256:b7ddcc14b6b61af3144c2b8585877de03a385915a22042d42357c2cf3ef0fcc4
Status: Image is up to date for ghcr.io/bitwarden/setup:2025.12.1
ghcr.io/bitwarden/setup:2025.12.1
Bitwarden is up and running!
===================================================
visit https://vault.xxxxxx.com
to update, run `./bitwarden.sh updateself` and then `./bitwarden.sh update`
[2026-01-04 03:30:01] Update applied successfully
----------------------------------------
michael@bitwarden:/var/log$