---
title: "Hōʻano hou me ka hoʻomaha ʻole"
description: "Hōʻano hou i Quire mālama ponoʻī me ka hoʻomaha ʻole."
image: "https://docs.quirelms.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.quirelms.com/haw/llms.txt
> Use this file to discover all available pages before exploring further.

# Hōʻano hou me ka hoʻomaha ʻole

<span id="upgrading-without-downtime"></span>

Aia nā lula ma ka māhele 7 o `docs/architecture/23-ops.md` a me ka māhele 4.1 o `docs/architecture/07-data.md`. Eia ke kaʻina hana.

## Ka hōʻoia e palekana ai <!--quire:the-guarantee-that-makes-it-safe-->

**Holo pololei ka mana R ma ke kūkulu ʻikepili R a me R emi hoʻokahi.** Māhele ʻia kēlā me kēia hoʻololi kūkulu ʻikepili i ka hoʻonui, hoʻololi, a me ka pani ʻana:

1. **Hoʻonui**: hoʻohui i kolamu, papaʻaina, a i ʻole helu kuhikuhi hou. Nānā ʻole ke code kahiko iā ia.
2. **Hoʻololi**, no hoʻokahi mana a ʻoi: kākau ke code hou i nā ʻano ʻelua a heluhelu i ke ʻano hou; hoʻopiha kahi hana hiki ke hoʻomau i nā lālani kahiko.
3. **Pani**: wehe i ke ʻano kahiko ma kahi mana ma hope, ʻo ia wale nō.

No laila hiki i nā kaʻina hana kahiko a hou ke kaʻana i hoʻokahi waihona ʻikepili i kēlā me kēia manawa o kahi hōʻano hou holo mālie. ʻAʻohe neʻe ʻikepili i lalo: ʻaʻole hiki i kahi neʻe i holoi kolamu i hoʻokahi hola i hala ke hoʻihoʻi i nā lālani i kākau ʻia i ia hola.

Nānā ka hana CI `schema-compat` i ka hōʻoia i kēlā me kēia mana ma ka holo ʻana i nā hoʻāʻo o ka mana ma mua ma luna o ke kūkulu ʻikepili hou.

## Ma mua o kou hoʻomaka ʻana <!--quire:before-you-start-->

1. E heluhelu i nā memo hoʻokuʻu. Hōʻike ka hoʻokuʻu e pono ai i manawa mālama, me ka manaʻo lōʻihi; hoʻokahi wale nō ma kēlā me kēia mana.
2. Holo i ka hoʻāʻo hoʻihoʻi, a i ʻole hōʻoia ua hala ia no kēia hoʻokuʻu ([backup-restore.md](/haw/ops/backup-restore/)). Kāohi ka hoʻāʻo hāʻule i ka hōʻano hou.
3. E hana i kope papaʻa kumu: `docker compose -f docker/compose.yaml --profile backup
   run --rm backup`.

## Docker Compose ma hoʻokahi host <!--quire:docker-compose-one-host-->

```sh
export QUIRE_RELEASE=2026.10.0            # or set it in docker/.env
docker compose -f docker/compose.yaml pull   # or build
docker compose -f docker/compose.yaml run --rm migrate
docker compose -f docker/compose.yaml up -d --no-deps web content collab
docker compose -f docker/compose.yaml up -d --no-deps worker scheduler
```

He manaʻo ko ke kaʻina:

1. **Neʻe ʻikepili mua**, i ka wā e lawelawe ana ka mana kahiko i ka hoʻoili. ʻAʻole ʻike ʻia nā neʻe hoʻonui iā ia.
2. **A laila ka papa pūnaewele.** Ma SIGTERM, hoʻololi kēlā me kēia kaʻina pūnaewele iā `/readyz` i `draining`, hoʻopau i nā noi e holo ana i loko o 30 kekona, pani i nā kahawai me ka hōʻailona hoʻohui hou, a puka. He 40 kekona ʻo `stop_grace_period` i ʻoki ʻole ai ʻo Compose i ka hoʻopau olakino.
3. **ʻO nā worker ka hope**, i hana ʻia ai ke ʻano hanana hou ma mua o ka manaʻo ʻia e ka mea ʻaiʻē hou. Hoʻōki koke nā worker i ka loaʻa ʻana o nā hana a loaʻa iā lākou 120 kekona; loaʻa hou ʻia kekahi hana ʻaʻole hiki ke hoʻopau ʻia ma kahi ʻē aʻe, palekana kēia no ka hana hoʻokahi-wale nō o kēlā me kēia hana. Hoʻolilo ka scheduler i ke alakaʻi ma kona māka manawa aʻe.

Ma hoʻokahi host, pani ʻo Compose i kēlā me kēia ipu ma kona kaʻina, no laila he wā pōkole ke kaʻawale no kēlā me kēia lawelawe. No ka nele loa o kahi wā kaʻawale, holo i ʻelua ipu papa pūnaewele ma hope o kou proxy ponoʻī (faila pani e hoʻohui ana i lawelawe web lua me ka ʻole o ke awa hoʻolaha), a hana hou iā lākou hoʻokahi i ka manawa, e kali ana i ka hōʻike olakino o kēlā me kēia ma mua o ka neʻe ʻana aku.

## Nā host he nui a i ʻole orchestrator <!--quire:several-hosts-or-an-orchestrator-->

E hoʻohana i ke kaʻina like: neʻe ʻikepili hoʻokahi manawa mai kekahi hana hoʻokahi, a laila hoʻohou mālie i ka papa pūnaewele me hoʻokahi mea hoʻonui a ʻaʻohe mea hiki ʻole, a laila nā worker. Kuhikuhi i nā hoʻāʻo mākaukau iā `/readyz` a me nā hoʻāʻo ola iā `/healthz`.

Me nā waihona ʻikepili tenant hoʻolaʻa, hana nā mea ʻelua i ka ʻanuʻu `migrate`: neʻe mua i ka waihona ʻikepili hoʻomalu, a laila kēlā me kēia waihona i helu ʻia ma `ops.tenant_database`, hoʻokahi i kēlā manawa ma lalo o kona laka ponoʻī. ʻAʻole hoʻōki ka hewa ma kekahi waihona tenant i nā mea ʻē aʻe. Ma hope o nā waihona a pau, hoʻohālikelike ka hana i nā puke neʻe a puka me ka helu hewa ke ʻokoʻa nā neʻe i hoʻohana ʻia e kekahi waihona mai nā mea o ka waihona hoʻomalu; inoa ʻia kēlā me kēia mea ma hope a ma mua paha. Hoʻouka pū ke kauoha hoʻokahi i nā papa queue ma kēlā me kēia waihona, no ka mea hoʻohana ka worker i nā hana tenant i hoʻopaʻa ʻia ma kahi i kākau ʻia ai.

```sh
bun apps/worker/src/migrate.ts   # what the Compose step runs
bun run db:migrate:all                            # the same, from a checkout
```

Loaʻa kēlā me kēia waihona hoʻolaʻa ma ka inoa i hoʻopaʻa ʻia ai. Pono kahi waihona i hoʻopaʻa ʻia ma ke ʻano `env:QUIRE_DB_NORTHWIND_URL` i kēia mau mea:

| Loli | Hoʻohana ʻia no |
| --- | --- |
| `QUIRE_DB_NORTHWIND_URL` | Kuleana polokalamu, no ka papa pūnaewele a me ka worker |
| `QUIRE_DB_NORTHWIND_URL_MIGRATOR` | Kuleana neʻe, no kēia kauoha a no nā hoʻololi wahi |
| `QUIRE_DB_NORTHWIND_URL_SUPERUSER` | Koho: hoʻopili hou i ka hoʻomaka mua (nā kuleana, nā papa hana, nā kōkua) ma mua o ka neʻe ʻana |

Hōʻike ʻia kahi waihona i hoʻopaʻa ʻia me ka pilina `_MIGRATOR` ʻole ma ke ʻano he hewa; ʻaʻole loa e kāpae wale ʻia. Hiki ke hoʻohou mālie i ka papa pūnaewele ma hope o ka pau ʻana o ka waihona hoʻomalu. Hoʻomaopopo ka waihona tenant i lohi i hoʻokahi hola; hoʻouna ʻaoʻao ka lohi lā hoʻokahi.

## pgvector <!--quire:pgvector-->

Mai ka neʻe 0264 aku, hoʻohana ka ʻike kumu i helu kuhikuhi pgvector HNSW inā loaʻa ka hoʻonui ma ke kikowaena; kūkulu ʻia ka lawelawe Compose `postgres` me ia (`docker/postgres.Dockerfile`). Hana ka `migrate` mua ma hope o ka hoʻololi kiʻi i ka hoʻonui ma o ka hoʻomaka superuser; hoʻohui ʻo 0264 i kolamu vector i hana ʻia a kūkulu i ka helu kuhikuhi. Kākau hou ka hoʻohui kolamu i `app.ai_chunk` hoʻokahi manawa ma lalo o laka kūʻokoʻa, no laila kali nā noi kumu; ʻaʻole hoʻopā kekahi mea ʻē aʻe i kēlā papaʻaina.

Ma kahi kikowaena ʻaʻohe pgvector, hoʻopaʻa ʻo 0264 i leka hoʻomaopopo a ʻaʻohe mea e hoʻololi; pololei mau ka huli. Me pgvector ma mua o 0.8, kūkulu ʻia ke kolamu a me ka helu kuhikuhi akā pololei mau ka huli a hōʻano hou ʻia ka hoʻonui (`alter extension vector update`), no ka mea, pono ka huli kānana HNSW i nā huli kaʻina o 0.8. No ka hoʻā ʻana ma hope ma kahi kikowaena nele iā ia, hoʻouka i ka hoʻonui, holo hou i ka hoʻomaka (a i ʻole `create extension vector` ma ke ʻano he superuser), a laila ma ke ʻano he `quire_migrator`:

```sql
set maintenance_work_mem = '1GB';  -- the HNSW build is much faster in memory
select ops.ai_chunk_enable_vector_index();
```

Hana hoʻokahi wale nō ia a hoʻihoʻi iā `enabled` a i ʻole `unavailable`. E holo pū iā ia ma kēlā me kēia waihona tenant hoʻolaʻa.

## Hoʻihoʻi i ka mana ma mua <!--quire:rolling-back-->

Loaʻa mau ka hoʻihoʻi **code**: hoʻonoho iā `QUIRE_RELEASE` i ka tag ma mua, a holo hou iā `up -d`. Hana kēia no ka mea kūpono ke kūkulu ʻikepili ma nā ʻaoʻao ʻelua i loko o hoʻokahi mana.

ʻAʻole hāʻawi ʻia ka hoʻihoʻi **kūkulu ʻikepili**. ʻO nā mea hiki ʻole ke wehe a me ke ʻano hoʻihoʻi:

| ʻAʻole hiki ke hoʻihoʻi | Hoʻihoʻi |
| --- | --- |
| Neʻe pani i holoi kolamu | Hoʻihoʻi manawa kikoʻī ma mua o ka holoi ʻana i waihona ʻikepili hou; unuhi a hoʻohui |
| Hoʻololi ʻikepili ma kahi | Hana like, a laila hoʻoponopono i nā kākau ma hope |
| Nā webhook a me nā hanana i hoʻouna ʻia | Nā hanana uku pānaʻi, ʻaʻole loa ka holoi ʻana |
| Leka uila i hoʻouna ʻia | Kākau kekahi kanaka i ka memo ukali |
| Kaulahao hash hōʻoia | ʻAʻole loa e kākau hou; hoʻohui i komo hoʻoponopono |

ʻO ia ke kumu e hoʻokuʻu hoʻokahi ʻia ai ka neʻe pani: loaʻa i ka hoʻihoʻi kahi palena maʻemaʻe.

## Nānā i ka hōʻano hou <!--quire:checking-the-upgrade-->

```sh
docker compose -f docker/compose.yaml ps           # every service healthy
curl -fsS http://localhost:8080/readyz             # ready, and what is configured
docker compose -f docker/compose.yaml logs migrate # the migrations applied
```

Source: https://docs.quirelms.com/haw/ops/upgrade/index.mdx
