İçeriğe atla
ColliePWA

10/Documentation

Sorun giderme

Tam olarak aratacağınız sözcüklerle belirtiler

Belirtiler sırayla aşağıdadır; kendi sorununuzu sayfada arayın. herdr plugin kaynağından Os { NotFound } · update çıktısında "not currently on a branch" yazıyor · tailscale serve failed · yanıt vermiyor (hizmet başlamıyor) · telefon URL'yi açamıyor · sayfa yükleniyor ancak boş kalıyor (boş sayfa, 403) · parola istemi yanıtınızı kabul etmiyor · anlık bildirim yok · yeniden başlatma sonrasında kayboldu · bir bölme dar kalıyor · Collie bir tmux penceresi açmayı reddediyor · tmux list: output did not parse · herdr plugin list eski sürümü gösteriyor · yeniden derleme sonrasında eski UI · Herdr içinde bir makine kaydettim ve telefon bunu göstermiyor · telefondan başlatılan bir güncelleme hazırlık aşamasında takılı kalıyor.

herdr plugin …, Error: Os { code: 2, kind: NotFound, message: "No such file or directory" } ile başarısız oluyor (eklenti kurulumu başarısız, eylem çağırma başarısız). Bu değil bir Collie sorunu değildir; Herdr sunucusu çalışmıyor anlamına gelir, bu yüzden CLI'ı denetim soketine (~/.config/herdr/herdr.sock) erişemez. İpucu ham Os {…} hatasıdır: erişilebilir bir sunucu yol/manifest sorunlarına yapılandırılmış JSON ile yanıt verir (örn. plugin_manifest_not_found), bu nedenle yalın bir Os { NotFound }, Collie veya yolunuz incelenmeden önceki başarısız bir soket bağlantısıdır. Sunucuyla iletişim kuran her alt komutu (link, install, action invoke) etkiler; oysa herdr plugin --help çalışmaya devam eder (soketi asla açmaz). Çözüm: önce Herdr'ı başlatın (herdr server & veya doğrudan Herdr TUI'sini açın; sunucuyu başlatır), ls ~/.config/herdr/herdr.sock dosyasının artık mevcut olduğunu doğrulayın, ardından kurulumu yeniden deneyin. herdr plugin list hızlı bir yoklamadır: aynı hatayı verirse sunucu kapalıdır.

update, You are not currently on a branch ile başarısız oluyor. 0.23.1 öncesinde yapılmış bir GitHub kurulumu (#63): herdr plugin install klonlamak yerine ayrılır, bu yüzden eski update içinde git pull yapılacak bir dal yoktu. Düzeltme, onardığı çalışma kopyasının içinde gelir; bu nedenle geçerli olması için bir kez yeniden kurulum gerekir: Bu işlem "Şu anda bir dalda değilsiniz" ile başarısız olursa gereken üç komutu içerir.

start, note: tailscale serve failed çıktısını veriyor. Collie'nin kendisinde sorun yok (127.0.0.1 üzerinde hâlâ çalışıyor); yalnızca tailnet girişi başlamadı ve tailscale'in kendi hatası terminalde notun üzerinde yer alıyor. Olası nedenler: kullanıcınız Tailscale operatörü değildir (sudo tailscale set --operator=$USER), düğümün oturumu kapatılmıştır (tailscale up) veya (Headscale / .internal tailnet etki alanlarında) HTTPS sertifikaları mevcut değildir; COLLIE_SERVE_MODE=http tam olarak bunun içindir: bunu .env içinde ayarlayın, ardından bin/collie restart çalıştırın. tailscale serve status ile doğrulayın.

serve, HTTPS certificates are not enabled on this tailnet diyor. Hiçbir şey yayımlanmadı ve hiçbir şey beklemiyor. yönetici konsolu sayfasını açın, "Enable HTTPS" seçeneğini etkinleştirin, ardından collie serve komutunu tekrar çalıştırın. Headscale / .internal etki alanlarında etkinleştirilecek sertifika yoktur; bunun yerine COLLIE_SERVE_MODE=http kullanın.

Başlık ⚠ Collie isn't answering on :8787 yet gösteriyor (hizmet başlamıyor, bağlantı reddedildi). Hizmet başlatıldı ancak HTTP sunucusu yoklamaya yanıt vermiyor. Nedenini görmek için önce birimi (systemctl --user status collie), ardından bin/collie logs (veya canlı izlemek için journalctl --user -u collie -f) komutunu kontrol edin: genellikle bağlantı noktası zaten kullanımdadır (.env içinde COLLIE_PORT değerini ayarlayın, ardından yeni bağlantı noktasına karşı tailscale serve komutunu da tekrar çalıştıran bin/collie restart komutunu yürütün) veya ilk derleme başarısız olmuştur (günlük bunu belirtir; sorunu çözüp bin/collie build çalıştırın). Birim her 5 saniyede bir otomatik olarak yeniden başlar, bu nedenle neden giderildiğinde genellikle kendiliğinden geri gelir.

Telefon tailnet URL'sini açamıyor. Listedeki adımları sırayla uygulayın: (1) telefonda Tailscale uygulaması çalışıyor ve ana bilgisayarla aynı tailnet'e bağlı; (2) başlıktaki tailnet URL'sini (bin/collie url) açıyorsunuz, local olanı değil; http://127.0.0.1:8787 yalnızca ana bilgisayarın kendisinde çalışır; (3) tailnet'inizin DNS ayarlarında MagicDNS etkindir (URL bir MagicDNS adıdır); (4) ana bilgisayar çevrimiçidir; ana bilgisayarda tailscale status kontrolü yapın veya telefonun Tailscale uygulamasından ana bilgisayara ping atın; (5) tailnet politikanız bu düğüme bir eşin bağlanmasına gerçekten izin veriyor; izin vermiyorsa başlık artık bunu tailnet satırının altında belirtir ve başka hiçbir şey belirtmez: ön kapı doğru şekilde yayımlanmıştır, sertifika geçerlidir ve ana bilgisayarın kendisinden yapılan curl 200 döner, çünkü geri döngü paket filtresine asla uğramaz. İki durum bunu özellikle yanıltıcı hale getirir: tailscale ping başarılı oluyor (bulma ping'leri ACL'leri atlar) ve engellenen trafik reddedilmek yerine düşürülür, bu yüzden telefon yanıt vermez ve "sunucu kapalı" gibi görünür. Bunu ACL politikanızda düzeltin (Tailscale'de <https://login.tailscale.com/admin/acls>; Headscale'de politika dosyanız). Bu denetim elden gelen en iyi çabayla yapılır ve kasıtlı olarak kesinlik taşımaz: yalnızca bu düğümün filtresi hiçbir şey kabul ettiğinde uyarı verir (bu da tailnet'e henüz başka bir cihazın katılmadığı anlamına gelebilir) ve emin olamadığı durumlarda sessiz kalır.

Sayfa yükleniyor fakat boş kalıyor (boş sayfa, beyaz ekran); API çağrıları başarısız oluyor 403 cross-origin rejected. Collie'ye beklemediği bir kaynaktan erişiyorsunuz: özel bir etki alanı veya Host üstbilgisini yeniden yazan bir proxy. COLLIE_ALLOWED_ORIGINS ile tam genel kaynağa izin verin (bkz. Yapılandırma) veya proxy'nin Host üstbilgisini değiştirmeden iletmesini sağlayın (docs/deployment.md içindeki dördüncü proxy gereksinimi).

Bir sudo (veya SSH parola ifadesi ya da gpg) istemi yanıtınızı kabul etmiyor. Gönder yerine Denetimler satırındaki Yaz seçeneğini kullanın. Gönder, Enter tuşuna basmadan önce ekrandan geri okuyarak yazdıklarını doğrular (#34); parola istemi ise yankıyı kapattığı için geri okunacak bir şey kalmaz. Yaz ise Enter dahil tuş vuruşlarınızı doğrudan panele iletir. Yaz içine yazdığınız hiçbir şey saklanmaz, taslağa yansıtılmaz veya daha sonra geri yüklenmez; Collie parola istemini algıladığı anda saklanan taslağı da siler (#103).

Anlık bildirimler gelmiyor. Elle bir tane tetikleyin: bin/collie push-test. Komutun ayırt ettiği sırayla üç neden şunlardır: push devre dışı olduğunu bildirir (anahtarlar köprüye hiç ulaşmadı; push-keys çalıştırıp yeniden başlatın, bkz. Web Push); abone olunan cihaz bulunmadığını bildirir (bu telefon Ayarlar → bildirimler altından bunları hiç etkinleştirmedi); veya gönderildi bildirimi gelir ama hiçbir şey ulaşmaz (telefon güvenli bir bağlam olmayan düz HTTP kaynağındadır; Ayarlar bunu insecure olarak işaretler).

Yeniden başlatmanın ardından Collie kayboluyor. Linux üzerinde bu durum neredeyse her zaman lingering kaynaklıdır; bu nedenle loginctl enable-linger $USER çalıştırın (Yeniden başlatmalardan sonra çalışmayı sürdürme). macOS üzerinde launchd aracısı login anında başlar; bu yüzden gerçekten oturum açtığınızı (oturum açma penceresinde kalmadığınızı) ve aracının yüklendiğini kontrol edin: launchctl print gui/$(id -u)/herdr.collie.

Bir panelin terminali dar kalıyor ve içindeki tam ekran uygulama sıkışıyor (Copilot CLI, top, aynanın geri kalanı boş kalırken şerit halinde çizilen herhangi bir TUI). Panelin terminali bu kadar dardır ve Collie bunu birebir yansıtır. Bir Herdr panelinin genişliği, sekmenin bölme ızgarasındaki dikdörtgeninden gelir; dolayısıyla sekmeyi paylaşan bir panel sütunların bir kısmını alır. Herdr panel geometrisini yalnızca masaüstü istemcisi bağlıyken uygular (herdr#1709): bağlı hiçbir şey yokken bir bölmeyi kapatmak, geriye kalan paneli eski dar genişlikte takılı bırakır; soket üzerinden pane.zoom ve pane.resize da bunu hareket ettirmez. Collie bunu kendi tarafından düzeltemez; panel geometrisini hiçbir şekilde yazmaz (ADR 0031: telefon, operatör terminalini yalnızca Terminalde göster dokunuşunda hareket ettirir). Bu duruma özgü hiçbir şey bir uygulamaya bağlı değildir: 54 sütunluk bir panelde top tamamen aynı görünür. Ölçmek için panelde tput cols çalıştırın. Gerçek genişlik budur ve herdr pane layout bildirdiği değerle uyuşmayabilir. Düzeltmek için bir Herdr istemcisi bağlayın, ardından orada paneli yakınlaştırın veya yeniden boyutlandırın (bir şey bağlandıktan sonra herdr pane zoom <pane-id> --on terminali hareket ettirir) ya da paneli kapatıp yenisini açın (#167).

Collie bir tmux penceresi açmayı reddediyor (telefonun yeni sekme işlemi window-size belirterek reddediliyor). İstekte bir hata yok: 3.7 altındaki tmux sürümlerinde, sunucunun window-size değeri manual iken pencere açmak tüm sunucuyu çökertebilir (tmux #4849, 3.7 sürümünde düzeltildi) ve çöken sunucu tüm pencereleri beraberinde götürür. Collie bunun yerine işlemi reddeder ve algıladığı tmux sürümünü belirtir. Çözüm, yazdırdığı satırdır: o sunucuda tmux set -g window-size latest çalıştırmak veya tmux 3.7 sürümüne geçmek. Başka hiçbir şey etkilenmez: bu panellerdeki diğer tüm işlemler çalışmaya devam eder (Gereksinimler aynı uyarıyı taşır).

Collie tmux list: output did not parse günlüğünü tutuyor ve gösterge paneli boş görünüyor. Çökme değildir: bazı tmux sürümleri (3.6b değil, 3.4), -F listelemesinden çıkarken bu bağdaştırıcının okuduğu ayırıcıyı kaçış karakteriyle yazar. Collie artık her iki biçimi de okur; bu sayede sıfır satıra ayrıştırılan bir listeleme, boş bir herd olarak saklanmak yerine mux hatası olarak bildirilir. Hata satırı tmux sürümünü ve kaç satır gördüğünü belirtir. Bu durumla karşılaşmaya devam ederseniz tmux -V sürümünü not edin ve bir sorun kaydı açın; düzeltmenin yeri .env değil, bağdaştırıcıdır.

Bir update sonrasında herdr plugin list eski sürümü gösteriyor. Beklenen bir durumdur: Herdr, yükleme veya bağlama sırasında okuduğu bildirimi önbelleğe alır. Neyin çalıştığına dair kesin bilgi altbilgideki derleme damgası veya bin/collie version değeridir. Bağlantılı bir klon için update işlemi yeniden bağlama yapar ve kendi kendini onarır (herdr plugin link "$(pwd)" ile zorlayın); Herdr ≥0.8.0 sürümlerinde bildirim zaten diskten yeniden okunur.

Yeniden derlemeden sonra telefon eski arayüzü gösteriyor. Bir PWA'nın service worker önbelleği kaynak (origin) başınadır; bu nedenle Collie'ye iki farklı kaynaktan (özel bir alan adı ve ham host:8787) erişmek size her biri kendi paketini önbelleğe alan iki ayrı kurulum verir. Altbilgideki derleme damgası (vX.Y.Z · sha · time), çalıştırdığınız paketi gösterir; Collie sunduğu sürümü X-Collie-Build üstbilgisi ve /api/config üzerinden bildirir. Bir uyumsuzluk durumunda altbilgi "yeni derleme — güncellemek için dokunun." seçeneğini sunar. Aksi takdirde PWA'yı birkaç kez yeniden açın (SW otomatik güncellenir) veya o kaynağın site verilerini temizleyin. En iyi uygulama: Tek bir HTTPS kaynağı seçin ve ona bağlı kalın. (Düz HTTP üzerinden SW kaydolamaz: her zaman güncel kalır fakat PWA özellikleri bulunmaz.)

Herdr'da bir makine kaydettim ancak telefon bunu göstermiyor. Beklenen durum. Herdr'ın kayıtlı makineleri kendi istemcisinin listesidir, crew ise Collie'nin kendi listesidir; iki liste de diğerini beslemez. Telefondan o makineye erişmek için makineyi kaydedin: lead üzerinde collie crew add <ssh-host>, ardından lead üzerinde collie restart ve bağlantıyı kontrol etmek için collie crew status. Herdr'da bir makine eklemek veya kaldırmak crew içinde hiçbir şeyi değiştirmez (Herdr makineleri ve ekip).

Telefondan başlatılan bir güncelleme hazırlama aşamasında kalıyor. 1.6.0 sürümüne kadarki Collie sürümlerinde, telefonda dokunulan bir güncelleme yeni sürümü hazırlayabilir (stage) ve ardından durabilirdi: değişimi gerçekleştiren çalıştırıcı hiçbir zaman başlatılmazdı, servis eski sürümü sunmaya devam ederdi ve çalıştırma kaydı kilit tutulu halde staging durumunda kalırdı. Göstergesi bir arada gerçekleşen üç olgudur: collie update --status, staging (veya on dakika geçtikten sonra interrupted — the updater is gone) bildirir, yeni sürümün sürüm dizini versions/ altında bulunur ve ~/.config/collie/collie.log konumundaki çalıştırıcı günlüğü 0 bayttır. Aynı makinedeki bir kabukta yazılan collie update her zaman çalışırdı; bu da aynı kusurun diğer taraftan görünüşüdür. Sonraki sürümden itibaren düzeltilmiştir: devir işlemi artık çalıştırıcıyı onaylaması için kullanıcı yöneticisini bekler ve reddedilen bir devir yöneticinin kendi gerekçesiyle bir hata olarak bildirilir.

Zaten takılmış bir makineyi temizlemek için on dakika hiçbir şey yapmayın: güncelleyicisi kaybolmuş bir çalıştırma, son geçişinden on dakika sonra yeniden denemeyi engellemeyi bırakır ve sonraki dokunuş ilerler. Hemen temizlemek için kaydı, kilidi ve hazırlama ilerleme dosyasını silin, ardından --status çıktısını kontrol edin:

collie update --status            # note the pid it names
ps -p <pid> -o command=           # empty output: the updater really is gone
rm -f ~/.local/state/collie/update.json ~/.local/state/collie/update.lock
rm -f ~/.local/state/collie/update-staging-*.log
collie update --status            # "no update has run on this install yet"

Eski bir çalıştırmayı temizleyen bir komut yoktur ve bu üç dosya, durmuş bir hazırlamanın geride bıraktığı durumun tamamıdır. Soneke sahip bir örnek bunları ~/.local/state/collie-<name>/ içinde tutar. Bir güncelleme fiilen çalışırken bunları Asla silmeyin ve önce pid değerini kontrol edin: kilidini kaldırdığınız canlı bir güncelleyici, onu koruyan hiçbir şey olmadan current durumuna geçecektir. versions/ dizinine dokunmayın. Yarı hazırlanmış sürüm dizini zararsızdır, yeniden deneme tekrar bunun içine inşa edilir ve saklama temizliği artık ihtiyaç duymadığı şeyleri kaldırır.

Bu sayfayı GitHub üzerinde düzenleyin