Archivi categoria: linux

Installare deluge bittorrent su Ubuntu con controllo remoto via interfaccia web

Caso tipico: avete, o volete impostare, un server domestico con Ubuntu Linux, che agisca anche da server sempre attivo per il download e upload via bittorrent.
La richiesta di risorse è molto limitata e potete resuscitare un sistema molto vecchio, ad esempio persino un vecchio laptop su cui non volete nemmeno installare l’interfaccia grafica (a patto che abbia un disco sufficientemente capiente per i file che volete scaricare).

L’idea di partenza è avere quindi un server che faccia tutto dietro le quinte, e che sia sicuro.

Questa guida è ispirata ad altre due guide: questa e quest’altra.

Se volete la spiegazione dei vari passaggi, la trovate in fondo all’articolo.

Installato Ubuntu (l’ultima versione, al momento di scrivere, è la 12.04 Precise Pangolin) eseguite i seguenti comandi:

sudo adduser --disabled-password --system --home /home/deluge --gecos "BitTorrent Service" --group deluge
sudo mkdir /home/deluge/Incoming
sudo chown deluge:deluge /home/deluge/Incoming
sudo mkdir /home/deluge/Completed
sudo chown deluge:deluge /home/deluge/Completed
sudo add-apt-repository ppa:deluge-team/ppa
sudo apt-get update
sudo apt-get install deluged deluge-webui

Quindi create il file /etc/init/deluge.conf:

sudo nano /etc/init/deluge.conf

e incollate all’interno il seguente testo:

start on (filesystem and networking) or runlevel [2345]
stop on runlevel [016]
env uid=deluge
env gid=deluge
env umask=000
exec start-stop-daemon -S -c $uid:$gid -k $umask -x /usr/bin/deluged -- -d

per salvare premete Ctrl-X e date l’ok premendo Y o S a seconda che Ubuntu sia in inglese o italiano.

Poi create il file /etc/init/deluge-web.conf:

sudo nano /etc/init/deluge-web.conf

e incollate all’interno il seguente testo:

start on started deluge
stop on stopping deluge
env uid=deluge
env gid=deluge
env umask=027
exec start-stop-daemon -S -c $uid:$gid -k $umask -x /usr/bin/deluge-web

Per avviare deluge è necessario il comando:

sudo start deluge

e per terminarlo:

sudo stop deluge

mentre per riavviarlo (ad esempio dopo modifiche alla configurazione, perché queste ultime abbiano effetto):

sudo restart deluge

L’interfaccia web di deluge si avvia e chiude contemporaneamente al demone, quindi non è necessario intervenire su quest’ultima; raggiungerla è piuttosto banale: se avete un’interfaccia grafica installata sullo stesso server, aprite un browser e dirigetevi all’indirizzo http://localhost:8112 (la password di default è deluge), altrimenti se vi collegate da un altro PC della rete, allora usate http://:8112.

Una volta ottenuto l’accesso all’interfaccia web è consigliabile effettuare alcuni cabiamenti: innanzitutto se vi compare la finestra di connessione al demone, premete il pulsante Connect, quindi dal pannello in alto premete Preferences e passate in rassegna le varie sezioni.

Vorrete probabilmente ridimensionare il numero di connessioni totali (400-500), attivare la crittografia (mettete “Enabled” e “Full stream” nelle varie opzioni e attivate la casellina), impostare correttamente le cartelle di salvataggio dei file (mettete /home/deluge/Incoming per i file in arrivo, e /home/deluge/Completed per i file che sono stati scaricati completamente), nella sezione Interface cambiate la porta di default ad una diversa, e attivate la casella SSL, cambiate la password premendo il pulsante Change sotto alle caselle di testo, e quindi riavviate deluge per attivare i cambiamenti. Se avete attivato SSL e cambiato porta, ad esempio 1234, vi dovrete collegare all’indirizzo https://localhost:1234 (oppure https://:1234), fate attenzione al protocollo, che diventa https con la “s” finale che sta per secure. Il vostro browser vi farà presente che il sito richiede dei certificati, se siete su Firefox cliccate su “Aggiungi eccezione” e salvate il certificato, oppure seguite gli opportuni passaggi sugli altri browser.

Cosa fa questa guida esattamente?

I vari comandi all’inizio servono a creare un utente riservato a deluge (invisibile dalla schermata di login, si potrebbe dire che è un account “di servizio”), in modo che una eventuale compromissione dell’account da remoto tramite una falla di sicurezza del demone deluge non metta a rischio l’intero server; viene creato un account chiamato deluge appartenente al gruppo deluge con cartella home uguale indovinate un po’ a /home/deluge nella quale verranno poi create le cartelle Incoming e Completed destinate rispettivamente ai file in fase di download ed allo spostamento di questi ultimi una volta completati. Il comando chown serve a attribuire all’utente deluge la proprietà delle suddette cartelle, siccome le creiamo come utente root.
Nella creazione dello script di avvio delige.conf il valore 000 assegnato al parametro umask serve a permettere l’accesso in lettura e scrittura alle cartelle di scaricamento di deluge da parte degli altri account del server, in modo che ad esempio non sia necessario impostare mirabolanti configurazioni multiutente per accedere via Samba alle cartelle del server da un pc Windows.
Se avete installato Samba, piuttosto, potete molto più facilmente accedere al server deluge usando, tramite rete locale, il nome del server. Se ad esempio l’hostname della macchina Ubuntu è pincopallo, una volta che avete impostato il WORKGROUP in /etc/samba/smb.conf ad un nome uguale al workgroup del vostro PC Windows, dal vostro browser preferito potete digitare semplicemente https://pincopallo:1234 (se vogliamo seguire l’esempio precedente).

Estrarre una stringa tra due chiavi in un testo con uno script shell bash

L’altro giorno, da totale incompetente, stavo scrivendo uno script in bash per processare una pagina HTML, cercare un URL al suo interno, e scaricare il contenuto di quell’URL, in maniera ricorsiva per una serie di pagine; l’avevo già compilato in linguaggio AutoHotKey, tuttavia il mio PC con Windows non è sempre acceso, mentre il mio server domestico linux sì, quindi ho deciso che sarebbe stato opportuno imparare un po’ di linguaggio bash per rendere la procedura più efficiente.

In questo script devo estrarre un segmento di stringa contenuto tra due parole chiavi note, o “token” in inglese, per ottenere l’URL di cui ho bisogno; in AutoHotKey salvavo la posizione di entrambe le parole chiavi, quindi operavo una istruzione di substring tra questi due offset, e stavo cercando di far lo stesso in bash, siccome stavo pedissequamente traducendo lo script, piuttosto semplice, da un linguaggio all’altro.

Con mia sorpresa, questa non è una cosa che si può fare in bash, siccome l’unica operazione di ricerca di una stringa all’interno di un’altra stringa in realtà cerca il primo carattere della parola chiave; quindi, per esempio, se si cerca “mio” all’interno di “La melliflua pelliccia del mio gatto è marrone”, si ottiene 3, e non 27 come ci si aspetterebbe, perché come dicevo expr index "$string" $substring restituisce solo la posizione del primo carattere di substring, quindi la prima posizione di “m” nella stringa.

In realtà, a me non serviva conoscere la posizione delle parole chiavi, purché riuscissi ad estrarre la stringa tra loro due, quindi ogni operazione che servisse a questo scopo andava bene; purtroppo me ne sono reso conto solo dopo aver buttato un’ora di tempo a cercare la soluzione, quindi pubblico i miei risultati per far risparmiare tempo a chi dovesse finire su questa pagina.

Fondamentalmente consiste nel tagliare dalla stringa tutto quello che precede la prima parola chiave (inclusa la prima chiave), e quindi tagliare dalla stringa così ottenuta tutto quello che segue la seconda patola chiave (seconda chiave inclusa):

#dichiarazione delle variabili
testo="lungotestodacontrollare"
primachiave="qualcosa"
secondachiave="qualcosaltro"

#elaborazione vera e propria
stringacentrale=${testo#*$primachiave}
stringacentrale=${stringacentrale%%$secondachiave*}

Questo restituisce $stringacentrale come la stringa contenuta tra la prima occorrenza di $primachiave (simbolo # singolo), e la prima occorrenza di $secondachiave (doppio simbolo %, che indica l’occorrenza più distante dalla fine della stringa).

  This article has been Digiproved

Tasto windows + Ubuntu, wow! Scorciatoie da tastiera in Maverick Meerkat

Forse non sto scrivendo nulla di nuovo, ed in questo caso chiedo venia. Anzi no.

Questo è il mio sito e ci scrivo quello che mi pare.

Comunque ho appena completato l’aggiornamento a Maverick Meerkat sul mio portatile, e stavo cercando di tornare al desktop con Ctrl-Alt-D, ma non funzionava. Ho martellato su quei tasti almeno una decina di volte per accertarmene, ma niente. Fino a quando il mio pensiero laterale non mi ha suggerito di usare il tasto Windows+D (la prima cosa che ho provato quando iniziai ad usare Ubuntu un paio di anni fa), e pensa un po’, ha funzionato.

Quindi mi sono messo a testare tutte le combinazioni possibili col tasto WinKey, ed ecco quello che ho trovato:

WinKey+W, WinKey+A

Mostra tutte le finestre in una griglia dinamica

WinKey+D

Torna al desktop

WinKey+Tab

Una versione molto migliorata di Alt-Tab

ma ecco le scoperte veramente interessanti:

WinKey+RotellinaSu/Giù

Zoom avanti e indietro dell’intero schermo, spostare il puntatore sposta anche il quadro, e…

WinKey+ClickRotellina

Ingrandisce al massimo lo schermo

WinKey+M, WinKey+N

Colori negativi! Inutile per gli usi pratici, comunque con N si rende negativa solo la finestra attualmente aperta, mentre con M vengono invertiti tutti i colori di tutto lo schermo.

  This article has been Digiproved

Starcraft con Wine si blocca e va in crash all’improvviso

Dopo aver giocato con Starcraft II sul mio pc con Windows 7, ieri stavo provando a far funzionare il primo Starcraft su Ubuntu Lucid con Wine; il sito di wine-hq riporta il gioco come perfettamente funzionante, ed in effetti dopo averlo installato, mi è bastato aggiungere una patch per avviare il gioco senza avere il CD montato, ma sia che provassi a giocare a Starcraft originale sia che provassi con l’espansione Brood War, finiva per bloccarsi poco dopo l’avvio, o nei menù o durante i primissimi minuti di gioco; il video ed il cursore si interrompevano completamente, anche se l’audio sembrava continuare a funzionare, infatti il suono era udibile anche dopo l’interruzione.

Ho provato a modificare di tutto nella configurazione di Wine, attivando e disattivando la visualizzazione in finestra col virtual desktop, l’accelerazione hardware, ed in generale tutte le caselle nella sezione “Graphics”, ma non ho risolto nulla, neppure impostando il driver audio.

Fino a quando non ho provato ad aggiungere delle chiavi di registro che erano riportate sulla pagina Starcraft del sito Wine, ma che ufficialmente servivano ad altro che non risolvere il mio problema.

Ad ogni modo, dopo aver aggiunto quelle chiavi, sono riuscito a completare il primo livello, e fin quasi tutto il secondo (interrompo per il pasto) senza problemi ad eccezione di occasionali rallentamenti.

Avviate  wine regedit e aggiungete i seguenti valori nella chiave:

HKEY_CURRENT_USER > Software > Wine > Direct3D

I valori sono due stringhe REG_SZ:

DirectDrawRenderer = opengl
RenderTargetLockMode = readtex

Dovrebbe funzionare anche per voi.

  This article has been Digiproved

Attivare la risoluzione XGA 1024×768 su un Compaq Presario 1800 in linux Ubuntu

[4.7.2009] Oggi ho installato la distribuzione di Linux Ubuntu Jaunty Jackalope su un vecchissimo portatile Compaq Presario 1800, per trasformarlo in una piccola postazione internet casalinga. Ciò che non sopporto di questo portatile è il fatto che utilizzi forzatamente UMA (Unified Memory Architecture) per la condivisione della RAM di sistema con la scheda grafica (una ATI Rage Mobility M3, che dalle specifiche avrebbe già 8MB di memoria video dedicata, molto più che sufficienti per qualunque compito 2D), in altre parole 64MB dei 256MB fisicamente installati sono sprecati, letteralmente, per espandere una memoria video che non verrà mai utilizzata, lasciando liberi solo 192MB di RAM che costringono ad una continua attività di swap. Ad ogni modo, quello che mi ha veramente deluso alla fine è stata l’apparente impossibilità di utilizzare la risoluzione XGA di 1024×768, nativa del display LCD, per qualche limitazione della configurazione di default, e non sono riuscito a risolvere il problema indipendentemente dalle righe che aggiungevo al file xorg.conf; non so se avete mai provato a navigare su internet alla risoluzione di 800×600 negli ultimi anni.

Comunque, dopo una mezza giornata di ricerche a vuoto, ho per puro caso trovato una pagina di un bug report su launchpad, che riguardava un altro tipo di problema, ma la cui versione di xorg.conf risolveva anche il problema della risoluzione, così per il beneficio della posterità l’ho riportata su questo sito in una pagina dedicata, molto più semplice da trovare con una ricerca di Google.

Di seguito trovate il codice che dovete incollare nel file /etc/X11/xorg.conf sovrascrivendo il contenuto precedente. Se non avete idea di come si fa (presumo che stiate usando la versione “normale” di Ubuntu, con desktop Gnome), premete Alt-F2 dal desktop, e nel dialogo che appare digitate (rispettando maiuscole/minuscole):

sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup

per creare una copia di backup del file (vi verrà chiesta la vostra password di sistema), siccome non si sa mai, e poi di nuovo Alt-F2 e:

sudo gedit /etc/X11/xorg.conf

apparirà un editor di testo nel quale non dovrete fare altro che cancellare l’intero testo, ed incollare quello presente su questa pagina.

# /etc/X11/xorg.conf (xorg X Window System server configuration file)
#
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
#
# Edit this file with caution, and see the /etc/X11/xorg.conf manual page.
# (Type "man /etc/X11/xorg.conf" at the shell prompt.)
#
# This file is automatically updated on xserver-xorg package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xorg
# package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following commands:
#
#   cp /etc/X11/xorg.conf /etc/X11/xorg.conf.custom
#   sudo sh -c 'md5sum /etc/X11/xorg.conf >/var/lib/xfree86/xorg.conf.md5sum'
#   sudo dpkg-reconfigure xserver-xorg

Section "Files"
    RgbPath		"/usr/lib/X11/rgb.txt"
	FontPath	"unix/:7100"			# local font server
	# if the local font server has problems, we can fall back on these
	FontPath	"/usr/lib/X11/fonts/misc"
	FontPath	"/usr/lib/X11/fonts/cyrillic"
	FontPath	"/usr/lib/X11/fonts/100dpi/:unscaled"
	FontPath	"/usr/lib/X11/fonts/75dpi/:unscaled"
	FontPath	"/usr/lib/X11/fonts/Type1"
	FontPath	"/usr/lib/X11/fonts/CID"
	FontPath	"/usr/lib/X11/fonts/100dpi"
	FontPath	"/usr/lib/X11/fonts/75dpi"
        # paths to defoma fonts
	FontPath	"/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
	FontPath	"/var/lib/defoma/x-ttcidfont-conf.d/dirs/CID"
EndSection

Section "Module"
    Load	"dbe"
    SubSection  "extmod"
      Option    "omit xorg-dga"   # don't initialise the DGA extension
    EndSubSection
	Load	"freetype"
	Load	"glx"
    Load	"type1"
    Load	"dri"
EndSection

Section "InputDevice"
	Identifier	"Generic Keyboard"
	Driver		"keyboard"
	Option		"CoreKeyboard"
	Option		"XkbRules"	"xorg"
	Option		"XkbModel"	"pc102"
	Option		"XkbLayout"	"it"
EndSection

Section "InputDevice"
	Identifier	"Configured Mouse"
	Driver		"mouse"
	Option		"CorePointer"
	Option		"Device"		"/dev/input/mice"
	Option		"Protocol"		"ImPS/2"
	Option		"Emulate3Buttons"	"true"
	Option		"ZAxisMapping"		"4 5"
EndSection
Section "InputDevice"
        Identifier      "Synaptics Touchpad"
        Driver          "synaptics"
        Option          "SendCoreEvents"        "true"
        Option          "Device"                "/dev/psaux"
        Option          "Protocol"              "auto-dev"
        Option		"HorizScrollDelta"	"0"
EndSection

Section "Device"
    Identifier  "ati"
    Driver      "ati"
EndSection

Section "Monitor"
    Identifier  "Generic Monitor"
    HorizSync   31.5 - 48.5
    VertRefresh 50-70
EndSection

Section "Device"
    Identifier	"Standard VGA"
    VendorName	"Unknown"
    BoardName	"Unknown"
    Driver     "vga"
EndSection

Section "Screen"
    Identifier  "Default Screen"
    Device      "ati"
	Monitor		"Generic Monitor"
	DefaultDepth	24
	SubSection "Display"
		Depth		1
		Modes		"1024x768" "800x600" "640x480"
	EndSubSection
	SubSection "Display"
		Depth		4
		Modes		"1024x768" "800x600" "640x480"
	EndSubSection
	SubSection "Display"
		Depth		8
		Modes		"1024x768" "800x600" "640x480"
	EndSubSection
	SubSection "Display"
		Depth		15
		Modes		"1024x768" "800x600" "640x480"
	EndSubSection
	SubSection "Display"
		Depth		16
		Modes		"1024x768" "800x600" "640x480"
	EndSubSection
	SubSection "Display"
		Depth		24
		Modes		"1024x768" "800x600" "640x480"
	EndSubSection
EndSection

Section "ServerLayout"
	Identifier	"Default Layout"
	Screen		"Default Screen"
	InputDevice	"Generic Keyboard"
	InputDevice	"Configured Mouse"
	InputDevice	"Synaptics Touchpad"
EndSection