Blueforce-Linux/scripts/install
emirhanmamak-blueforce 8cb0c72065 Enhance installation scripts with root privilege checks and user guidance
- Added a check in `blueforce-install.sh` to ensure the script is run with root privileges, providing user-friendly error messages and guidance for launching with sudo or using check mode.
- Updated `01-precheck.sh` to conditionally require root privileges based on the check mode, allowing for non-root execution in read-only mode.
- Modified test scripts to reflect changes in the installation process, ensuring accurate reporting of the Python console's presence and adjusting expectations accordingly.
2026-09-17 14:35:34 +03:00
..
installer Enhance installation scripts with root privilege checks and user guidance 2026-09-17 14:35:34 +03:00
optional/anydesk feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
.gitkeep docs: Blueforce 700-device fleet architecture (TR) - GNOME baseline 2026-09-15 17:03:02 +03:00
blueforce-install.sh Enhance installation scripts with root privilege checks and user guidance 2026-09-17 14:35:34 +03:00
README.md feat(install): internet-free install flow, auto-discovered local packages 2026-09-16 16:53:24 +03:00

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-id tek 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 --yes ekleyin.
  • Kurulum bittiğinde cihaz yerinde kurulmuş olur ve PROVISIONED_OFFLINE durumuna 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-precheck modülü interneti sadece bilgi olarak yazar. 05-network modü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:

  1. Depoyu tam olarak çekin (git pull) veya repo sorumlusunun verdiği kopyayı /opt/blueforce/offline-repo altına koyun.
  2. 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.