Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ubuntu Update Manager

Ubuntu Update Manager, Ubuntu/Debian tabanlı sunucularda kritik sistem paketlerini (kernel, systemd, SSH, Docker, BIND9, ağ araçları vb.) izlemek ve güncellemek için geliştirilmiş, Django tabanlı küçük bir web arayüzüdür. Hangi paketlerin güncellenebilir durumda olduğunu, güncellemenin bir reboot, bir servis restart'ı mı gerektirdiğini yoksa etkisiz mi olduğunu tek bir panelden gösterir ve tek tıkla o paketi güncelleyebilmenizi sağlar.

⚠️ Bu proje third-party (bağımsız/üçüncü taraf) bir araçtır. Canonical veya Ubuntu ile resmi hiçbir bağlantısı yoktur; "Ubuntu" ismi yalnızca hedef işletim sistemini belirtmek amacıyla kullanılmıştır.

Uygulama apt/apt-get üzerinden çalışır, bu nedenle yalnızca Debian/Ubuntu tabanlı sistemlerde kullanılabilir.


Kurulum

1. Sistem bağımlılıkları

apt işlemleri Python'un apt modülü (python3-apt) üzerinden yürütülür. Bu paket PyPI üzerinden kurulamaz, sistem paket yöneticisinden gelmelidir:

sudo apt update
sudo apt install -y python3-venv python3-apt

2. Proje dizini ve sanal ortam

Proje /opt/update_manager altına yerleştirilecek şekilde tasarlanmıştır (systemd servis dosyası bu yolu referans alır):

cd /opt/update_manager
python3 -m venv --system-site-packages .venv
source .venv/bin/activate
pip3 install -r requirements.txt

--system-site-packages bayrağı zorunludur — aksi halde venv içinden sistemin python3-apt paketine erişilemez.

3. systemd servisi

ln -s /opt/update_manager/conf/update_manager.service /etc/systemd/system
systemctl daemon-reload
systemctl enable --now update_manager

Servis başlarken sırasıyla:

  1. db/ klasörünü oluşturur,
  2. makemigrations ve migrate komutlarını otomatik çalıştırır (veritabanı şeması ilk açılışta kendiliğinden kurulur),
  3. manage.py runserver 0.0.0.0:8001 ile sunucuyu ayağa kaldırır.

Durumu kontrol etmek için:

systemctl status update_manager
journalctl -u update_manager -f

İlk kurulumda otomatik oluşturulan yönetici hesabının bilgileri bu logda bir kereliğine basılır (bkz. Notlar).


Yapılandırma

conf/static_conf.pyStaticConfig

Uygulamanın tüm statik yapılandırması tek bir yerde, conf/static_conf.py içindeki StaticConfig sınıfında toplanmıştır:

Alan Açıklama
WATCH_PACKAGES İzlenecek paketler ve güncellemenin gerektirdiği aksiyon. Değerler "REBOOT", "RESTART:servis1,servis2", "SYSTEM" veya tanımsızsa "NONE" olabilir. Bir paketin bağımlılıkları da otomatik olarak taranır ve listeye "dependency" kaynağıyla eklenir. Sözlük boş bırakılırsa ({}), whitelist devre dışı kalır ve sistemdeki tüm kurulu/güncellenebilir paketler (aksiyon NONE olarak) listelenir.
SRV_BIND_IP / SRV_PORT Sunucunun dinleyeceği adres/port (varsayılan 0.0.0.0:8001). Port değiştirilecekse buradaki değerle birlikte conf/update_manager.service dosyasındaki ExecStart satırı da güncellenmelidir.
SRV_LOG_FILE Log dosyası yolu (varsayılan /var/log/umng.log).
SRV_LOG_MAX_B / SRV_LOG_BACKUP Log rotasyon boyutu ve saklanacak yedek sayısı.
DEF_SRV_INFO HTTP yanıtlarındaki Server header değeri.

Yeni bir kritik paket eklemek veya bir paketin aksiyonunu değiştirmek istediğinizde tek yapmanız gereken WATCH_PACKAGES sözlüğünü düzenlemektir.

umng_settings.py — Django ayarları

Ayar Açıklama
UMNG_SECRET_KEY (ortam değişkeni) Django SECRET_KEY değeri; ayarlanmazsa kod içindeki geliştirme amaçlı sabit değer kullanılır.
ALLOWED_HOSTS Şu an ["*"] — bkz. Güvenlik Önerileri.
SESSION_COOKIE_AGE Oturum süresi, saniye cinsinden (varsayılan 900 → 15 dakika).
DATABASES SQLite, db/umng_db.sqlite3 yolunda.

Notlar

  • Otomatik admin hesabı: İlk migrate çalıştığında, veritabanında hiç kullanıcı yoksa um_admin adında rastgele şifreli bir superuser otomatik oluşturulur (apps/umng/apps.py). Şifre yalnızca o an konsola/journalctl'a yazılır, bir daha gösterilmez — kaybederseniz manage.py changepassword um_admin ile sıfırlayabilirsiniz.
  • Otomatik tarama: Sunucu her açıldığında ve her başarılı girişten sonra arka planda otomatik bir apt update taraması tetiklenir; ayrıca arayüzdeki "APT Güncelleme" butonuyla manuel de tetiklenebilir.
  • Loglama: Tüm loglar hem konsola hem de SRV_LOG_FILE yoluna (rotate edilerek) yazılır.
  • Veritabanı: Paket durumları her taramada silinip yeniden yazılır (PackageRecord); geçmiş tarama sonuçları AptUpdateStateLog tablosunda tutulur.
  • Boş WATCH_PACKAGES: conf/static_conf.py içindeki WATCH_PACKAGES sözlüğü boş bırakılırsa uygulama whitelist moduna değil, "tümünü izle" moduna geçer — sistemdeki güncellenebilir tüm kurulu paketleri listeler. Bu paketler için özel bir reboot/restart kuralı tanımlı olmadığından hepsi NONE aksiyonuyla gösterilir; tek tık güncelleme bu modda da çalışır.

Güvenlik Önerileri

Bu servis root yetkisiyle çalışır ve apt-get install tetikleyebilir — bu yüzden aşağıdaki noktalara özellikle dikkat edin:

  • UMNG_SECRET_KEY ortam değişkenini production'da mutlaka kendi belirlediğiniz rastgele bir değerle ayarlayın; kod içindeki varsayılan değeri kullanmayın.
  • DEBUG ayarı şu an umng_settings.py içinde sabit True — canlı ortamda False yapılması ve hata sayfalarının dışarı sızdırılmaması önerilir.
  • ALLOWED_HOSTS değerini ["*"] yerine gerçek hostname/IP adresinizle sınırlandırın.
  • Uygulama düz HTTP (runserver) üzerinden çalışır; internete açık ortamlarda mutlaka bir reverse proxy (nginx/caddy) + TLS arkasına alın, doğrudan dışa açmayın.
  • İlk kurulumda oluşturulan um_admin şifresini güvenli bir yere kaydedin ve mümkünse ilk girişten sonra değiştirin.
  • WATCH_PACKAGES listesini kendi ortamınıza göre gözden geçirin; unutulan kritik bir paket, sessizce eksik kalan bir güvenlik yaması anlamına gelebilir.
  • Panele erişimi yalnızca güvendiğiniz kullanıcılarla/ağlarla sınırlı tutun; bu araç sistem düzeyinde değişiklik yapabilme yetkisine sahiptir.

Lisans

Bu proje kişisel/dahili kullanım için ücretsizdir; değiştirme ve dağıtım hakları saklıdır. Ayrıntılar için LICENSE.md dosyasına bakın.

About

Ubuntu/Debian tabanlı sunucularda kritik sistem paketlerini (kernel, systemd, SSH, Docker, BIND9, ağ araçları vb.) izlemek ve güncellemek için geliştirilmiş, Django tabanlı küçük bir web arayüzüdür.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages