Kurtarma Hazırlığı
Libre WebUI, ilk yedekleme ve kurtarma güvenlik kapısı olarak salt okunur kurtarma envanteri sunar. Bilinen durumu ve anlık görüntüyü engelleyen koşulları bildirir. Bakım kilidi almaz; veriyi kopyalamaz, şifrelemez, yüklemez, silmez, onarmaz veya kurtarmaz.
libre-webui recovery-check --json > recovery-inventory.json
Kaynaktan bir kez npm run build:backend çalıştırıp libre-webui recovery-check yerine npm run recovery:check -- kullanın. npx ve Homebrew kurulumları varsayılan olarak ~/.libre-webui konumunu inceler; DATA_DIR ve açık yol seçenekleri geçersiz kılar.
Komut engel yoksa 0, rapor tam ama engel varsa 1, geçersiz bağımsız değişken veya beklenmedik toplama hatasında 2 döndürür. Başka konum için --data-dir PATH veya --database PATH kullanın. Varsayılan ya da --data-dir birim envanteri yalnız kanonik DATA_DIR/data.sqlite dosyasını kabul eder; sabit/simgesel bağlantı ve düzensiz veritabanı/WAL/SHM girdisini reddeder. Açık --database yolu DATA_DIR dışında olabilir ancak dosyalar düzenli ve simgesel bağlantısız olmalıdır. --data-dir olmadan veritabanının üst dizini veri kökü sayılır; anahtar, nesneler ve eklentiler birlikte incelenir.
Çalışma zamanı ayrıca arka uç paketinin belirlenimci plugins dizinindeki ve göreli PLUGINS_DIR için tarihî arka uç yolundaki tanımları okur. Etkin eski yollar envantere girer; özel tanım varsa yalnız birim anlık görüntüsünü engeller. Paketli dağıtımlar taşınmış uyumluluk dizinleri için --legacy-plugins-dir PATH değerini birden çok verebilir.
Özel Compose dağıtımında denetimi kapsayıcıda çalıştırın:
docker exec libre-webui \
libre-webui recovery-check --json --data-dir /app/backend/data
Envanterin Denetledikleri
Sürümlü JSON şunları kaydeder:
- uygulama, Node.js, işletim sistemi ve mimari sürümleri;
- SQLite ve WAL/SHM boyutları,
quick_check, dış anahtarlar, şema parmak izi, kullanıcı sürümü, eksik tablolar ve özel inceleme görüntüsünden önce bağlantı izlemeden kaynak dosya doğrulaması; - veri dizininin okunabilirliği, yazılabilirliği, dosya ve bayt sayısı;
- anahtar kaynağı ve tek yönlü 16 karakterli parmak izi;
- kalıcı
.encryption_keydosyasının bağlantı izlemeden, tek bağlantılı doğrulaması; - özel eklentilerin, yerel şifreli nesnelerin, medyanın, seslerin, belge metninin, eski ve platform vektörlerinin ACL/süzgeçleriyle varlığı, sayısı, boyutu ve veri köküne dâhil oluşu;
- her kanonik yerel nesne ve vektör zarfının, tam parça/sağlama toplamı ve anahtar kullanılabilirliğiyle sınırlı salt okunur kimlik doğrulaması;
- sohbet, not, belge, tercih, eklenti gizlisi, galeri, e-posta ve AAD bağlı ses adı, kayıt, dökümdeki tanınan eski AES-GCM zarflarının sınırlı doğrulaması;
- Work görev/çalıştırma/önizleme sayıları ve beklenen Docker birimleri, Kubernetes PVC’leri veya özetlenmiş ana makine yolları; birim yönetilen etiketi ve sahip görev kimliğini taşımalıdır;
- eski medya iş durumları, kalıcı işler ve denemeler, olay akışları ve son genel imleç;
- şifreli iş/olay yükleriyle opak başvuruların sınırlı doğrulaması; ve
- açık engeller, uyarılar ve uygulama veri dizini dışındaki veriler.
Rapor anahtarları, JWT/oturum gizlerini, sağlayıcı kimlik bilgilerini, eklenti/kullanıcı içeriğini veya gerçek ana makine yollarını göstermez. Yalnız gizli varlık bayrakları ve geri çevrilemez anahtar parmak izi çıkar.
Salt okunur veri bağlantısı inceleme için geçerlidir ve engel değil uyarı üretir. Uygulama hazırlığı yazılabilir depolama ister; yedek yardımcısının salt okunur görüntüsünde Libre WebUI başlatmayın.
Engeller
Her engeli başarısız kurtarma kapısı sayın. Eksik/bozuk veritabanı, eksik şema, anahtar yokluğu/çatışması, bozuk veya doğrulanmamış şifreli metin, doğrulama sınırları, okunamayan dizin, bağlantılı/düzensiz SQLite, etkin Work, medya ya da kalıcı işler, eksik/yanlış etiketli çalışma alanı, olay başı uyuşmazlığı veya sıra boşluğu, veri dışındaki özel eklenti ya da dış alanları doğrulayamayan denetim düzlemi tipik engellerdir. Anlık görüntüden önce işi durdurup bağımlılıkları düzeltin; raporu gizlemek için düzenlemeyin.
Şifreli yükler iş/olay kimliğine karşı doğrulanır ve kanonik sınırlı JSON olarak denetlenir. Opak başvurular yalnız boyut ve sözdizimi açısından denetlenir; hedef varlığını kanıtlayan yetkili nesne deposu yoktur. Rapor referenceTargetsVerified değerini false yapar ve değerleri açmadan uyarır.
Eski metin alanları zorunlu zarf işaretinden öncedir; eski şemalardaki gerçek düz metin okunabilir kalır ve doğrulanmış şifreli metin sayılmaz. Kanonik zarflar hep doğrulanır; zarf genişliğinde IV/etiketli bozuk üç parçalı değer kapalı başarısız olur. Kayıtlı ses alanları kesin ikilidir ve profil, sahip, alan kimliğine karşı doğrulanmalıdır. encryption.legacyCiphertext düz metni açmadan kayıt ve bayt toplamı verir.
Şema v4 users.email_lookup sütunu varsa her boş olmayan e-posta doğrulanır ve etki alanı ayrılmış anahtarlı arama belirteci yeniden hesaplanır. Eksik/uyuşmayan veya null e-postaya bağlı belirteç anlık görüntüyü engeller. v4 öncesi veritabanları sütun olmadan uyumludur.
Güncel Yedek Sınırı
Özel dağıtım yardımcısı çalışan uygulamayı durdurur; değişmez kapsayıcı görüntüsü, bağlı birim ve ortamla bütünleşik solo arşivi oluşturur. Bildirim Ed25519 imzalı, tam yük işletmeci AES-256-GCM anahtarıyla şifrelidir. SQLite, yerel nesneler, vektörler, çalışma zamanı seçicileri ve durumu açacak korumalı yapılandırmayı içerir. Yayından önce imza, şifreli metin sağlama toplamı ve çözülmüş yük doğrulanır. libre-webui-restore yalnız yeni Docker birimi kabul eder, kopyalamadan envanteri doğrular ve yapılandırmayı yeni dizinde özel dosyalarla yayımlar.
Korumalı yapılandırma PostgreSQL havuzu ve bağlantı, boşta kalma, ifade, geçiş kilidi zaman aşımlarını; Redis bağlantı zaman aşımını; iki nesne kotasını; platform seçicilerini; S3 önek ve adresleme kipini içerir. Bunlar açık bildirimde değil imzalı şifreli yükdedir, 0600 dosyalar olarak yayımlanır.
Solo arşivi Work Docker birimlerini, Kubernetes PVC’lerini, ana makine klasörlerini, Ollama modellerini veya dış sağlayıcı durumunu içermez. Dışlamaları görünür tutun, Work’ü ayrı kopyalayın. Ekip çevrimdışı akış kullanır: PostgreSQL dışa aktarımı, kesin sürümlü S3 nesneleri, PGVector envanteri, yapılandırma ve anahtar aynı biçimde mühürlenip temiz PostgreSQL/S3 üzerinde doğrulanır. Redis önbelleği, varlık, uyandırma ve kiralar SQL’den yeniden kurulur.
Ekip yedeği kesin PostgreSQL dışa aktarımındaki her sınırlı şifreli iş/olay yükünü doğrular. Korumalı envanter iş, olay, akış, imleç, zarf, başvuru ve düz metin toplamlarını kaydeder. Her akış kesintisiz 1..last_sequence dizisini içermeli, genel PostgreSQL imleci en büyük değerin gerisinde kalmamalıdır. Kurtarma aynı kontrolleri yineler ve imzalı kaynakla eşleşme ister. Genel imleçler arasındaki boşluklar işlemsel olmayan kimlik ayırma nedeniyle geçerlidir; akış içi sıra kesintisizdir.
PLUGINS_DIR, DATA_DIR dışındaysa kesin dizin envanterlenip birim arşivinden dışlanır. Tanımlar eş yedek düzenlenene dek engeldir. Eski dizinler de böyledir. Simgesel bağlantı, düzensiz veya okunamayan JSON her zaman engeldir, izlenmez veya atlanmaz.
Kalıcı işler ve sıralı olaylar iki profilde etkindir. Kurtarma etkin iş/Work varken engeller, yük ve akış başlarını doğrular, kanonik SQL durumunu korur. Solo sınırlı yerleşik işleyiciyi, ekip harici işleyiciyi çalıştırır; Redis yalnız uyandırma/dağıtma içindir.
Üretimde anahtar ve JWT gizlerini gizli bilgi yöneticisinde, arşivleri ana makine dışında şifreli tutun; temiz uyumlu ortamda kurtarma sınayın. Envanter ön denetimdir, bakım kilidi veya tüm dış kaynakların kurtulacağının bağımsız kanıtı değildir.
İmzalı ve Şifreli Yedek Komutları
Örnekler npm veya Homebrew’dan kurulu libre-webui komutunu kullanır. Genel kurulum yoksa npx --yes libre-webui@latest kullanın. Kaynaktan arka ucu derleyip libre-webui backup yerine npm run recovery:backup -- kullanın. Üretim görüntüsü /usr/local/bin/libre-webui sunar. Ekip PostgreSQL 16 pg_dump ve pg_restore ister; görüntü ve Homebrew yolunda vardır, npm/npx için uyumlu istemci kurun.
AES-256-GCM arşiv anahtarı ve Ed25519 çiftini özel dizinde oluşturup özel anahtarları ana makine dışına taşıyın:
install -d -m 0700 /absolute/private/libre-backup-keys
libre-webui backup keygen \
--directory /absolute/private/libre-backup-keys
Durdurulmuş solo için arşiv oluşturup bağımsız doğrulayın:
libre-webui backup create \
--offline \
--data-dir /absolute/path/to/libre-data \
--output /absolute/backups/libre-solo.lwbackup \
--encryption-key /absolute/private/libre-backup-keys/backup-encryption.key \
--signing-private-key /absolute/private/libre-backup-keys/backup-signing-private.pem
libre-webui backup verify \
--archive /absolute/backups/libre-solo.lwbackup \
--encryption-key /absolute/private/libre-backup-keys/backup-encryption.key \
--signing-public-key /absolute/private/libre-backup-keys/backup-signing-public.pem
Önce ön denetim yapın, sonra yalnız yeni boş hedefe uygulayın:
libre-webui backup restore-preflight \
--archive /absolute/backups/libre-solo.lwbackup \
--target /absolute/restore/libre-data \
--encryption-key /absolute/private/libre-backup-keys/backup-encryption.key \
--signing-public-key /absolute/private/libre-backup-keys/backup-signing-public.pem
libre-webui backup restore-apply \
--archive /absolute/backups/libre-solo.lwbackup \
--target /absolute/restore/libre-data \
--encryption-key /absolute/private/libre-backup-keys/backup-encryption.key \
--signing-public-key /absolute/private/libre-backup-keys/backup-signing-public.pem
libre-webui backup restore-verify \
--target /absolute/restore/libre-data
Ekip için tüm çoğaltmaları ve işleyicileri durdurun, kaynak PostgreSQL/S3/anahtarlık ortamını yüklü tutup arşivi oluşturun:
libre-webui backup create-team \
--offline \
--output /absolute/backups/libre-team.lwbackup \
--encryption-key /absolute/private/libre-backup-keys/backup-encryption.key \
--signing-private-key /absolute/private/libre-backup-keys/backup-signing-private.pem
Kurtarmadan önce ayrı boş PostgreSQL ve sürümlü boş S3 değişkenlerini yükleyin. Ön denetim imzayı, arşivi, envanteri ve hedef boşluğunu yayınlamadan doğrular. Uygulama şemayı, kesin S3 ve PGVector durumunu doğrulayıp yapılandırmayı yeni özel dizine yazar:
libre-webui backup restore-team-preflight \
--archive /absolute/backups/libre-team.lwbackup \
--encryption-key /absolute/private/libre-backup-keys/backup-encryption.key \
--signing-public-key /absolute/private/libre-backup-keys/backup-signing-public.pem
libre-webui backup restore-team-apply \
--archive /absolute/backups/libre-team.lwbackup \
--configuration-output /absolute/restore/libre-team-config \
--encryption-key /absolute/private/libre-backup-keys/backup-encryption.key \
--signing-public-key /absolute/private/libre-backup-keys/backup-signing-public.pem
Kurtarmayı kaynak veritabanına, kovaya, mevcut veri dizinine veya dolu yapılandırmaya yöneltmeyin. Genel imza anahtarını kurtarma kılavuzuyla saklayın; arşiv ve genel anahtar yükü çözemez.
Ekip geri alma eksikse iki hedefi kirli sayın ve hemen yinelemeyin. PostgreSQL’i temizleyin, kesin S3 önekindeki tüm nesne sürümlerini ve silme işaretlerini kaldırın. restore-team-preflight yineleyin; uygulama yalnız temiz denetimden sonra güvenlidir.
Zamanlanmış Doğrulanmış Kurtarma Tatbikatları
Hiç kurtarılmamış yedek umuttur, kurtarma değil. Tatbikat kesinti ve işletmeci olmadan tüm hattı çalıştırır:
- Durgun veri görüntüsü oluşturur — SQLite çevrimiçi yedek API’si, nesne ve dosyalar fiziksel kopya.
recovery-checkkuralıyla etkin kalıcı işi bekler. - Kopyayı geçici anahtarlarla imzalı AES-256-GCM arşive ve tam envantere dönüştürür.
- Arşivi doğrular, yalıtılmış hedefe kurtarır, yeniden doğrular.
- Süreyi kanıtlanmış RTO, başarı aralığını RPO sınırı olarak kaydedip yapıtları siler. Tatbikat yedek değildir; arşiv ve anahtar saklanmaz.
RECOVERY_DRILL_INTERVAL_HOURS (örneğin 24) ile zamanlamayı açın; ortak kira çift çalıştırmayı önler. System sayfası geçmiş ve "Run drill now" düğmesini GET /api/recovery/drills, POST /api/recovery/drills/run ile gösterir. Gözetimsiz hata yöneticileri ve ağ kancalarını bir kez uyarır; elle çalıştırma reddi doğrudan bildirir. RECOVERY_DRILL_HISTORY geçmişi sınırlar (varsayılan 60).
Tatbikatlar dosya arşivinin yetkili olduğu solo (SQLite) profilini kapsar. Ekip backup create-team akışını korur; kurtarma provası şimdilik işletmeci adımıdır.