YOURLS Kurulumu ve LDAP Entegrasyonu

Merhaba arkadaşlar bu makalemizde kendi sunucunuza docker compose aracılığı ile nasıl YOURLS kurabileceğinizi ve LDAP eklentisini entegre edebileceğinizi göstereceğim. Daha önceden normal YOURLS kurulumunu aşağıdaki makalede göstermiştim ancak LDAP için biraz daha farklı işlemler gerçekleştireceğimiz için sıfırdan anlatacağım.

Docker Portainer ile YOURLS Kurulumu

YOURLS bir link kısaltma aracıdır. Hepinizin bildiği bit.ly hizmetine benzer. Bu uygulamanın güzel yanı docker ile kendi local sunucumuzda kurup çalıştırabilmemizdir. Hadi kuruluma geçelim.

Mevcut durumda elimizde olması gerekenler:

  • Docker (Sunucunuzun olduğu platforma kurmanız gerekmekte.)
  • Portainer
    • Docker kurduktan sonra Portainer ile docker uygulamalarınızı daha rahat bir şekilde yönetebilirsiniz. Bu makalede Portainer kullanacağız. Eğer sizin sisteminizde yüklü değilse aşağıdaki makale ile kurabilirsiniz.

Docker ile Portainer Kurulumu

İşlemlerimize başlamadan önce YOURLS için manuel bir imaj oluşturmamız gerekmekte. Bunun sebebi docker containerlarının kendine has PHP sürümleri olması. Şu an bir YOURLS kurulumu yaptığınızda güncel bir sürüm olan PHP 8.3.9 gelmekte. Ancak bu sürüm için halihazırda php-ldap gelmediği için bizim bunu imajı oluştururken içine gömmemiz gerekiyor:

  • Aşağıda verdiğim kod ile sisteminizde bir dizinde Dockerfile dosyası oluşturun.
touch Dockerfile

Şimdi nano Dockerfile komutu ile dosyamızın içine aşağıda verdiğim kodları yapıştıralım.

FROM yourls:latest

   # PHP LDAP modülünü yükle
   RUN apt-get update && \
       apt-get install -y libldap2-dev && \
       rm -rf /var/lib/apt/lists/* && \
       docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \
       docker-php-ext-install ldap

Dockerfile oluşturduktan sonra terminal üzerinden dosyamızın bulunduğu konumda olduğumuza emin olup aşağıdaki komut ile imajımızı oluşturalım.

docker build -t yourls-ldap:latest -f Dockerfile .

İmaj oluşturduktan sonra Portainer üzerinden sol menüdeki Images sekmesine gelirsek aşağıdaki gibi bir görüntü ile karşılaşmamız gerekmekte. Bu imajımızın başarılı bir şekilde oluşturulduğu anlamına gelir.

Şimdi YOURLS kurulumuna geçebiliriz.

Portainer sol menüsünden Stacks sekmesine gelelim. Ardından sağ üstteki Add Stack butonuna tıklayalım. Karşımıza çıkan menüde Name kısmına istediğimiz bir ismi girelim. Ardından aşağıdaki Web Editor kısmına verdiğim docker compose içeriğini yapıştıralım.

version: '3'
services:
  yourls:
    image: yourls-ldap:latest
    container_name: yourls
    environment:
      - YOURLS_DB_HOST=yourls-db
      - YOURLS_DB_USER=databasekullaniciadiniz
      - YOURLS_DB_PASS=databasesifreniz
      - YOURLS_DB_NAME=yourls
      - YOURLS_SITE=http://sunucunuzunipadresi:8080
      - YOURLS_USER=kullaniciadiniz
      - YOURLS_PASS=sifreniz
    ports:
      - "8080:80"
    volumes:
      - /yourls klasör konumu/yourls/data:/var/www/html
    depends_on:
      - yourls-db
    restart: unless-stopped

  yourls-db:
    image: mysql:5.7
    container_name: yourls-db
    environment:
      - MYSQL_ROOT_PASSWORD=rootsifreniz
      - MYSQL_DATABASE=yourls
      - MYSQL_USER=databasekullaniciadiniz
      - MYSQL_PASSWORD=databasesifreniz
    volumes:
      - /yourls klasör konumu/yourls/db:/var/lib/mysql
    restart: unless-stopped

Gerekli düzenlemeleri yaptıktan sonra aşağıdan Deploy the stack diyelim. Kurulum tamamlandıktan sonra YOURLS uygulamamız artık http://sunucunuzunipadresi:8080/admin adresinde kullanıma açık olacak.

Bu ekranda Install YOURLS diyerek devam edelim.

Artık yönetici sayfasına ilerleyebiliriz. Bizi bu sefer giriş sayfasına yönlendirecek. Buradan compose kodunda ayarladığımız bilgiler ile giriş yapalım.

Aşağıdaki gibi bir ekran ile karşılaşacağız. Burada varsayılan olarak gelen bağlantıları silebilirsiniz.

Örnek olması açısından ben bir bağlantı oluşturdum. Mevcut YouTube kanalı bağlantımı kısa bir bağlantıya çevirdim.

Artık karışık uzun bir bağlantı yerine daha kısa bir bağlantı halinde paylaşabilirim. İşin hoşunuza gidebilecek kısmı YOURLS üzerinden bu bağlantılara giden kişilerin ülkelerini ya da hangi kaynaktan tıkladıklarını da görebiliyorsunuz. Bununla da bitmiyor. Bağlantısını verdiğim GitHub reposunda YOURLS için geliştirilmiş çok fazla sayıda eklenti bulunuyor. Bunlarla birlikte çok daha güzel hale getirebilirsiniz.

YOURLS Awesome – GitHub


Şimdi sırada makalemizin ana konularından olan LDAP eklentisinin entegrasyonu ve ayarlamaları var.

Öncelikle terminal üzerinden yourls dizinimize gelelim. Aşağıdaki komut ile plugins klasörümüze girelim.

Şimdi aşağıdaki git komutu ile eklentimizi indirelim.

git clone https://github.com/mattv8/yourls-ldap-plugin.git

Eğer permission denied hatası alırsanız komutu sudo ile girin.

Şimdi sırada config ayarlarını yapılandırmada. Bu aşamada bir dosya gezgini kullanmak işimizi kolaylaştıracaktır. Bunun için filebrowser kullanacağım. Eğer siz de yoksa aşağıdaki makale aracılığıyla kurabilirsiniz.

Docker Portainer ile Dosya Gezgini Kurulumu

yourls dizinimize gelelim ve data/user/config.php dosyasını açalım. Dosyanın en aşağısına bundan sonra kuracağımız eklentiler ile alakalı konfigürasyonları ekleyebiliriz. LDAP kurulumumuz için aşağıdaki kodu girelim ve gerekli düzenlemeleri gerçekleştirelim.

// LDAP ana bilgisayar adı, IP veya URL. TLS ile LDAP için ldaps://host kullanabilirsiniz.
define( 'LDAPAUTH_HOST', 'ldap://ldapsunucumuzunipadresi' );
define( 'LDAPAUTH_PORT', '389' );
// Ana DN (kullanıcıların konumu) -- gerekli ise OU bilgisini de giriniz.
define( 'LDAPAUTH_BASE', 'dc=example,dc=xyz' );
// Arama yapılacak ayrıcalıklı kullanıcı -- gerekli ise OU bilgisini de giriniz.
define( 'LDAPAUTH_SEARCH_USER', 'CN=kullaniciadi,DC=example,DC=xyz');
// Ayrıcalıklı kullanıcı şifresi
define( 'LDAPAUTH_SEARCH_PASS', 'sifre');
// Kullanıcı adının depolandığı LDAP alan adı, bu ayar sunucuya göre değişkenlik gösterebilir. "uid"
define( 'LDAPAUTH_USERNAME_FIELD', 'sAMAccountName');
// Geçerli kullanıcı adı için yer tutucu olarak %s kullanın
define( 'LDAPAUTH_SEARCH_FILTER', '(&(objectClass=user)(sAMAccountName=%s))');
// LDAP bilgileri ile giriş yapan kullanıcıları config.php dosyasına kaydeder.
define( 'LDAPAUTH_ADD_NEW', true );
// Kullanıcıları önbelleğe kaydeder ancak bu fazla sayıdaki kullanıcılarda sıkıntı çıkarabileceği için devre dışı bırakıyoruz.
define( 'LDAPAUTH_USERCACHE_TYPE', 0);

// Varsayılan olarak tüm LDAP kullanıcılarını yönetici yapar ve erişime izin verir. Bu ayarı devre dışı bırakarak AuthMgrPlus eklentisini kullanacağız.
define( 'LDAPAUTH_ALL_USERS_ADMIN', false);

authMgrPlus Eklentisi Kurulumu

Terminal üzerinde tekrar plugins klasörüne gelelim ve aşağıdaki komut ile eklentiyi indirelim.

git clone https://github.com/joshp23/YOURLS-AuthMgrPlus.git

İndirdikten sonra dosya gezgininden bu klasörün içindeki authMgrPlus klasörünü bir üste klasöre taşıyalım ve diğer klasörü silelim.

Şimdi tekrar config.php dosyamıza gelelim ve authMgrPlus eklentisi için gerekli argümanları yazalım. Aşağıdaki kodu LDAP kodlarının altına yapıştırın.

$amp_role_assignment = array(
  'administrator' => array(
    'adminkullaniciadi',
  ),
  'editor' => array(
    'kullanici1',
  ),
  'contributor' => array(
    'kullanici2',
  ),
);

Bu ayarlamaları yaptıktan sonra YOURLS arayüzüne girelim ve eklentileri yönet kısmını açalım. Buradan önce authMgrPlus eklentisini daha sonradan LDAP eklentisini etkinleştirelim.

Şimdi oturumumuzu kapatıp LDAP sunucumuzda ki başka bir kullanıcı bilgisiyle giriş yapalım. Bu kullanıcı adının daha önceden authMgrPlus kodları içinde belirtildiğinden emin olun!

Kullanıcı bilgilerini girdikten sonra aşağıdaki gibi bir hata alabilirsiniz. Bunun için düzenlememiz gereken bir yer var.

plugins/yourls-ldap-plugin klasörü altında plugin.php dosyasını açalım. Dosyada $new_contents değerini aratalım. Karşımıza çıkan satır şuna benzer olacaktır.

$new_contents = preg_replace('/(yourls_user_passwords\s=\sarray()/', '$0 ' . PHP_EOL . $user_line, $configdata, -1, $count);

Bu satırdaki kodu aşağıdaki kod ile değiştirelim.

$new_contents = preg_replace('/(yourls_user_passwords\s*=\s*[)/', '$1' . PHP_EOL . $user_line, $configdata, -1, $count);

İlk girişinizde herhangi bir hata vermeyip sizi sisteme sokmamış olabilir. Burada herhangi bir sorun yok. Çünkü her yeni LDAP kullanıcısı için ilk giriş seferinde bilgileri config dosyasına ekliyor. Şifre hashlenmiş şekilde config dosyasında saklanıyor. İkinci bir giriş denemesi yaptığınızda sisteme girebildiğinizi göreceksiniz.

Burada bu kullanıcıyı Editor olarak ayarladığım için Manage Plugins sayfasına giremiyorum. Contributor yetkisine sahip kullanıcılar ise sadece kendi oluşturdukları bağlantıları görebiliyor ve yönetebiliyorlar.

Artık bu durumda sisteme LDAP kullanıcıları giriş yapabilecekler. İzinler ise yönetici tarafından config.php dosyası üzerinden ayarlanacak. Şimdi LDAP’tan bağımsız farklı bir kullanıcı eklemek isterseniz config.php dosyasını açıp $yourls_user_passwords kısmına gelmelisiniz. Buraya aşağıdaki gibi kullanıcı adı ve şifre girişi yapın.

'yusufkilinc' => 'sifreniz',

config dosyasını kaydedin ve YOURLS giriş sayfasını bir kere yenileyin. Bu yenilemenin ardından config dosyasındaki şifre hashlenecek ve kullanıcı bilgileri ile oturum açılabilir hale gelecek.

Evet uzun bir makalenin sonuna geldik. Bundan sonraki tüm özelleştirmeler sizin merak, deneme ve yaratıcılığınıza kaldı. Sistem bu haliyle internete açılıp kullanılabilir hale gelebilir.

İleride bu rehber ile bağlantılı makaleler yazılırsa aşağıda bağlantı linki paylaşılacaktır. Eğer paylaşılmamış olursa blog sayfam üzerinde YOURLS araması yaparak alakalı tüm makaleleri bulabilirsiniz!

Kendinize iyi bakın!


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *