Provoz
Upgrady, zálohy, air-gapped instalace, operátorské příkazy a administrátorská konzole — věci, které děláte potom, co to běží.
Upgrade
Nejdřív zazálohujte /data, pak ukažte na nový tag a spusťte. Migrace proběhnou při startu.
# uprav .env: VITRINKA_VERSION=vX.Y.Z
docker compose up -dPři startu server povýší každou databázi workspace, která zaostává za schématem, po VITRINKA_MIGRATE_WORKERS najednou (výchozí min(8, CPUs)). /readyz odpovídá 503 s průběhem, dokud to neskončí, zatímco /healthz zůstává nahoře, takže kontrolu připravenosti v proxy nasměrujte na /readyz.
- Žádné tvrdé zarážky — každé vydání migruje z libovolného předchozího, takže můžete verze přeskakovat.
- Dodané soubory neupravujete — poznámky k vydání můžou přidat volitelné klíče do
.env; nic z toho, co dostanete, není určené k úpravám. - Server před klienty — nasaďte server dřív, než rozešlete klienty volající nové endpointy.
Zálohy
/data — volume vitrinka-data — nese SQLite databáze a, pokud nepoužíváte S3, i blob soubory. Zálohujte podle svého běžného plánu a před každým upgradem.
docker compose stop vitrinka
docker compose run --rm --no-deps --entrypoint sh -v "$PWD:/backup" vitrinka \
-c 'cd /data && tar czf /backup/vitrinka-data-$(date +%F).tgz .'
docker compose start vitrinkaSpusťte to přes compose, jak je výše. Holé docker run -v vitrinka-data:… připojí jiný, nesouvisející globální volume než ten, který aplikace opravdu používá — zálohovali byste nic.
Licence není v /data
Leží v adresáři ./license/ v balíku, připojeném do kontejneru jen pro čtení. Zálohujte /data kvůli datům a uchovejte adresář balíku kvůli licenci — jsou to dvě různé věci k zachování.
Air-gapped instalace
Balík obsahuje image.tar, LOAD-AIRGAP.md a binárky CLI. Nahrajte image do interního registru nebo rovnou do Dockeru, nasměrujte na něj VITRINKA_IMAGE a nastavte AIR_GAP=1, čímž vymažete každé napojení, které by sahalo na veřejný internet — e-mailového poskytovatele, Telegram, GitHub, AI kanál i AI backend (EVE_*, AI_BACKEND_*), spravovanou AI, Plane, Stripe, web push, Sentry, export traces přes OTLP, kontrolu úniků i náhledy odkazových karet — zatímco S3, SMTP, capture a přepisový sidecar i listener metrik dál fungují proti vaší vlastní síti. Tracker, AI backend workspace nebo AI endpoint organizace do ní dosáhne, až když ho uloží pravomoc nad instalací (Odchozí cíle); stejně tak připojení SSO, a to jen uvnitř rozsahů, které vyjmenuje VITRINKA_SSO_PRIVATE_NETWORKS (poskytovatel identity ve vaší vlastní síti). MCP klienti se registrují na POST /oauth/register, protože se nestahuje žádný dokument metadat client ID. Když je Stripe vymazaný, tarify se měří, jen když je nastavené VITRINKA_METERED=1. Server nikdy nevolá domů kvůli verzi: kontrola aktualizací žije v CLI a VITRINKA_RELEASE_FEED níže ji nasměruje na váš mirror.
shasum -a 256 -c SHA256SUMS # nejdřív ověřte balíkCLI bez registru
Balík nese i CLI — šest statických binárek, jednu na platformu, plus cli/latest.json. Pracovní stanice ho potřebují na pořizování sad a obsluhu fronty, a npm install -g předpokládá registr, který ve vaší síti být nemusí.
Nasměrujte $VITRINKA_RELEASE_FEED na vlastní interní mirror a vitrinka update bude fungovat i offline. Instrukce a cestu pro PowerShell nese cli/README.md v balíku.
Operátorské příkazy
Serverová binárka nese údržbové příkazy. Každý destruktivní je zprávou nanečisto, dokud nepředáte -execute. shred-workspace odmítne provést změnu bez -server-stopped a reconcile-storage bez -offline. Pro rewrap-deks server také zastavte, protože to sám nekontroluje. seal-existing je stavěný na běh vedle živého serveru (-batch, -pace), a stejně tak platform-admin.
| Příkaz | Co dělá | Podrobnosti |
|---|---|---|
vitrinka backup -data /data -out <file>.vtbk | Konzistentní kopie každé databáze, zapečetěné do jednoho archivu; bloby vynechané. | Zálohy |
vitrinka restore-backup -in <file>.vtbk -out <empty dir> | Odpečetí archiv do prázdného adresáře, nikdy přes živý DATA_DIR. | Zálohy |
vitrinka seal-existing -data /data [-execute | -verify] | Zapečetí starší řádky a objekty v prostém textu na místě; -verify je brána před přísným režimem. | Šifrování |
vitrinka rewrap-deks -data /data -old-kek … -new-kek … [-execute] | Rotuje klíč instalace přebalením klíče každého workspace; dat se nedotkne. | Šifrování |
vitrinka shred-workspace -data /data <workspace> -server-stopped [-execute] | Zničí datový klíč workspace a označí ho náhrobkem. | Uchovávání a mazání |
vitrinka inventory -data /data -out <manifest> | Sčítání každého odkazovaného blobu jen pro čtení proti jednomu výpisu úložiště; vypíše očištěné shrnutí. | Předchází migrate-blobs. |
vitrinka migrate-blobs -data /data -manifest <manifest> [-execute] | Přesun starších objektů do prefixů jejich workspaců jen kopírováním; zdroj nikdy nemaže. | Idempotentní; po částečném selhání spusťte znovu. |
vitrinka reconcile-storage -data /data -workspace <ws> -backend fs|s3 [-execute -offline] | Přepočítá evidenci úložiště workspace po ruční offline údržbě a předtím udělá zapečetěnou zálohu. | Spusťte před restartem zapisujících procesů. |
vitrinka audit-export-key -data /data | Vypíše veřejný klíč, který podepisuje dávky exportu auditu. | Export auditu |
vitrinka audit-verify -data /data (nebo -dir <dir> -key <key>) | Ověří každý hashový článek i podpis exportu a u prvního přerušeného článku skončí nenulovým kódem. | Export auditu |
vitrinka platform-admin grant <email> · revoke <email> · list | Otevře nebo zavře administrátorskou konzoli účtu, který se už jednou přihlásil; platí od jeho dalšího požadavku a zapíše se do auditu. | První administrátor |
vitrinka smtp-test -to <you@example.com> | Pošle jeden testovací e-mail přes relay SMTP_* bez startu serveru. | Pošta |
vitrinka license-inspect <file> | Rozparsuje a ověří licenční soubor bez startu serveru. | Licence |
vitrinka healthcheck | Kontrola zdraví kontejneru, kterou spouští compose. |
Spouštějte je přes compose, aby viděly stejný /data, klíče a backend blobů jako server:
docker compose stop vitrinka
docker compose run --rm --no-deps -v "$PWD/backups:/backups" vitrinka backup -data /data -out /backups/vitrinka-$(date +%F).vtbk
docker compose start vitrinkabackup odmítne -out uvnitř DATA_DIR. Zapečetěné bezpečnostní snímky, které údržbové příkazy pořizují, než přepíšou data — třeba reconcile-storage -execute — míří do VITRINKA_BACKUP_DIR, výchozí <DATA_DIR>-backups. Uvnitř kontejneru tato sousední cesta na volume neleží, proto připojte adresář a nasměrujte na něj proměnnou; cesta uvnitř DATA_DIR je odmítnutá.
Administrátorská konzole
/admin je platformní konzole. Každému, kdo není platform admin, odpoví 404; příznak udělíte přes platform-admin (první administrátor).
- Statistiky — účty, workspaces, organizace podle tarifu a čekající položky čekací listiny.
- Workspaces — hledání podle slugu nebo názvu. Výběr nastavuje uložený tarif organizace, které workspace patří. Dokud se tarify neměří, ukazuje každý řádek i tarif Enterprise, na kterém organizace běží, a poznámka říká, že uložený tarif začne platit, jakmile se měření zapne — tarify tak můžete připravit dřív, než nastavíte
VITRINKA_METERED=1. Pozastavení workspace — pozastavený neobslouží nic, dokud ho neobnovíte — a kontrola AI plateb, kde se schodek spravované AI dá uzavřít bez účtování, s písemným důvodem. - Uživatelé — hledání podle e-mailu nebo jména; platform admini nesou ★.
- Čekací listina — při
VITRINKA_WAITLIST=1sem přistane každá nová adresa, která se pokusí přihlásit. Schvalte ji a její další přihlášení účet vytvoří; adresa s čekající pozvánkou schválení nepotřebuje.
Změna tarifu se v auditu zapíše jako org.plan, pozastavení jako workspace.suspend.
Licencování
Vložte podepsaný license.json do ./license/; compose ho připojí jen pro čtení na /run/license, kde ho server hledá. Jak ho server ověřuje, co udělá se souborem, který nemůže použít, co expirace pozastaví a jak funguje obnova, najdete na Licence.
Jednotné přihlášení
OIDC proti vašemu adresáři, nastavené přímo v produktu, ne v souboru — a MFA, které vitrinka ověřuje, ne předpokládá.
Konektory
Napojení, která potřebují víc než proměnnou: GitHub App, zrcadlo Jira, komentář v Plane, AI backend, přepis schůzek, kdo smí cíl nasměrovat do vaší interní sítě, a jak se agenti připojují přes OAuth.