Katılım
8 Eylül 2024
Mesajlar
1.832
Makaleler
1
Çözümler
26
Beğeniler
1.236
Yer
Bootloader
selam arkadaşlar,

Kendi ev sunucusunu (Homelab) yönetenlerin en büyük dertlerinden biri olan cihaz takibi (online/offline) konusuna çözüm olması için geliştirdiğim HNIM (Homelab Network Inventory Manager) projesini sizlerle paylaşmak istiyorum.

Özellikle CasaOS, Docker ve yerel ağında çok fazla cihaz barındıran kullanıcılar için süreci tamamen otomatize eden, modern arayüzlü bir sistem hayal ettim ve ortaya bu çalışma çıktı.

Ben tailscale ile ev dışında olsam bile evdeki sunucuma bağlanarak ev içindeki cihazları kontrol ediyorum.


  • Premium Mobil Deneyim: Flutter ile geliştirilen, "Glassmorphism" (buzlu cam) efektli ve neon göstergeli tamamen karanlık mod (Dark Mode) arayüz.
  • Otomatik Durum Takibi: Node.js tabanlı backend, her 5 dakikada bir cihazlarınıza ping atarak Online/Offline durumlarını ve "Son Görülme" tarihlerini otomatik günceller.
  • QR & Barkod Entegrasyonu: Uzun Mac adreslerini veya seri numaralarını elle yazmak yerine, telefonun kamerasını kullanarak saniyeler içinde kaydedebilirsiniz.
  • Docker Uyumlu: Tek bir docker compose up komutuyla MSSQL veri tabanı ve Node.js API'nizi anında ayağa kaldırabilirsiniz.
  • Çift Dil Desteği: Uygulama içerisinde anlık olarak Türkçe ve İngilizce dilleri arasında geçiş yapabilirsiniz.


Nasıl Kurulur?
  1. Repoyu klonlayın. İster GitHub'dan dowloand ZIP yapın ister CMD'ye şu komutu yazın git clone https://github.com/Kompetankedi/HNIM.git
  2. Ana dizine. Env dosyanızı oluşturun ve GitHub repomda gösterdiğim değişkenleri kendinize uygun girin şifre hariç değiştirmenizi önermiyorum
  3. docker compose up --build -d komutu ile Backend'i başlatın. Bir kere Build yaptıktan sonra --Build yazmanıza gerek yok "docker compose up -D" yeterli
  4. Flutter uygulamasından sunucu IP adresinizi ve portu girerek cihazlarınızı yönetmeye başlayın!
GitHub Repo Linki: https://github.com/Kompetankedi/HNIM

Proje hakkında her türlü öneri, eleştiri ve katkılarınıza açığım. Özellikle Homelab ile uğraşan arkadaşların işine yarayacağını umuyorum.

iyi Sosyaller!



1773172608640.webp




1773172621519.webp




1773172631371.webp
 
Şahane bir çalışma olmuş yıldızı hak etti. Yalnız mobil uygulama yerine web arayüzü olsa fena olmazdı.

İlgi alanım mobil olduğu için mobil projelere yer veriyorum lakin vibe codding ile bir web arayüzü yapabilirm, yada direk flutter web kısmını kullanırım.
 
İlgi alanım mobil olduğu için mobil projelere yer veriyorum lakin vibe codding ile bir web arayüzü yapabilirm, yada direk flutter web kısmını kullanırım.
Üşenmezsem Raspberry Pi ile bi home server açacağım ama hem üşeniyorum hem de internet yavaş. Her şeyimi self host yapacağım. İleride işime yarayacak bir araç. 👍🏻
 
Üşenmezsem Raspberry Pi ile bir Home server açacağım ama hem üşeniyorum hem de internet yavaş. Her şeyimi self host yapacağım. İleride işime yarayacak bir araç. 👍🏻

Bende düşük bütçeli bir kasa topladım içinde casaos, Home asistant, ESP Home, ad guard Home, unbound ve tailscale var özellikle tailscale uygulamasına bakmalısın statik IP almadan ev dışından erişmene yarıyor ve ücretsiz planı 100 Cihaz'a kadar izin veriyor.
 
Son düzenleme:
Bende düşük bütçeli bir kasa topladım içinde casaos, Home asistant, ESP Home, ad guard Home, unbound ve tailscale var özellikle tailscale uyuglamasına bakmalısın statik IP almadan ev dışından erişmene yarıyor ve ücretsiz planı 100 Cihaz'a kadar izin veriyor.
Tüm seçenekleri değerlendiriyorum. İki tane Raspi var elimde. Mini cabinet ve mini iklimlendirme sistemleri düşünüyorum. Normal bilgisayar da olur elbette ancak güç tüketimi yüksek olur. Raspberry Pi öyle değil, tasarruflu ve soğutması kolay. Elle rüzgar yapınca bile 5 derece düşüyor.
 
CasaOS için destek artık geldi. Backend’i indirip build yapmanıza gerek yok; Docker’a imaj olarak gönderdim. CasaOS için şu compose dosyasını kullanabilirsiniz.

Kod:
name: unruffled_dylan
services:
  backend:
    cpu_shares: 90
    command: []
    container_name: hnim-backend
    depends_on:
      mssql:
        condition: service_started
        required: true
    deploy:
      resources:
        limits:
          memory: 7845M
    environment:
      - DB_HOST=hnim-mssql
      - DB_NAME=HNIM
      - DB_PASSWORD=HNIM_Strong_Pass_2024!
      - DB_USER=sa
      - PORT=3005
    hostname: hnim-backend
    image: kompetankedi/hnim-backend:latest
    labels:
      casaos.icon: https://img.icons8.com/fluent/1200/node-js.jpg
      casaos.title: HNIM Backend
      icon: https://icon.casaos.io/main/all/mssql.png
    links:
      - mssql:hnim-mssql
    ports:
      - target: 3005
        published: "3005"
        protocol: tcp
    restart: always
    volumes: []
    devices: []
    cap_add: []
    network_mode: bridge
    privileged: false
  mssql:
    cpu_shares: 90
    command: []
    container_name: hnim-mssql
    deploy:
      resources:
        limits:
          memory: 7845M
    environment:
      - ACCEPT_EULA=Y
      - MSSQL_PID=Developer
      - MSSQL_SA_PASSWORD=HNIM_Strong_Pass_2024!
    hostname: hnim-mssql
    image: mcr.microsoft.com/mssql/server:2022-latest
    labels:
      casaos.icon: https://raw.githubusercontent.com/IceWhaleTech/CasaOS-AppStore/main/Apps/MSSQL/icon.png
      casaos.title: HNIM MSSQL
      icon: https://icon.casaos.io/main/all/mssql.png
    ports:
      - target: 1433
        published: "1433"
        protocol: tcp
    restart: always
    volumes:
      - type: bind
        source: /tmp/casaos-compose-app-3019667823/data/mssql
        target: /var/opt/mssql
    devices: []
    cap_add: []
    network_mode: bridge
    privileged: false
x-casaos:
  author: self
  category: self
  hostname: ""
  icon: https://icon.casaos.io/main/all/mssql.png
  index: /api/devices
  is_uncontrolled: false
  port_map: ""
  scheme: http
  store_app_id: unruffled_dylan
  title:
    custom: hnim-backend
    en_us: mssql


Casaos'da container oluştuktan yaklaşık 1-2dk sonra belirlediğiniz portda /api/devices kısmında [] diye çıkıtı vermesi lazım örnek:


1773216355116.webp


@LazJedi Hocam web arayüzü ekledim.
Kod:
name: hnim-full-stack
services:
frontend:
container_name: hnim-frontend
image: kompetankedi/hnim-frontend:latest
ports:
- target: 80
published: "${FRONTEND_PORT:-3080}"
protocol: tcp
restart: always
network_mode: bridge
labels:
- "casaos.icon=https://github.com/Kompetankedi/HNIM/blob/main/hnim(1).png?raw=true"
- "casaos.title=HNIM Web Dashboard"
backend:
container_name: hnim-backend
image: kompetankedi/hnim-backend:latest
depends_on:
mssql:
condition: service_started
required: true
environment:
- DB_HOST=${DB_HOST:-hnim-mssql}
- DB_NAME=${DB_NAME:-HNIM}
- DB_PASSWORD=${DB_PASSWORD:-HNIM_Strong_Pass_2024!}
- DB_USER=${DB_USER:-sa}
- PORT=${PORT:-3005}
hostname: hnim-backend
links:
- mssql:hnim-mssql
ports:
- target: ${PORT:-3005}
published: "${PORT:-3005}"
protocol: tcp
restart: always
network_mode: bridge
labels:
- "casaos.icon=https://github.com/Kompetankedi/HNIM/blob/main/hnim(1).png?raw=true"
- "casaos.title=HNIM Backend"
mssql:
container_name: hnim-mssql
image: mcr.microsoft.com/mssql/server:2022-latest
environment:
- ACCEPT_EULA=${ACCEPT_EULA:-Y}
- MSSQL_PID=${MSSQL_PID:-Developer}
- MSSQL_SA_PASSWORD=${MSSQL_SA_PASSWORD:-HNIM_Strong_Pass_2024!}
hostname: hnim-mssql
ports:
- target: 1433
published: "1433"
protocol: tcp
restart: always
volumes:
- type: bind
source: ./data/mssql
target: /var/opt/mssql
network_mode: bridge
labels:
- "casaos.icon=https://github.com/Kompetankedi/HNIM/blob/main/hnim(1).png?raw=true"
- "casaos.title=HNIM MSSQL"
x-casaos:
author: kompetankedi
category: Utilities
icon: https://github.com/Kompetankedi/HNIM/blob/main/hnim(1).png?raw=true
index: /
port_map: "${FRONTEND_PORT:-3080}"
scheme: http
title:
en_us: Homelab Network Inventory Manager
 
Son düzenleyen: Moderatör:
CasaOS için destek artık geldi. Backend’i indirip build yapmanıza gerek yok; Docker’a imaj olarak gönderdim. CasaOS için şu compose dosyasını kullanabilirsiniz.

Kod:
name: unruffled_dylan
services:
  backend:
    cpu_shares: 90
    command: []
    container_name: hnim-backend
    depends_on:
      mssql:
        condition: service_started
        required: true
    deploy:
      resources:
        limits:
          memory: 7845M
    environment:
      - DB_HOST=hnim-mssql
      - DB_NAME=HNIM
      - DB_PASSWORD=HNIM_Strong_Pass_2024!
      - DB_USER=sa
      - PORT=3005
    hostname: hnim-backend
    image: kompetankedi/hnim-backend:latest
    labels:
      casaos.icon: https://img.icons8.com/fluent/1200/node-js.jpg
      casaos.title: HNIM Backend
      icon: https://icon.casaos.io/main/all/mssql.png
    links:
      - mssql:hnim-mssql
    ports:
      - target: 3005
        published: "3005"
        protocol: tcp
    restart: always
    volumes: []
    devices: []
    cap_add: []
    network_mode: bridge
    privileged: false
  mssql:
    cpu_shares: 90
    command: []
    container_name: hnim-mssql
    deploy:
      resources:
        limits:
          memory: 7845M
    environment:
      - ACCEPT_EULA=Y
      - MSSQL_PID=Developer
      - MSSQL_SA_PASSWORD=HNIM_Strong_Pass_2024!
    hostname: hnim-mssql
    image: mcr.microsoft.com/mssql/server:2022-latest
    labels:
      casaos.icon: https://raw.githubusercontent.com/IceWhaleTech/CasaOS-AppStore/main/Apps/MSSQL/icon.png
      casaos.title: HNIM MSSQL
      icon: https://icon.casaos.io/main/all/mssql.png
    ports:
      - target: 1433
        published: "1433"
        protocol: tcp
    restart: always
    volumes:
      - type: bind
        source: /tmp/casaos-compose-app-3019667823/data/mssql
        target: /var/opt/mssql
    devices: []
    cap_add: []
    network_mode: bridge
    privileged: false
x-casaos:
  author: self
  category: self
  hostname: ""
  icon: https://icon.casaos.io/main/all/mssql.png
  index: /api/devices
  is_uncontrolled: false
  port_map: ""
  scheme: http
  store_app_id: unruffled_dylan
  title:
    custom: hnim-backend
    en_us: mssql


Casaos'da container oluştuktan yaklaşık 1-2dk sonra belirlediğiniz portda /api/devices kısmında [] diye çıkıtı vermesi lazım örnek:


Eki Görüntüle 232309

@LazJedi Hocam web arayüzü ekledim.
Kod:
name: hnim-full-stack
services:
  frontend:
    container_name: hnim-frontend
    image: kompetankedi/hnim-frontend:latest
    ports:
      - target: 80
        published: "3080" # Web paneline bu porttan (örn: http://ip:3080) erişebilirsiniz.
        protocol: tcp
    restart: always
    network_mode: bridge
    labels:
      casaos.icon: https://raw.githubusercontent.com/IceWhaleTech/CasaOS-AppStore/main/Apps/AppCenter.png
      casaos.title: HNIM Web Dashboard

  backend:
    container_name: hnim-backend
    image: kompetankedi/hnim-backend:latest
    depends_on:
      mssql:
        condition: service_started
        required: true
    environment:
      - DB_HOST=hnim-mssql
      - DB_NAME=HNIM
      - DB_PASSWORD=HNIM_Strong_Pass_2024!
      - DB_USER=sa
      - PORT=3005
    hostname: hnim-backend
    links:
      - mssql:hnim-mssql
    ports:
      - target: 3005
        published: "3005"
        protocol: tcp
    restart: always
    network_mode: bridge
    labels:
      casaos.icon: https://img.icons8.com/fluent/1200/node-js.jpg
      casaos.title: HNIM Backend

  mssql:
    container_name: hnim-mssql
    image: mcr.microsoft.com/mssql/server:2022-latest
    environment:
      - ACCEPT_EULA=Y
      - MSSQL_PID=Developer
      - MSSQL_SA_PASSWORD=HNIM_Strong_Pass_2024!
    hostname: hnim-mssql
    ports:
      - target: 1433
        published: "1433"
        protocol: tcp
    restart: always
    volumes:
      - type: bind
        source: ./data/mssql
        target: /var/opt/mssql
    network_mode: bridge
    labels:
      casaos.icon: https://raw.githubusercontent.com/IceWhaleTech/CasaOS-AppStore/main/Apps/MSSQL/icon.png
      casaos.title: HNIM MSSQL

x-casaos:
  author: kompetankedi
  category: Utilities
  icon: https://img.icons8.com/fluent/1200/node-js.jpg
  index: /
  port_map: "3080"
  scheme: http
  title:
    en_us: Homelab Network Inventory Manager
Ne çabuk. :) Henüz 24 saat geçmedi bile. Cloudflare ile yönlendirme yapılıp mis gibi kullanılır. 👌🏻