Mantenimiento
La operación del día a día una vez que la pila está en marcha.
Actualizar
Si instalaste TypeType con el instalador recomendado, vuelve a ejecutarlo. Actualiza los archivos de la pila que gestiona, conserva .env, los overrides de Compose y los volúmenes de datos, descarga las imágenes de la versión, espera a los servicios, verifica las versiones de los componentes y aprovisiona los recursos de Garage que se hayan añadido:
curl -fsSL https://raw.githubusercontent.com/TypeType-Video/TypeType/main/scripts/install-stack.sh | bash -s -- --yes --dir "$STACK_DIR"
cd "$STACK_DIR"
docker compose ps$STACK_DIR es el directorio de tu pila, ~/typetype-stack salvo que hayas elegido otro: consulta Elegir el directorio.
Los puertos configurados no cambian cuando se vuelve a ejecutar el instalador. Las cuentas, el historial, las descargas y los secretos de los servicios permanecen en .env y en los volúmenes con nombre. Antes de cambiar los archivos gestionados, el instalador crea bajo .typetype-backups/ un directorio con marca de tiempo que contiene los archivos anteriores de la pila y, cuando la configuración antigua es válida, sus referencias de imágenes resueltas y en ejecución.
En una instalación sin scripts, sustituye primero el archivo Compose y los scripts por los de la versión actual, conservando .env, cualquier override y la configuración personalizada. Después valida 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 psMigrar una pila antigua de Priveetee
Las instalaciones antiguas pueden seguir usando archivos Compose que hacen referencia a ghcr.io/priveetee/.... Ejecutar docker compose pull con esos archivos sigue descargando el espacio de nombres de imágenes antiguo; no lleva la instancia a una versión actual de ghcr.io/typetype-video/....
Comprueba los nombres de imagen resultantes desde el directorio que contiene el archivo Compose activo:
docker compose config --imagesSi alguna imagen de TypeType empieza por ghcr.io/priveetee/, renueva una vez los archivos de la pila. Primero conserva la configuración actual y una copia de la base de datos:
cd "$STACK_DIR"
migration_backup="../typetype-stack-before-migration-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$migration_backup"
cp -a .env docker-compose.yml "$migration_backup"/
[ ! -f nginx.conf ] || cp -a nginx.conf "$migration_backup"/
[ ! -f garage.toml ] || cp -a garage.toml "$migration_backup"/
docker compose exec -T postgres \
pg_dump -U typetype typetype > "$migration_backup/typetype.sql"Descarga en el mismo directorio el archivo Compose y los scripts compatibles actuales. El instalador conserva el archivo .env existente, el override de Compose, los archivos no gestionados y los volúmenes con nombre, y añade las entradas necesarias actuales:
curl -fsSL https://raw.githubusercontent.com/TypeType-Video/TypeType/main/scripts/install-stack.sh \
| bash -s -- --dir "$PWD" --download-only --yesLos archivos de pila personalizados se sustituyen
El comando renueva docker-compose.yml, .env.example y los scripts de la pila. Compara la copia con marca de tiempo antes de restaurar un cambio personalizado; no vuelvas a copiar el archivo Compose antiguo, porque eso restauraría también sus referencias de imagen antiguas. Mantén los cambios personalizados de los servicios en docker-compose.override.yml.
Se guarda una copia del nginx.conf antiguo del host, pero la pila por defecto ya no lo monta, porque nginx viene ahora dentro de la imagen web. Un garage.toml antiguo se prepara para una importación única en el volumen garage_config. El inicializador nunca sobrescribe una configuración que ya esté en ese volumen.
Valida la pila renovada e inspecciona de nuevo las imágenes:
docker compose config -q
docker compose config --imagesLas cuatro imágenes de aplicación de TypeType deben empezar ahora por ghcr.io/typetype-video/. Descárgalas y vuelve a crear los servicios sin borrar volúmenes:
docker compose pull
docker compose up -d --force-recreate --wait --wait-timeout 180
docker compose psPor último, sustituye el origen de ejemplo siguiente por la URL de la instancia y confirma las revisiones de los componentes desplegados:
curl -fsS https://watch.example.com/api/version
curl -fsS https://watch.example.com/api/version/web
curl -fsS https://watch.example.com/api/version/server
curl -fsS https://watch.example.com/api/version/token
curl -fsS https://watch.example.com/api/version/downloaderEste hueco de migración puntual quedó claro gracias al seguimiento de filippobaroni en la discusión #133.
Al actualizar desde una versión que no incluía Garage, completa una vez la instalación manual, incluida la Parte 2, antes de usar las descargas.
Antes de cada actualización, guarda las referencias de imagen actuales y una copia de la base de datos para poder revertir la actualización si hace falta.
Registros
docker compose logs -f typetype-server # seguir un servicio
docker compose logs --tail=100 typetype # las últimas 100 líneas de la aplicación web
docker compose logs # todoLos registros del servidor son el lugar donde mirar cuando la extracción, las cuentas o la API se comportan mal.
Copias de seguridad
Dos almacenes contienen todo lo importante: la base de datos y el almacén de objetos.
Base de datos
docker compose exec -T postgres \
pg_dump -U typetype typetype > typetype-$(date +%F).sqlRestaurar en una pila nueva:
cat typetype-YYYY-MM-DD.sql | docker compose exec -T postgres psql -U typetype typetypeAlmacén de objetos (descargas)
Las descargas están en los volúmenes garage_data y garage_meta. Haz copia de los propios volúmenes (para primero la pila para obtener una copia coherente):
docker compose down
docker run --rm -v typetype_garage_data:/data -v "$PWD":/backup busybox \
tar czf /backup/garage-data-$(date +%F).tar.gz -C /data .
docker compose up -dAjusta el nombre del volumen si el prefijo de tu proyecto de Compose es distinto (puedes verlo con docker volume ls).
TIP
Las descargas son artefactos que se pueden regenerar, así que la copia importante es la de la base de datos. También vale la pena conservar el archivo .env, porque fija tus puertos y tus valores personalizados.
Parar y arrancar
docker compose stop # parar los contenedores y conservarlos
docker compose start # arrancarlos de nuevo
docker compose down # eliminar los contenedores y conservar los volúmenes (datos a salvo)Recursos
Una instancia pequeña funciona con comodidad con unos 2 GB de RAM. Los componentes más pesados son el servidor API (JVM) y la base de datos. El descargador es el que más disco y red usa mientras hay trabajos en curso; el resto del tiempo está inactivo.