Αρχείο ετικέτας linux

AsicMiner σε CentOS server

51nHUrI4khL._SX385_Πριν από λίγο καιρό προμηθεύτηκα ένα ASICMiner Block Erupter από το eBay. Πρόκειται για μια πολύ απλή συσκευή η οποία βοηθάει στο mining για bitcoins. Όχι ότι θα βγάλει ποτέ λεφτά (πλέον για να βγάλει κανείς λεφτά με bitcoing mining πρέπει να κάνει πολύ μεγάλες επενδύσεις, αφού η δυσκολία είναι τεράστια), αλλά έχει πλάκα σαν χόμπι, και μέσω ebay βρίσκεις τέτοιες συσκευές γύρω στα 20 ευρώ το κομμάτι.

Αφού το δοκίμασα μερικές μέρες στα Windows με το cgminer, ήρθε η ώρα να μετακομίσει στον server του ενυδρείου.

Η εγκατάσταση ήταν υπερβολικά εύκολη. Έβαλα το stick σε μια από τις θύρες του netbook, και έδωσα τις παρακάτω εντολές:

yum install libcurl-devel libudev-devel

(απαραίτητα πακέτα για να γίνει μετά το compile)

cd /root
git clone https://github.com/ckolivas/cgminer
cd cgminer
./autogen.sh
./configure --enable-icarus
make install

και τρέχει με την εντολή cgminer. Τόσο απλά.

Από εκεί και πέρα, για να μην ασχολούμαι καθόλου μαζί του, έπρεπε να το μετατρέψω σε service ώστε να τρέχει μόνο του. Αρχικά, από το ίδιο το cgminer αποθηκεύουμε τα settings που έχουμε επιλέξει στο αρχείο /etc/cgminer.conf.

Μετά δίνουμε: vim /etc/init.d/cgminer για να δημιουργήσουμε ένα script για το service και μέσα paste:

#!/bin/sh
#
# cgminer Mine bitcoins using cgminer
#
# chkconfig: 345 20 80
# description: Starts and stops cgminer to mine for \
# bitcoins
### BEGIN INIT INFO
# Provides: cgminer
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: Bitcoin miner
# Description: Mine bitcoins using cgminer
### END INIT INFO
# Source function library.
. /etc/rc.d/init.d/functions
exec="/usr/local/bin/cgminer"
prog="cgminer"
config="/etc/cgminer.conf"
args=" --config /etc/cgminer.conf"
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
lockfile=/var/lock/subsys/$prog
start() {
 [ -x $exec ] || exit 5
 [ -f $config ] || exit 6
 echo -n $"Starting $prog: "
 # if not running, start it up here, usually something like "daemon $exec"
 daemon $exec $args
 retval=$?
 echo
 [ $retval -eq 0 ] && touch $lockfile
 return $retval
}
stop() {
 echo -n $"Stopping $prog: "
 # stop it here, often "killproc $prog"
 killproc $prog
 retval=$?
 echo
 [ $retval -eq 0 ] && rm -f $lockfile
 return $retval
}
restart() {
 stop
 start
}
reload() {
 restart
}
force_reload() {
 restart
}
rh_status() {
 # run checks to determine if the service is running or use generic status
 status $prog
}
rh_status_q() {
 rh_status >/dev/null 2>&1
}
case "$1" in
 start)
 rh_status_q && exit 0
 $1
 ;;
 stop)
 rh_status_q || exit 0
 $1
 ;;
 restart)
 $1
 ;;
 reload)
 rh_status_q || exit 7
 $1
 ;;
 force-reload)
 force_reload
 ;;
 status)
 rh_status
 ;;
 condrestart|try-restart)
 rh_status_q || exit 0
 restart
 ;;
 *)
 echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
 exit 2
esac
exit $?

Αλλάζουμε permission με chmod 0755 /etc/init.d/cgminer  και το service μας είναι έτοιμο. Θα έλεγα καλά κέρδη, αλλά δεν… οπότε, καλή διασκέδαση 😀

Project: Aquarium Server

Ένα project που ήθελα να ξεκινήσω από καιρό ήταν να στήσω ένα μικρό linux server στο σπίτι, το οποίο θα ξεκούραζε τον βασικό μου υπολογιστή που έχω διαρκώς ανοιχτό, και να περιέχει όλα τα development tools που χρειάζομαι (git repositories, apache/mysql περιβάλλον για δοκιμές, αποθετήριο αρχείων για τη δουλειά και backup server), αλλά και μερικά που ήθελα να προσθέσω (Jenkins continius intergration server κ.α.).

Φυσικά το μεγαλύτερο πρόβλημα που υπάρχει όταν θέλεις να υλοποιήσεις ένα τέτοιο project είναι ο χρόνος. Βρήκα τελικά την ευκαιρία λίγο πριν τον δεκαπενταύγουστο, αφού όλοι οι πελάτες και συνεργάτες ήταν εκτός, ενώ εγώ πηγαίνω πάντα διακοπές το Σεπτέμβρη.

Το netbook είχε βολέψει πάρα πολύ κάποτε λόγω μεγέθους. Αλλά, once you go mac... σταματάς να το χρησιμοποιείς.
Το netbook είχε βολέψει πάρα πολύ κάποτε λόγω μεγέθους. Αλλά, once you go mac… σταματάς να το χρησιμοποιείς.

Η ιδέα ήταν πάντα να στήσω τον server σε κάποιο παλιό υπολογιστή. Τελικά η λύση ήρθε με ένα παλιό netbook acer aspire one, το οποίο αν και με βόλεψε για αρχή στη χρήση του, λίγους μήνες μετά την αγορά του ήταν ήδη τόσο απαρχαιωμένο τεχνικά που με δυσκόλευε στη δουλειά πάρα πολύ.

Τα πλεονεκτήματα του για home server όμως είναι πάρα πολλά:

  • Πολύ οικονομικό σε ανάγκες τροφοδοσίας
  • Τελείως αθόρυβο
  • Η μπαταρία του το κρατάει ανοιχτό μετά από αρκετά μεγάλη διακοπή ρεύματος, χωρίς την ανάγκη ups (αν και κάποια στιγμή η μπαταρία σίγουρα θα πεθάνει)
  • Πολύ μικρό και κρύβεται εύκολα
  • Τα τεχνικά χαρακτηριστικά είναι αρκετά καλύτερα από ενός φθηνού vps. Με 1GB Ram, 160GB και ένα αξιοπρεπέστατο atom επεξεργαστή, μπορώ να τρέξω πολύ περισσότερα πράγματα από αυτά που χρειάζομαι, χωρίς να χάσω σε σταθερότητα
  • Φυσικά έχει ενσωματωμένο wifi και lan port

Πριν ξεκινήσω το project,  έπρεπε να αποφασίσω μερικά πρακτικά θέματα: που θα είναι το μηχάνημα, πως θα τροφοδοτείται και πως θα έχει πρόσβαση στο δίκτυο. Η λύση ήρθε εύκολα από ένα άλλο home project που είχα ξεκινήσει πριν από καιρό, τελείως άσχετο (αρχικά) με υπολογιστές: ένα ενυδρείο!

Το ενυδρείο. Το έπιπλο του είναι ιδανικό για να κρύψεις οτιδήποτε.
Το ενυδρείο. Το έπιπλο του είναι ιδανικό για να κρύψεις οτιδήποτε.

Βασικά πρόκειται (όπως θα δείτε στις φωτογραφίες) για ένα αρκετά μεγάλο ενυδρείο, το οποίο σαν βάση έχει το δικό του έπιπλο με ντουλάπια και θέσεις για τον δικό του εξοπλισμό (αεραντλίες, χρονοδιακόπτες, φίλτρα), και φυσικά έχει και τα πολύμπριζα που χρειάζομαι για την τροφοδοσία του netbook. Έτσι η αρχική ιδέα ήταν να βάλω το netbook μέσα στο ντουλάπι με τον υπόλοιπο εξοπλισμό.

Αυτή η ιδέα δεν πήγε πολύ καλά, γιατί στο ντουλάπι επικρατεί πολύ ζέστη και δεν υπάρχει επαρκής αέρας, με αποτέλεσμα όταν θέλω να κάνω κάτι βαρύ με το netbook, αυτό να ζεσταίνεται υπερβολικά και να σβήνει. Η τελική λύση ήταν να εκμεταλλευτώ ένα μικρό κενό που υπάρχει δίπλα στο ενυδρείο, ανάμεσα σε αυτό και τον τοίχο του δωματίου, που αερίζεται επαρκώς, έχει πρόσβαση σε όλα τα καλώδια του ενυδρείου και δεν φαίνεται καθόλου.

Η τελική θέση - έχω τραβήξει λίγο πιο έξω το netbook για να φαίνεται καθαρά.
Η τελική θέση – έχω τραβήξει λίγο πιο έξω το netbook για να φαίνεται καθαρά.

Η σύνδεση στο τοπικό δίκτυο γίνεται μέσω wifi, αφήνοντας το καλώδιο ελεύθερο για επόμενο project.

Η Αρχική Εγκατάσταση

Σύνδεση με SSH. Το ascii art δεν είναι πολύ καθαρό, είναι η γάτα μου :-)
Σύνδεση με SSH. Το ascii art δεν είναι πολύ καθαρό, είναι η γάτα μου 🙂

Φυσικά ξεκινάμε με την εγκατάσταση του Linux. CentOS, ώστε να ταιριάζει με το σύνηθες configuration που χρησιμοποιώ για hosting servers – άλλωστε αυτό είναι και το νόημα ενός δοκιμαστικού περιβάλλοντος. Το netbook δεν έχει CD drive, οπότε η εγκατάσταση έγινε από usb stick με χρήση του Universal USB Installer. Piece of cake 🙂

Η εγκατάσταση των πακέτων που χρειάζομαι για τον server ήταν πολύ εύκολη με τη χρήση του yum, και χρειάστηκε να αλλάξω το run level ώστε ο υπολογιστής να ανοίγει σε level 3 – χωρίς δηλαδή γραφικό περιβάλλον. Το γραφικό περιβάλλον όμως το άφησα εγκατεστημένο, ίσως χρειαστεί στο μέλλον (μπορεί π.χ. να θελήσω αργότερα να μπορώ να συνδέω το μηχάνημα στην τηλεόραση για σερφάρισμα).

Εκτός από τα βασικά (apache, mysql, php κλπ κλπ), εγκατέστησα το webmin και το virtualmin για ευκολότερη διαχείριση, καθώς και τον jenkins, ο οποίος τρέχει σαν ξεχωριστός server.

Τέλος, άνοιγμα ports από το iptables (το firewall του linux), και είμαστε έτοιμοι… για το τοπικό network. Όμως, υπάρχει ένα πρόβλημα: ένας άλλος λόγος που ήθελα να έχω ένα ξεχωριστό μηχάνημα με τα git repositories μου, είναι πως ήθελα να έχω πρόσβαση από μακριά.

Πρόσβαση από Μακριά

Το βασικό θέμα είναι ότι δεν έχω static ip. Και, αν και το router μου υποστηρίζει την αυτόματη σύνδεση σε dyndns, αυτή η υπηρεσία είναι πλέον εμπορική. Ευτυχώς όμως υπάρχει ανταγωνιστής: no-ip.com.

Το πρώτο βήμα είναι το δωρεάν registration και δημιουργία του πρώτου virtual host. Μετά, για να ενημερώνεται σωστά, κατέβασα το dynamic update client. Αυτό είναι ένα προγραμματάκι που κάθε μερικά λεπτά (όσο το ρυθμίσεις), ελέγχει ποια είναι η public ip του υπολογιστή και ενημερώνει την υπηρεσία για να ανανεώσει άμεσα το virtual host. Αυτό το ρύθμισα να τρέχει ως service στην έναρξη του υπολογιστή, και όλα καλά.

Επίσης, ήθελα ο υπολογιστής να απαντάει σε κάποιο ωραίο domain, όχι σε κάποιο no-ip.biz που κάθε φορά θα προσπαθώ να το θυμηθώ. Άλλωστε, μπορεί να θέλω να φιλοξενήσω πάνω από ένα site (όπως και κάνω) για τις δοκιμές μου. Ή, ένα ωραίο use case, αν θέλω να δείξω σε έναν πελάτη τη δουλειά που έχω σε εξέλιξη, θέλω να μπορεί να μπει σε κάποιο domain και δει – και δε θέλω να μπει σε κάποια no-ip διεύθυνση.

Η λύση εδώ έρχεται από ένα πραγματικό hosting server που έχω στημένο για τη δουλειά σε κάποιο datacenter. Πολύ απλά, μπήκα στο λογαριασμό ενός βασικού μου site και δημιούργησα στα dns του ένα cname record το οποίο οδηγεί κάποιο subdomain στο virtual host που μου δίνει η no-ip.

Π.χ., αν το domain μου ήταν toonomathsetairiasmoy.gr και το virtual host ήταν toenydriomou.no-ip.biz, έφτιαξα ένα cname toenydriomou.toonomathsetairiasmoy.gr -> toenydriomou.no-ip.biz. Με τον ίδιο τρόπο θα μπορούσα να στήσω οποιοδήποτε domain ή subdomain επιθυμώ, χωρίς να πληρώσω τίποτα επιπλέον, αφού έχοντας hosting server έχω και τον δικό μου dns server που εξυπηρετεί μια χαρά για τέτοια τρικ.

Τέλος, ρυθμίζουμε το Nat Server του router μας ώστε να προωθεί τα port που χρειαζόμαστε στην εσωτερική ip του netbook. Εννοείται βέβαια ότι χρειάζεται αρκετή προσοχή όσον αφορά το τι προωθούμε, τα permissions και τους κανόνες του iptables, καθώς πλέον έχουμε έναν υπολογιστή proxy μεταξύ του τοπικού δικτύου μας και του internet – με άλλα λόγια αν κάποιος αποκτήσει πρόσβαση σε αυτό, έχει πρόσβαση σε όλο το τοπικό δίκτυο.

Ένα πρόβλημα που μπορεί να αντιμετωπίσετε είναι το ότι πολλά φθηνά router (όπως αυτά που δίνει δωρεάν ο ΟΤΕ), δεν υποστηρίζουν τη λειτουργία NAT Loopback. Τι σημαίνει αυτό; Από οποιαδήποτε απομακρυσμένη τοποθεσία, αν χτυπήσετε το domain που δημιουργήθηκε στα προηγούμενα βήματα, όλα λειτουργούν όπως πρέπει. Αν όμως το χτυπήσετε εντός του εσωτερικού δικτύου, θα δείτε τη σελίδα ρυθμίσεων του router. Θεωρητικά αυτό θα σήμαινε ότι απλά χτυπώντας την εσωτερική ip του netbook θα έβλεπα ότι ήθελα, αλλά επειδή στο netbook τρέχω αρκετά apache virtual servers ώστε να έχω διαφορετικά domains, η σκέτη ip δε σημαίνει τίποτα. Η μόνη λύση που σκέφτηκα για αυτό ήταν να κάνω αλλαγές στα αρχεία hosts των υπολογιστών μου. Π.χ. στο desktop υπολογιστή μου που τρέχει windows 8, πρόσθεσα στο αρχείο c:\windows\system32\drivers\etc\hosts μια εγγραφή για κάθε domain που φιλοξενεί το netbook, με την ip του netbook. Αυτό βολεύει στους σταθερούς υπολογιστές που δε συνδέονται σε άλλα δίκτυα, στο macbook μου όμως που το χρησιμοποιώ έξω, ήθελα κάτι πιο απλό. Η λύση ήταν μια μικρή εφαρμογή, το Gas Mask, το οποίο επιτρέπει να έχω διαφορετικές εκδόσεις του αρχείου hosts, τα οποία να αλλάζω αναλόγως με τη δουλειά μου, εύκολα και γρήγορα.

Συγχρονισμός Εργασίας

Πλέον έχουμε ένα πλήρως λειτουργικό server με τα όλα του. Συνδεόμαστε για διαχείριση μέσω ssh (ή του webmin), δημιουργούμε sites με το virtualmin, και το καθένα έχει τις δικές του βάσεις, τα δικαιώματα του στην php, ftp service για να ανεβάζουμε αρχεία κ.λ.π. Επίσης τρέχουμε και μια σειρά από git repositories, στα οποία μπορώ να συνδεθώ από οπουδήποτε μέσω ssh.

Για λόγους ευκολίας όμως ήθελα και κάτι άλλο. Σε όλους τους υπολογιστές που κάνω development, τρέχω μεταξύ των άλλων το dropbox, το οποίο περιέχει τον φάκελο με όλα τα τρέχοντα project μου, ώστε να κάνω αλλαγές από οπουδήποτε, χωρίς να κάνω checkout από το git πάντα (ιδίως όταν σε ένα project δουλεύω μόνος μου ή οι συνεργάτες δεν έχουν git, οπότε η δουλειά γίνεται μόνο μέσα από το dropbox). Ήθελα αυτός ο φάκελος να συγχρονίζει με το netbook και ότι δουλεύω να υπάρχει αυτόματα σε κάποιο δοκιμαστικό περιβάλλον.

Αρχικά αναρωτιόμουν αν μπορεί να γίνει, γιατί είχα στο μυαλό μου ότι το dropbox λειτουργεί σε γραφικό περιβάλλον. Όμως ψάχνοντας λίγο είδα ότι έκανα λάθος:

Το dropbox τρέχει ως service, για κάθε χρήστη που το χρησιμοποιεί. Το γραφικό περιβάλλον (προφανώς), απλά δίνει εντολές στο service. Και επειδή προφανώς δεν είμαι ο μόνος με τέτοια ανάγκη, το dropbox παρέχει το dropbox cli, ένα python script που δίνει πρόσβαση σε όλες τις λειτουργίες του service μέσα από τη γραμμή εντολών. Πολύ σύντομα, και με λίγες εντολές, έφτιαξα ένα νέο account στο server, με δικό του subdomain, όρισα να συγχρονίζει μόνο με ορισμένους φακέλους (δεν ήθελα να τραβήξω τα πάντα από το dropbox), και μια μια μικρή αλλαγή στο configuration του apache, όρισα αυτό το φάκελο ως πηγή για τον apache. Έτοιμο και αυτό.

Επιπλέον Λειτουργίες

Εδώ νομίζω είναι το πιο ενδιαφέρον κομμάτι. Αφού τα ετοίμασα όλα, είχα ένα πολύ χαλαρό μηχάνημα, το οποίο κάθεται αόρατο στο σαλόνι μου. Τι άλλο θα μπορούσα να κάνω για να το εκμεταλλευτώ και να πειραματιστώ λίγο;

Κάμερα Ενυδρείου

Αυτό μου φάνηκε σχεδόν αυτονόητο και είναι το αγαπημένο μου κομμάτι της υλοποίησης. Φυσικά θα το εξελίξω κι άλλο.

Η κάμερα - για την ώρα κολλημένη με ταινία, αλλά θα αλλάξει σύντομα.
Η κάμερα – για την ώρα κολλημένη με ταινία, αλλά θα αλλάξει σύντομα.

Απλά πράγματα: Προσάρμοσα μια φθηνή webcam στο ενυδρείο, η οποία δείχνει όλο το εσωτερικό. Σύνδεσα τη webcam στο netbook και άρχισα να κάνω stream την εικόνα, ώστε να μπορώ πάντα και από παντού να δω την κατάσταση του ενυδρείου μου. Εκτός από το χάζεμα, αυτό έχει και μια πρακτική αξία: Όταν λείπω για κάποιες μέρες από το σπίτι, το ενυδρείο έχει σύστημα για αυτόματο τάϊσμα, αλλά δεν έχω κανένα τρόπο να γνωρίζω αν τα ψάρια είναι ok και όλα πηγαίνουν καλά. Αν κάποιο ψάρι αρρωστήσει και πεθάνει, αν μείνει στο ενυδρείο, μολύνει τα πάντα και σύντομα αντί για ενυδρείο συντηρείς ένα υδρόβιο νεκροταφείο. Βλέποντας λοιπόν από μακριά την κατάσταση, μπορώ αν χρειαστεί να ειδοποιήσω κάποιον φίλο μου να βάλει χέρι και να σώσει την κατάσταση.

Φυσικά τα πράγματα δεν είναι τόσο απλά όσο τα σκέφτηκα αρχικά. Υπάρχουν διάφορα θέματα, πρακτικά κυρίως: Πως προσαρμόζεις την κάμερα; Πως ελέγχεις ποιος την βλέπει; Τι γίνεται όταν σβήσουν τα φώτα και δεν φαίνεται τίποτα;

Η προσαρμογή της κάμερας, προς το παρόν τουλάχιστον, έγινε με αρκετά ισχυρή αυτοκόλλητη ταινία διπλής όψης. Φαίνεται να κρατάει αρκετά σταθερά την κάμερα. Για ασφάλεια έχω βάλει και λίγη ταινία μιας όψης, η οποία καλύπτει τη βάση της κάμερας. Αφού τρέξει λίγο καιρό το σύστημα, ώστε να βεβαιωθώ ότι με βολεύει η θέση του, θα αντικαταστήσω τις ταινίες και θα βιδώσω την βάση της κάμερας στο ξύλινο έπιπλο (δεν θέλω να το πειράξω ακόμα).

Ο φωτισμός του ενυδρείου λειτουργεί με χρονοδιακόπτες που ανάβουν και σβήνουν σταδιακά τα φώτα σε συγκεκριμένες ώρες. Όταν σβήνουν, και για όσο είναι μέρα, το εσωτερικό του ενυδρείου είναι ακόμα ορατό, αλλά πολύ λιγότερο, ενώ όταν νυχτώνει πρακτικά η κάμερα αχρηστεύεται. Δεν υπάρχει λόγος λοιπόν να κάνει κάποιος stream μια μαύρη εικόνα, σωστά; Μια πολύ γρήγορη λύση λοιπόν ήταν 2 απλά cron job, τα οποία ενεργοποιούν και απενεργοποιούν το service του streaming τις ώρες που θέλω. Και αν για οποιοδήποτε λόγο χρειαστεί να μπω άλλη ώρα, απλά ενεργοποιώ το service μέσω ssh.

Πείτε γεια στο αγγελόψαρο...
Πείτε γεια στο αγγελόψαρο…

Το θέμα του streaming ήταν λίγο πολύπλοκο. Για να λειτουργήσει σωστά έπρεπε να εγκαταστήσω τον ffserver με διάφορους codecs κλπ, και να το ρυθμίσω να τρέχει ως service. Η εγκατάσταση έγινε και πάλι με το yum. Για να τρέξει σωστά δημιουργούμε ένα .conf αρχείο που περιγράφει το τι θέλουμε να περιέχει το stream και ποιος έχει πρόσβαση. Εγώ π.χ. δημιούργησα 3 διαφορετικά stream:

  • ένα χαμηλής ανάλυσης και framerate (ένα καρέ/sec), σε mjpeg format, δημόσιο παντού, ώστε να μπορώ αν θέλω να το κάνω embed σε κάποιο site
  • ένα υψηλής ανάλυσης, με ήχο και καλύτερη framerate (5 καρέ / sec), κλειδωμένο στο εσωτερικό δίκτυο και
  • ένα html stream (!) το οποίο ουσιαστικά μου δείχνει την κατάσταση του stream server – και αυτό μόνο από το εσωτερικό δίκτυο.

Για να λειτουργήσουν όλα αυτά, χρειάζεται επίσης και τη σωστή εντολή, την οποία εγώ την μετέτρεψα σε service. Κάτι σαν:

ffserver -loglevel quiet -f /etc/ffserver.conf & ffmpeg -v 2 -f video4linux2 -i /dev/video0 -f alsa -ac 1 -i hw:1 http://localhost:8090/aquarium.ffm &

δηλαδή, τρέχει τον ffserver, χωρίς logs, με τις ρυθμίσεις που έχω ορίσει στο ffsserver.conf. Τραβάει το video από τη συσκευή /dev/video0, δηλαδή την usb camera όπως τη βλέπει αυτόματα το linux, και τον ήχο μέσω alsa από την αντίστοιχη συσκευή. Όλα αυτά τα δημοσιεύει στην διεύθυνση που έχω καθορίσει. Το & στο τέλος, λέει στο bash να τρέξει το service στο background. Το μετέτρεψα σε service φτιάχνοντας αντίστοιχα ένα αρχείο /etc/init.d/ffserver. Για λεπτομέρειες σχετικά με αυτό… google it 🙂

Το επόμενο project που έχω στο μυαλό μου θα κάνει την κατάσταση λίγο καλύτερη: Θα αφαιρέσω τελείως τα timers από τα φώτα. Είναι αναλογικά, και μετά από κάποιο διάστημα ή μετά από διακοπές ρεύματος, χάνουν τον συγχρονισμό τους και πρέπει να τα ρυθμίσεις ξανά. Στη θέση τους θα εγκαταστήσω controllers που θα ελέγχονται από το netbook. Έτσι θα είναι πάντα σωστά στην ώρα τους, ενώ θα μπορώ να τα χειριστώ και από απόσταση, η να προσθέσω επιπλέον αυτοματισμούς. Σε συνδυασμό με κάποιους αισθητήρες (θερμοκρασία, στάθμη νερού), μπορώ να έχω έναν αρκετά καλό έλεγχο από μακριά. Φυσικά, όταν γίνει αυτό, θα ακολουθήσει άλλο αναλυτικό post.

Proxy Server

Μέσα στο δίκτυο του σπιτιού έχω πάρα πολλές συσκευές για browsing (ipad, laptops, κινητά κλπ), τα οποία δεν τρέχουν κάτι ιδιαίτερο, αλλά όλα μαζί επιβαρύνουν τη σύνδεση μου αρκετές φορές, ειδικά αν έχω φιλοξενούμενους.

Η γρήγορη λύση: squid server. Proxy server, μπορείς να κασάρεις τα πάντα, με αποτέλεσμα να κάνεις λιγότερα πραγματικά request προς το internet και σώζεις αρκετό bandwidth. Ρυθμίζω όλες τις δευτερεύουσες συσκευές να βλέπουν τον proxy, και μόνο τα μηχανήματα της δουλειάς να βλέπουν απ΄ευθείας το router μου.

Μελλοντικά Project

  • Κάτι άμεσο είναι να χρησιμοποιήσω την ελεύθερη ethernet port του netbook για να συνδέσω ένα παλιό wireless access point που έχω. Θα δημιουργήσω ένα ελεύθερο wireless δίκτυο (χωρίς κωδικούς), για χρήση από τους φιλοξενούμενους ή και τους γείτονες. Δεν θα έχει πρόσβαση στο εσωτερικό μου δίκτυο (θα χρησιμοποιεί διαφορετικό subnet), θα έχει περιορισμούς σε bandwidth και υπηρεσίες, και φυσικά θα έχει και τον proxy του. Το Delta Hacker έχει ένα ωραίο tutorial για τέτοιες δουλειές μέσω του pfsense, κάτι τέτοιο έχω στο μυαλό μου, αλλά θέλω να το υλοποιήσω με το CentOs. Είναι και ωραίο για πειραματισμούς.
  • Αυτοματισμοί για το ενυδρείο (όπως λέω πιο πάνω).
  • Μια άλλη ιδέα στα πλαίσια του πειραματισμού είναι μια δεύτερη webcam συνδεμένη στο netbook, η οποία ελέγχει τον χώρο (security δηλαδή). Η διαφορά είναι ότι αυτή η κάμερα θα ενεργοποιείται με την κίνηση και θα καταγράφει για κάποιες μέρες. Παράλληλα, το αρχείο της καταγραφής μπορεί να ανεβαίνει σε κάποια online υπηρεσία (dropbox;), ώστε αν κάποιος μπει και κλέψει το netbook, η καταγραφή δεν θα χάνεται. Ίσως αυτό να τρέξει σε κάποια άλλη συσκευή τοποθετημένη αλλού (π.χ. ένα raspberry pi στο πατάρι), αλλά το στήσιμο είναι πολύ κοντινό.
  • Χρήση ως NAS. Στο σπίτι υπάρχουν διάφοροι σκληροί δίσκοι που έχω παρατήσει για μεγαλύτερους. Λέω να συνδέσω κάποιον στο netbook μέσω usb, ο οποίος θα μπορεί να τραβάει backups, να κρατάει media files για προβολή από την τηλεόραση (μέσω DLNA;), το βράδυ να ανεβάζει/κατεβάζει torrents κ.λ.π. – έτσι δεν θα έχω κανένα λόγο να αφήνω ανοιχτό άλλο υπολογιστή το βράδυ.
  • Δημιουργία VPN – έτσι θα έχω καλύτερη πρόσβαση στο εσωτερικό μου δίκτυο, με μεγαλύτερη ασφάλεια, ενώ όταν χρειάζεται θα μπορώ με το laptop να μπαίνω σε υπηρεσίες χωρίς να φοβάμαι ότι κάποιος παρακολουθεί μια δημόσια σύνδεση. Πάλι το Delta Hacker έχει ένα ωραίο tutorial σε ένα από τα πρώτα τεύχη.

Συμπέρασμα

Σε γενικές γραμμές, αν έχεις κάποιο παλιό netbook/laptop, ένα project αυτού του είδους είναι πολύ ωραία εμπειρία. Αξιοποιείς ένα μηχάνημα το οποίο διαφορετικά απλά θα έπιανε χώρο και σκόνη, μαθαίνεις ένα σωρό πράγματα, αυτοματοποιείς αρκετές διαδικασίες κάνοντας τη ζωή σου πιο εύκολη κ.λ.π.

Επίσης, έχοντας ένα μίνι server, έστω και χαμηλών προδιαγραφών, προσβάσιμο από παντού, μπορεί να βοηθήσει στο να ανεξαρτητοποιηθεί κάποιος από υπηρεσίες τρίτων. Π.χ. φανταστείτε, αντί για dropbox να τρέχατε κάποιο open source σύστημα που να κάνει την ίδια δουλειά, σαν το ownCloud.

Αν έχετε κάποιο μηχάνημα που περισσεύει και λίγο (ή πολύ) χρόνο, δοκιμάστε το!

Linux Inside

Για όσους δεν το έχουν δει ακόμα, κυκλοφόρησε το πρώτο τεύχος ενός νέου ελληνικού περιοδικού για το Linux και το ανοιχτό / ελεύθερο λογισμικό, το Linux Inside.

Πρόκειται ουσιαστικά για τη συνέχεια του Linux Format, το οποίο σταμάτησε να κυκλοφορεί, αν κατάλαβα καλά λόγω λήξης της σύμβασης του εκδότη με το ξένο περιοδικό. Παρ’ όλα αυτά, το Linux Inside έχει αρκετές βελτιώσεις σε σχέση με το προηγούμενο, καθώς και διάφορα ενδιαφέροντα στοιχεία, όπως π.χ. 3D barcodes με όλα τα link στα άρθρα.

Γενικά έχω σταματήσει εδώ και καιρό να αγοράζω περιοδικά, αφού όλες τις ανάγκες μου σε ενημέρωση τις καλύπτω online. Ειδικά μάλιστα για τα νέα σχετικά με open source και linux, έτσι κι αλλιώς ενημερώνομαι αρκετά γρήγορα, ακόμα και από τους ίδιους τους συντάκτες του περιοδικού, αφού ο καθένας στο δικό του blog καλύπτει ήδη όλα τα σχετικά θέματα πριν την κυκλοφορία του περιοδικού (π.χ. τα νέα του elkosmas.gr). Παρ’ όλα αυτά, το Linux Inside θα συνεχίζω να το αγοράζω όσο είμαι στην Ελλάδα, αφού πιστεύω ότι τέτοιες προσπάθειες χρειάζονται στήριξη για να συνεχίσουν. Βοηθάνε πολύ τους νέους χρήστες (όταν έκανα τα πρώτα μου βήματα κι εγώ, τα περιοδικά μου είχαν φανεί πολύ χρήσιμα), βοηθάνε στην ανάπτυξη της κοινότητας κ.λ.π.

Δείτε περισσότερα για το περιοδικό στη σελίδα http://www.linuxinside.gr.

Κάνοντας το Ubuntu να μοιάζει με Mac OS

Αν και βρίσκω το Gnome αρκετά εύχρηστο, από τότε που άγγιξα το Mac ερωτεύτηκα το user interface του. Ευτυχώς όμως το Gnome είναι αρκετά εύκολα παραμετροποιήσιμο και μπορείς να του δώσεις ότι εμφάνιση θέλεις. Αποφάσισα λοιπόν να κάνω το netbook μου να θυμίζει mac.

Βασίστηκα σε αυτόν τον οδηγό, όμως δεν ακολούθησα όλα τα βήματα. Παρακάτω μπορείτε να διαβάσετε μια ελεύθερη απόδοση οδηγιών από όσα έκανα.

Αρχικά κατεβάζουμε τα Mac4Lin themes και κάνουμε εξαγωγή στο home directory μας. Η εγκατάσταση είναι εύκολη, ανοίγουμε terminal, μπαίνουμε στο directory που αποσυμπιέσαμε τα themes και δίνουμε:

sh Mac4Lin_Install_v1.0.sh

Αυτό θα αλλάξει το desktop και την εμφάνιση των παραθύρων. Αν το background του desktop δεν έχει αλλάξει, θα βρείτε τα backgrounds στο folder ~/Mac2Lin_v1.0.

Επόμενο βήμα είναι η εγκατάσταση του Dock. Αυτό που χρησιμοποιώ εγώ είναι το  AWN.  Για την εγκατάστασή του δίνετε:

sudo apt-get install avant-window-navigator

Ή μπορείτε να βρείτε το πακέτο μέσα από την προσθαφαίρεση εφαρμογών. Για να λειτουργήσει σωστά θα πρέπει να αφαιρέσετε το κάτω πάνελ που έχει ήδη το gnome και εμφανίζει της εφαρμογές που τρέχουν. Το AWN θα το βρείτε κάτω από τα βοηθήματα. Θα πρέπει όμως να ρυθμιστεί ώστε να τρέχει όταν ξεκινάει το σύστημα, αυτό γίνεται από το menu: Σύστημα->Προτιμήσεις->Προγράμματα εκκίνησης.  Η εντολή που δίνουμε είναι  avant-window-navigator.

Για να δείξει όπως πρέπει το  dock, πρέπει να εγκαταστήσουμε και το αντίστοιχο theme. Πηγαίνουμε λοιπόν: Προτιμήσεις->AWN Manager->Themes->Προσθήκη και από εκεί επιλέγουμε το αρχείο Mac4Lin_v1.0/AWN/Mac4Lin_AWN_v1.0.tar.gz. Εφαρμόζουμε και είναι έτοιμο.

Μέχρι αυτό το σημείο, πρέπει να έχουμε αυτό:

mac-desktop-with-awn

Θα βρείτε πολύ χρήσιμη την επιλογή: Απόκρυψη κάτω από τα μεγιστοποιημένα παράθυρα όταν δεν χρησιμοποιείται. Αλλιώς θα χάνετε το κάτω μέρος των παραθύρων σας.

Ο οδηγός που διάβασα έχει μερικά ακόμα βήματα, όπως η αλλαγή των fonts και η εγκατάσταση ενός global menu όπως του mac, αλλά και του dashboard. Τα fonts δεν με ενδιαφέρει να αλλάξουν, το global menu σε άλλο μηχάνημα που το δοκίμασα μου έβγαζε προβλήματα σε κάποιες εφαρμογές (όπως ο firefox) και έτσι δεν το έκανα. Ίσως βέβαια η τελευταία έκδοση να έχει βελτιωθεί. Τέλος, το dashboard γίνεται μέσω του compiz, όμως στο netbook δεν τρέχω compiz (ακόμα), οπότε άφησα αυτό το βήμα για πιο μετά. Αν το κάνω όμως, θα ανανεώσω αυτό το post.

Why Desktop Linux Sucks and what can we do about it

Το παρακάτω video είναι μια παρουσίαση του Bryan Lunduke στην οποία αναφέρει μερικές απόψεις σχετικά με το Desktop Linux και τι πρέπει να γίνει για να πετύχει σε μεγάλη κλίμακα. Σε κάποια σημεία έχει δίκιο, σε άλλα δεν είμαι σίγουρος, όμως σίγουρα σε βάζει σε σκέψεις.

Το post στο δικό του blog έχει και το slide show σε .odp.

[via]