# 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:** ```bash 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: ```text 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ı: ```text 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ı ```text 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 ```bash 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 ```bash 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.