The operator no longer answers an "offline?" question and no longer needs network access: the installer finds the package set that ships with the checkout, so the only input left is the dealer number. Installer - Auto-discover the local APT repository (BF_OFFLINE_REPO, then provisioning/offline-repo/built, then /opt/blueforce/offline-repo) and enter offline mode on its own; --offline stays for compatibility. - Fail closed with an explicit Turkish message when nothing is found: the searched locations, what to do, and a named exit reason -- no state touched. - Distinguish "repository absent" (operator error, actionable) from "repository present but invalid" (OFFLINE BLOCKED, verification gate). - Network is informational only in precheck/network modules; no probe runs in offline mode and archive.ubuntu.com is no longer mandatory. ISO builder - Look for built/ first, which is what build-index.sh produces, and accept build/ as a warned legacy path. The two disagreed, so a medium could be built without the package set and fail only at install time. Docs - docs/27, scripts/install/README, provisioning/offline-repo/README and provisioning/firstboot/README describe the discovered flow, the two failure modes, and that the installer downloads nothing. Tests - check-admin-static exercised the "console missing from the clone" branch by deleting a tracked file; git clone restored it from history, so the branch never ran and the warning was effectively untested. Build the stripped source as a real commit instead; verified by mutation. |
||
|---|---|---|
| .. | ||
| installer | ||
| optional/anydesk | ||
| .gitkeep | ||
| blueforce-install.sh | ||
| README.md | ||
Blueforce kurulumu (scripts/install/)
Bu klasör cihazı kuran betiği içerir. Kurulumu yapan kişinin bilmesi gereken her şey bu sayfada.
1. Kurulum yapan kişi ne yapar?
Tek komut:
sudo ./scripts/install/blueforce-install.sh --dealer-id 12345678
--dealer-idtek zorunlu bilgidir: 8 haneli bayi numarası.- Betik numaradan ana makine adını (
bf-12345678) ve cihaz kimliğini (BF-12345678) kendisi üretir. - Kurulum sırasında başka hiçbir soru sorulmaz. Onay istemeyen (fabrika/otomatik)
senaryoda sonuna
--yesekleyin. - Kurulum bittiğinde cihaz yerinde kurulmuş olur ve
PROVISIONED_OFFLINEdurumuna geçer. Cihazın READY sayılması için merkeze kayıt (enrollment) gerekir; bu ayrı bir adımdır, kuruluma dahil değildir.
Paket aramaz, paket indirmez, apt kaynağı eklemez, anahtar getirmez. Bunların hepsi zaten hazırdır.
2. Paketler nereden gelir?
Paketler git deposunun içinde taşınır:
provisioning/offline-repo/built/ hazır paket seti (pool/, Packages, SHA256SUMS, packages.lock.tsv)
Bunları repo sorumlusu hazırlar ve commit eder; kurulumu yapan kişi sadece depoyu çeker. Paket setinin nasıl üretildiği, hangi paketlerin neden gerektiği ve sorun giderme adımları:
provisioning/offline-repo/README.md
Kurucu paket setini kendi kendine bulur. Arama sırası:
| Sıra | Yer | Ne zaman kullanılır |
|---|---|---|
| 1 | BF_OFFLINE_REPO ortam değişkeni |
Repo sorumlusu farklı bir dizin verdiyse (nadir) |
| 2 | provisioning/offline-repo/built |
Normal durum: kurucu betiğin bulunduğu repo |
| 3 | /opt/blueforce/offline-repo |
Paket seti cihaza ISO/medya ile kopyalanmışsa |
Bulunan depo kurulumdan önce baştan sona doğrulanır: dosya listesi,
checksum (SHA256SUMS) ve pinlenen her paketin depoda gerçekten durması.
Doğrulama geçmezse kurulum hiç başlamaz.
3. İnternet gerekmez — neden?
- Sahada internet yok veya güvenilmez; kurulumun ihtiyaç duyduğu her paket yanında taşınır ve cihazdaki tek kaynak yerel depodur.
- Kurulum çalışırken Apt kaynakları yalnızca bu yerel depoyu gösterir. Dış adreslere, DNS çözümlemesine veya indirmeye ihtiyaç duyulmaz.
- Bu yüzden internet erişimi kontrolü kurulumu durdurmaz:
01-precheckmodülü interneti sadece bilgi olarak yazar.05-networkmodülü de bağlantı yokken geçer (yerel ağ, internet ve merkez bağlantısı ayrı ayrı raporlanır; hiçbiri kurulum için şart değildir). - Merkez bağlantısı (WireGuard, izleme, kayıt) kurulumdan sonra, enrollment aşamasında doğrulanır.
Yalnızca geliştirme/test makinesi için --online vardır: paketleri internetten
çeker. Üretimde kullanmayın — sahada kurulum yerel depodan yapılır.
4. Bir şey ters giderse
"Yerel paket deposu yok" hatası
HATA: Yerel paket deposu yok. Repo sorumlusuna başvurun: provisioning/offline-repo/README.md
Anlamı: cihazda kullanılacak paket seti yok. Kurulum başlamadı, sistemde hiçbir değişiklik yapılmadı. Yapılacaklar:
- Depoyu tam olarak çekin (
git pull) veya repo sorumlusunun verdiği kopyayı/opt/blueforce/offline-repoaltına koyun. - Komutu yeniden çalıştırın. Aynı numarayla devam edebilirsiniz.
Ekranda aranan yerlerin listesi yazar; o listeyi repo sorumlusuna iletmek yeterlidir.
OFFLINE BLOCKED mesajları
Depo bulundu ama eksik ya da bozuk demektir (checksum tutmuyor, pinlenen paket
depoda yok, kilit/indeks dosyası boş...). Kurulum yine başlamaz ve sistem
değişmez. Mesajın altındaki "Ne yapmalı" satırı depoyu nasıl düzelteceğinizi
söyler; ayrıntılı tablo provisioning/offline-repo/README.md içindedir.
Sahada çözülmez — depoyu düzeltip yeniden getirmek gerekir.
Kurulum kesildi, devam etmek istiyorum
sudo ./scripts/install/blueforce-install.sh --dealer-id 12345678 --resume
--resume daha önce tamamlanmış adımları atlar. Bütün adımlar tekrar
çalıştırılabilir (idempotent); bir adımı iki kez çalıştırmak zarar vermez.
Kurulum yapıldı mı, kontrol etmek istiyorum
sudo ./scripts/install/blueforce-install.sh --dealer-id 12345678 --check
--check hiçbir şeyi değiştirmez (log, durum dosyası, dizin oluşturmaz);
yalnızca rapor verir. Denetim de aynı paket sözleşmesini doğruladığı için
depo yine gerekir.
Kayıtlar nerede?
| Ne | Yer |
|---|---|
| Kurulum günlüğü | /var/log/blueforce-install.log |
| Adım adım durum | /var/lib/blueforce/install-state |
| Cihaz durumu | /var/lib/blueforce/state.json |
5. Seçenekler (normalde gerekmez)
| Seçenek | Ne yapar |
|---|---|
--dealer-id NUMARA |
Zorunlu. 8 haneli bayi numarası. |
--yes, -y |
Onay sormadan başla. |
--check |
Salt okunur denetim. |
--from NN |
NN numaralı adımdan başla (örn. --from 06). |
--only AD |
Yalnız tek adımı çalıştır (örn. --only 05-network). |
--resume |
Daha önce tamamlanan adımları atla. |
--help, -h |
Yardım metni. |
--offline |
Yerel depoyu kullanmayı zorlar. Artık gerekmez; varsayılan davranış zaten budur (eski komutlar bozulmasın diye duruyor). |
--online |
Yalnız geliştirme/test: paketleri internetten çeker. Üretimde kullanılmaz. |
Kurulum sonucu: 0 başarılı · 1 kurulum durdu (depo ya da adım hatası) ·
2 komut/parametre hatası.
6. Kurulum adımları (modül haritası)
Her adım tekrar çalıştırılabilir ve --check destekler.
01-precheck · 02-system · 03-user · 04-hostname · 05-network ·
06-wireguard · 07-ssh · 08-rdp · 09-rustdesk · 10-docker · 11-meg ·
12-monitoring · 13-firewall · 14-update-policy · 15-logrotate ·
16-gui · 17-healthcheck · 18-final-check
Uzak erişim için her cihaza özel değerler gerekir: WG_ADDRESS, WG_ENDPOINT,
WG_PEER_PUBKEY, RUSTDESK_SERVER ve yerel RUSTDESK_DEB. Yer tutucu
değerler kabul edilmez; WireGuard erişimi BF_WG_HANDSHAKE_MAX_AGE saniyeden
(öntanımlı 180) daha yeni bir eş el sıkışması ister (REQUIRE_WIREGUARD=false
ile kapatılabilir).
Docker'ın dışa açtığı portlar öntanımlı olarak kapalıdır. Yalnız incelenmiş
tcp PORT / udp PORT satırları
/etc/blueforce/docker-published-port-allowlist.conf dosyasına eklenir;
blueforce-docker-firewall.service bu politikayı Docker her başladığında
yeniden uygular.
Not: AnyDesk bilinçli olarak yoktur. Uzak erişim SSH-over-WireGuard, xRDP ve RustDesk ile sağlanır; AnyDesk elle yapılan cihaz başına bir istisnadır.