Revertir una actualización
TypeType puede volver a las imágenes de la aplicación que se ejecutaban antes sin borrar sus volúmenes de datos. Prepara la información para revertir antes de cada actualización; la etiqueta latest avanza y no sirve como referencia para volver atrás.
Nunca borres los volúmenes
No ejecutes docker compose down -v ni elimines los volúmenes de PostgreSQL, Garage o secretos. Un docker compose down normal los conserva.
Antes de actualizar
Abre el directorio de la pila: ~/typetype-stack salvo que hayas elegido otro, o el directorio que contiene docker-compose.yml en una instalación manual. Consulta Elegir el directorio.
cd "$STACK_DIR"
mkdir rollback-before-update
cp .env docker-compose.yml rollback-before-update/
for file in docker-compose.arm64.yml docker-compose.override.yml nginx.conf garage.toml; do
[ ! -f "$file" ] || cp -a "$file" rollback-before-update/
done
docker compose exec -T postgres pg_dump -U typetype typetype > rollback-before-update/typetype.sqlEl instalador compatible hace automáticamente la parte de los archivos de la pila y las referencias de imágenes antes de una actualización. Sus copias con marca de tiempo se guardan en .typetype-backups/. Un volcado de la base de datos sigue siendo una copia de seguridad aparte, a cargo del operador.
Anota las cuatro referencias de imagen que se están ejecutando ahora:
docker image inspect "$(docker compose images -q typetype)" --format '{{index .RepoDigests 0}}'
docker image inspect "$(docker compose images -q typetype-server)" --format '{{index .RepoDigests 0}}'
docker image inspect "$(docker compose images -q typetype-downloader)" --format '{{index .RepoDigests 0}}'
docker image inspect "$(docker compose images -q typetype-token)" --format '{{index .RepoDigests 0}}'Cada comando muestra una referencia inmutable que termina en @sha256:.... Guarda las cuatro salidas con la copia y etiquétalas como web, server, downloader y token.
Restaurar la versión anterior de la aplicación
Para la pila actual sin eliminar sus volúmenes:
docker compose downRestaura los archivos de la pila y la configuración anteriores:
cp rollback-before-update/.env .env
cp rollback-before-update/docker-compose.yml docker-compose.yml
for file in docker-compose.arm64.yml docker-compose.override.yml nginx.conf garage.toml; do
[ ! -f "rollback-before-update/$file" ] || cp -a "rollback-before-update/$file" "$file"
doneAbre .env y asigna a estos valores las cuatro referencias anotadas antes de la actualización:
TYPETYPE_WEB_IMAGE=ghcr.io/typetype-video/typetype@sha256:WEB_DIGEST
TYPETYPE_SERVER_IMAGE=ghcr.io/typetype-video/typetype-server@sha256:SERVER_DIGEST
TYPETYPE_DOWNLOADER_IMAGE=ghcr.io/typetype-video/typetype-downloader@sha256:DOWNLOADER_DIGEST
TYPETYPE_TOKEN_IMAGE=ghcr.io/typetype-video/typetype-token@sha256:TOKEN_DIGESTUsa los valores completos que mostró Docker, no los marcadores de ejemplo. Después valida la configuración restaurada y vuelve a crear la pila:
docker compose config -q
docker compose pull
docker compose up -d --force-recreate --wait --wait-timeout 180
docker compose ps
curl -fsS http://localhost:8080/health
curl -fsS http://localhost:8081/health
curl -fsS http://localhost:8082/api/downloader/health/deepEsto cambia solo la versión de la aplicación. Las cuentas, el historial, los ajustes, las descargas, la configuración de Garage y los secretos permanecen en los volúmenes existentes.
Restaurar la base de datos solo cuando haga falta
No restaures la base de datos solo porque se haya revertido la aplicación. La mayoría de las reversiones de la aplicación funcionan con los datos existentes. Restaura la copia solo cuando las notas de la versión lo exijan o cuando el servidor anterior no pueda arrancar con el esquema actual.
Primero para los servicios que se conectan a PostgreSQL:
docker compose stop typetype typetype-server typetype-downloader postgres-init
docker compose exec -T postgres dropdb -U typetype --if-exists typetype
docker compose exec -T postgres createdb -U typetype typetype
docker compose exec -T postgres psql -U typetype typetype < rollback-before-update/typetype.sql
docker compose up -d --wait --wait-timeout 180Esto devuelve la base de datos a su estado anterior a la actualización, así que los cambios hechos después de la copia se pierden.
Volver a las actualizaciones normales
Cuando la versión defectuosa haya sido sustituida, quita de .env los cuatro valores TYPETYPE_*_IMAGE o déjalos vacíos. La siguiente actualización normal volverá a seguir las imágenes estables latest. Consulta Mantenimiento.