miércoles, 25 de febrero de 2015

NAS Casero y otras maravillas con BananaPi y Debian AKA bananian

Intro

Mi primer post del 2015 un mes montandome lo que voy a contar a continuación y todo nació porque....
Buscaba tener un NAS en casa para que la familia almacene fotos y otras cosas importantes, también queria tener una seedbox para los torrents y reducir el consumo energetico de un PC encendido para hacer downloads. Otro tema era el de compartir las peliculas directamente desde un solo punto por tanto ya se descargan al NAS mediante transmission-daemon y couchpotato.

Img. 1.1

Img. 1.2

Materiales.

BananaPi €34 solo placa y €43 con caja y cable SATA en aliexpress.com (Img 1.1)
HDD WD NAS Red 1T 2.5" €82
RaspberryPi B+ (Img 1.2) y in disco externo USB 2 puede ser Una opcion mas economica.
Costo total €130 con la caja del disco y el envío aliexpress tiene free shipping. La solución elegante sería una synology que va desde los €160 sin discos y una caja My Cloud WD de €160 versión básica y sin lo versatil ni la diversión DIY.

Nota: la nueva BananaPro cuesta €43 solo placa.
OS bananian este y otros están todos disponibles en la aquí.
Los esenciales son:
bananian OS imagen dumped

apt-get update
apt-get upgrade
apt-get install openssh-server nfs-kernel-server nfs-common nginx git-core transmission-daemon samba

cd /usr/local/src
git clone https://github.com/SiCKRAGETV/SickRage.git sickrage
git clone https://github.com/RuudBurger/CouchPotatoServer.git

cat /etc/nginx/nginx.conf
user www-data;
worker_processes 2;
pid /var/run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}

http {
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        include /etc/nginx/mime.types;
        default_type application/octet-stream;
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
        gzip on;
        gzip_disable "msie6";
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}

cat /etc/nginx/conf.d/torrent.conf
server {
        listen 80;
        server_name torrent.bsdchile.cl torrent;
        access_log /var/log/nginx/torrent-access.log;
        location / {
                root /usr/share/transmission/web;
                proxy_pass_header X-Transmission-Session-Id;
                proxy_set_header X-Forwarded-Host $host;
                proxy_set_header X-Forwarded-Server $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://127.0.0.1:9091/transmission/web/;
        }
        # Also Transmission specific
        location /rpc {
                proxy_pass http://127.0.0.1:9091/transmission/rpc;
        }
}

cat /etc/nginx/conf.d/couchpotato.conf
server {
        listen 80;
        server_name movies.bsdchile.cl movies;
        access_log /var/log/nginx/exiled-access.log;
        location /static/ {
                root /usr/local/src/CouchPotatoServer/couchpotato;
        }
        location / {
                proxy_pass http://127.0.0.1:5050;
                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;
        }
}

cat /etc/nginx/conf.d/tv.conf
server {
        listen 80;
        server_name  tv.bsdchile.cl tv;
        location / {
                root /usr/local/src/sickbeard;
                proxy_pass  http://127.0.0.1:8081;
                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;
        }
}

cat /etc/default/couchpotato
# COPY THIS FILE TO /etc/default/couchpotato
# OPTIONS: CP_HOME, CP_USER, CP_DATA, CP_PIDFILE, PYTHON_BIN, CP_OPTS, SSD_OPTS

CP_HOME=/usr/local/src/CouchPotatoServer
CP_USER=www-data
Cambiar owner
chown -R www-data. /var/opt/couchpotato
dns opcional
apt-get install ntfs-3g bind9 bind9utils bind9-host dnsutils