Kendi DNS Sunucunuzu Kurun

Gelişen koşullar sonucunda kendi DNS sunucunuzu kurmak isteyebilirsiz. Örneğin kullandığınız DNS sunucusuna güvenmiyor olabilir veya kullandığınız sunucuya erişim engellenmiş olabilir.

Veya kullandığınız dns sunucusuna yaptığınız sorguların loglandığından ve ileride aleyhinize kullanılacağından şüpheleniyor olabilirsiniz.

Bu tip durumların önüne geçmenin en kolaya yolu yurt dışında kendi DNS sunucunuzu oluşturmaktır. Özgürlüğünüzün ve şahsi güvenliğinizin bedeline için ne kadar bütçe ayıracağınıza bağlı olarak yurt dışında bir çok vps hostin seçeneği mevcut.

Ben yıllık 60$ ı bu iş haracayabileceğim kanaatine vararak Digital Ocean‘ı (bundan sonra kısaca DO diyorum) seçtim. DO’da hesap açma ve VPS oluşturma işlemleri oldukça kolay. Hesap oluşturduktans sonra sanal sunucunuzu (ki kendileri ona droplet diyorlar) oluşturmaya başlayabilirsiniz :

Sunucunun yeri konusunda pek yapabileceğiniz bir şey yok, kendisi otomatik seçiyor zaten :

Son olarak sunucunun işletim sistemini ve üzerinde ön tanımlı olarak kurulu olacakları seçmeniz gerekiyor. Bu yazıya göre kurulum yapacaksanız  yalnızca Debian seçeneğini seçmeniz yeterli :

Ardından DO yaklaşık 60 sn içererisinde sanal sunucunuzu hazır edecektir :

Bu esnada DO, kayıt olurken verdiğiniz email hesabınıza root şifresini (roor linux sunucularda en yetkili hesaptır) gönderecektir. Bu şifreyi sisteme girerken kullanacağız. Güvenli bir yere not edin. Hesap oluşturmanın ardından DO bize yönetim ekranını getirecek:

Console Access butonu ile sanal suncumuzun konsoluna erişebiliriz :

Kullanıcı adı olarak root, şifre kısmına ise mail ile gelen şifreyi yazın. Yalnız, şifreyi girerken linux sistemlerde imlecin hareket  etmesini beklemeyin. Olduğu yerde durur ama karakterleri kabul eder.

Eğer şirenizi doğru girdiyseniz aşağıdaki gibi bir ekranla karşılacaksınız :

passwd komutu ile size atanan şifrenizi, daha kolay hatıralayabileceğiniz bir şifre ile değiştirebilirsiniz (yeni şifrenizi iki kere girmeniz gerekiyor):

Şimdi kendimize ait özel DNS sunucusu kurulumuna başlayabiliriz. Sırasıyla vereceğimiz komutlar :

[code]
apt-get update
[/code]

[code]
apt-get install bind9
[/code]

Bu verdiğimiz komut ile DNS sunucumuzu kurduk. Şimdi gerekli konfigürasyonu yapmamız gerekiyor. Web üzerinden bağlandığımız konsolda / karakterini basan tuş bulunmadığı için (en azından benim kulladığım browserda yoktu ama normal ssh ile bağlanınca klavye yerleşminde herhangi bir sorun yok), aşağıdaki komutları sıra ile vermemiz gerekiyor :

[code]
cd..
cd etc
cd bind
nano named.conf.options
[/code]

Karşımıza çıkan konifigürasyon dosyasının işaretlediğim kısmını

şu şekilde değiştiriyoruz :

ardından Ctrl+O tuş kombinasyonu ile kaydedip, Ctrl+X tuş kombinasyonu ile düzenleyiciden çıkıyoruz. Ardından sunucumuzu yeniden başlatıyoruz.

[code]
reboot
[/code]

Tekrar login ekranımızı gördüğümüzde, DNS sunucumuz hazır demektir. Sunucumuzun IP’si, bilgisayarımızdaki DNS sunucuları kısmına yazmamız yeterli. Bu son kısım ile ilgili internette oldukça bol kaynak var.

Bir sonraki yazımda bu kurduğumuz sunucumuzu proxy olarak kullanıp hiç bir filtreye takılmadan güvenli Internet gezintisini yazmayı planlıyorum.

Subversion – Apache behind Nginx on Debian

I assume that you are already using Nginx as web server. So this guide covers hosting svn access through Nginx proxy with Apache.

Install required packages :
[bash]
apt-get install apache2 subversion libapache2-svn apache2-utils
[/bash]

Create svn folder for repositories :
[bash]
mkdir /var/svn
chown www-data.www-data /var/svn/
[/bash]

Modify your apache /etc/apache2/ports.conf file to listen for a different port than 80. Because port 80 is already used by Nginx.

[code]
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 81

<IfModule ssl_module>
Listen 443
</IfModule>

<IfModule mod_gnutls.c>
Listen 443
</IfModule>
[/code]

If you plan to use Apache only for svn http access then you can modify /etc/apache2/sites-available/000-default.conf directly, otherwise you shoul create a virtual host file in /etc/apache2/sites-available and enable it via a2ensite.

Apache virtual host configuration file :
[code]
<VirtualHost *:81>
#ServerName www.example.com

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
[/code]

Enable needed apache modules :
[bash]
a2enmod dav_svn auth_basic authz_svn authn_file
[/bash]

Edit configuration file for dav_svn /etc/apache2/mods-available/dav_svn.conf
[code]
<Location /svn>
DAV svn
SVNParentPath /var/svn

# We are giving repository-wide auth to users
AuthType Basic
AuthName "Goltas SVN"
AuthUserFile /etc/apache2/dav_svn.passwd

#Here we define repository based auth settings file
<IfModule mod_authz_svn.c>
AuthzSVNAccessFile /etc/apache2/dav_svn.authz
</IfModule>

Require valid-user
Satisfy Any

</Location>
[/code]

Create svn repository auth settings file, and a basic config sample :
[code]
nano /etc/apache2/dav_svn.authz
[/code]

[code]
[groups]

[/]
#cagatay will access all repositories with read and write grants:
cagatay = rw

[/sample_poject]
#auser will only have read access for only "sample_project" :
auser = r
[/code]

Create a password file and add user “cagatay” to it :
[code]
htpasswd -c /etc/apache2/dav_svn.passwd cagatay
[/code]

To add another user to password file :
[code]
htpasswd /etc/apache2/dav_svn.passwd anotherusername
[/code]

Finally, restart apache :
[code]
/etc/init.d/apache restart
[/code]

Configure Nginx as proxy pass for apache svn :
[bash]
nano /etc/nginx/sites-available/svn
[/bash]

[code]
upstream svnapache {
server 127.0.0.1:81;
}

server {
server_name svn.yourdomain.com;
listen :80;

client_max_body_size 500M;

root /var/www;
index index.html index.htm;

access_log /var/log/nginx/svn.access.log;
error_log /var/log/nginx/svn.error.log;

location / {
proxy_pass http://svnapache;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
[/code]

Symlink to enable it :

[code]
ln -s /etc/nginx/sites-available/svn /etc/nginx/sites-enabled/svn
[/code]

Restart nginx :
[code]
/etc/init.d/ngix restart
[/code]

To create a new sv repository :
[code]
cd /var/svn
svnadmin create a_new_project_name
chown -R www-data:www-data ./a_new_project_name
[/code]

Bottlepy + Nginx + Uwsgi + Python3 with Virtualenv on Debian

Bottle is my favorite micro web framework for  python.  It is well designed, allows quick prototyping and also developing web based applications.

My preferred web application stack is bottle + nginx + uwsgi + firebird + debian.

So this is my brief tutorial for this stack :

Install required packages :

Prepare web files directory structure for nginx :

Let’s create our virtualenv for our applications. I prefer placing my virtaulenvs in opt directory :

Time to activate our virtualenv and install bottle :

To create our simple demo application :

And code of our simple demo application :

Let’s check if everything is working so far :

If your output is similar to below output then everything is well so far. When you locate to http://localhost:8081, your browser should say “hello” to you.

Now we can safely deactivate our virtualenv,

and start nginx configuration, first we have to create a virtual host file for nginx :

content of the nginx virtualhost is :

to activate our virtualhost we symlink it to sites-enabled directory :

Now it is time to configure our uwsgi. First we create our uswgi appliaction configuration file :

bottledemo.ini content

and symlink to enabled applications :

last touches :

Debian Wheezy Java Kurulumu

Oracle Ağustos 2011’de aldığı bir kararla, DLJ (Operating System Distributor License for Java – Java işletim Sistemi Dağıtımı Lisansı) yi emekli etti. Gerekçe olarak da artık OpenJDK’nın yeterince olgunlaştığını belirttiler.

Bu durumdan doğal olarak Debian Wheezy de etkilendi ve artık dağıtım depolarında sun-java* paketleri yok.

Belki de artık OpenJDK kullanmanın gerçekten zamanı gelmiş olabilir. Eğer illa da Oracle Java kullanacağım diyorsanız yine de bir çözümünüz var.

Öncelikle Oracle’ın sitesinden Java’yı indirmeniz gerekiyor.

32 Bit İçin :

64 Bit İçin :

Sonrasında root olarak java-package’i kuralım :

Artık normal kullanıcı olarak javayı apt paketi haline getirebiliriz :

32 Bit İçin :

64 Bit İçin :

Artık root olarak kurulumu yapabiliriz:

Eğer birden fazla java sisteminizde yüklü ise update-alternatives ile ön tanımlı hangi olarak hangi java sürümünün kullanıabileceğini belirleyebilirsiniz.

Sisteminizde ön tanımlı kullandığınız java versiyonunu öğrenmek içinse :

debian pear install problemi

Bir kaç saattir debian sistemime Deki Wiki kurmaya çalışıyor ama

pear install XML_RPC

kısmında takılıyordum. Timu Eren’in blogunda çözüme rastladım. Dediği gibi sistem yerellerini türkçe’den kurtarınca sorun çözüldü.

Yani :

export LC_ALL=”C”

export LANG=”C”

Kendisine saatlerimi kurtardığı için teşekkür ederim.