One big advantage of Raspberry Pi is its low power consumption. I can power on it 7x24 and remote it at anytime (of course, assumed your router is also on). SSH from internet to your Pi is simple, by just forwarding port 22 or making the Pi is the default DMZ. However, some places only allows you to visit port 80 or 443, or you have to connect to the internal via a proxy server, which also blocks every ports but 80/443.
Since port 443 is an exception, why don't we set the SSH service to listen to it? Just modify /etc/ssh/sshd_config and add a line "Port 80" or "Port 443". It does work, but wait, what about if the Pi also serves as a Web Server with SSL enabled? If you choose 443 to serve SSH, then you can't have your web server to use SSL at 443. So how to solve this situation? Here is one of the possible approach.
Contains technical document about Unix/Linux, Java, Python, Raspberry Pi and other IT related topics. Not a full tutorial but as a quick reference guide
Thursday, November 29, 2012
Monday, November 26, 2012
Create a Soalris 8 zone (32bit) to a container
Last time I had successfully created a flar image from an old Solaris 8 server (ref). Now I have to setup a zone of Solaris 10 container and install the image into it. The overall idea is clear and easy. Normally just create the zone configuration, and install it from a "flar" image.
1. Create zone configuration
root@sol10 # zonecfg -z z_sol8
z_sol8: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:z_sol8> create -t SUNWsolaris8
zonecfg:z_sol8> set zonepath=/pool/zone/sol8
zonecfg:z_sol8> set autoboot=false
zonecfg:z_sol8> set ip-type=shared
zonecfg:z_sol8> add net
zonecfg:z_sol8:net> set address=192.168.123.123
zonecfg:z_sol8:net> set physical=nxge0
zonecfg:z_sol8:net> end
zonecfg:z_sol8> verify
zonecfg:z_sol8> commit
zonecfg:z_sol8> exit
Next install the zone from the flar image:
1. Create zone configuration
root@sol10 # zonecfg -z z_sol8
z_sol8: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:z_sol8> create -t SUNWsolaris8
zonecfg:z_sol8> set zonepath=/pool/zone/sol8
zonecfg:z_sol8> set autoboot=false
zonecfg:z_sol8> set ip-type=shared
zonecfg:z_sol8> add net
zonecfg:z_sol8:net> set address=192.168.123.123
zonecfg:z_sol8:net> set physical=nxge0
zonecfg:z_sol8:net> end
zonecfg:z_sol8> verify
zonecfg:z_sol8> commit
zonecfg:z_sol8> exit
Next install the zone from the flar image:
Thursday, November 22, 2012
Create a Wiki (Moinmoin) on Raspberry
Moinmoin is a very good Wiki application without using a DB. It is very fast, with easy syntax and I recommend to use it as a quick knowledge base for home or SME usage.
This
guide is to install moinmoin on a Raspberry Pi and make it accessible
via Lighttpd (using fastcgi). It is assumed a virtual host is available
for this wiki (eg. http://wiki.example.com )
The
moinmoin program will be installed at /usr/local/moinmoin_engine while
the instance will be installed at another place (eg.
/usr/local/moinmoin_instance1. )
- Download the latest source (1.9.5 as of this moment) at http://moinmo.in
- extract the tar ball to a temp place (eg. /tmp)
- under the source path, run
python setup.py install --prefix=/usr/local/moinmoin_engine
- mkdir the instance path
mkdir /usr/local/moinmoin_instance1
- copy the following directories from "engine" to "instance", and change the ownership to the lighttpd user:
cp -r /usr/local/moinmoin_engine/share/moin/data /usr/local/moinmoin_instance1 cp -r /usr/local/moinmoin_engine/share/moin/underlay /usr/local/moinmoin_instance1 cp /usr/local/moinmoin_engine/share/moin/config/wikiconfig.py /usr/local/moinmoin_instance1 cp /usr/local/moinmoin_engine/share/moin/server/moin.fcgi /usr/local/moinmoin_instance1 chown -R www-data:www-data /usr/local/moinmoin_instance1
- modify the moin.fcgi, locate the following lines:
# a1) Path of the directory where the MoinMoin code package is located. # Needed if you installed with --prefix=PREFIX or you didn't use setup.py. #sys.path.insert(0, 'PREFIX/lib/python2.3/site-packages') sys.path.insert(0, '/usr/local/moinmoin_engine/lib/python2.7/site-packages') # a2) Path of the directory where wikiconfig.py / farmconfig.py is located. # See wiki/config/... for some sample config files. #sys.path.insert(0, '/path/to/wikiconfigdir') sys.path.insert(0, '/usr/local/moinmoin_instance1') ... ## this works around a bug in flup's CGI autodetection (as of flup 1.0.1): #os.environ['FCGI_FORCE_CGI'] = 'Y' # 'Y' for (slow) CGI, 'N' for FCGI os.environ['FCGI_FORCE_CGI'] = 'N' ... # Is fixing the script name needed? # Use None if your url looks like http://domain/wiki/moin.fcgi # Use '' if you use rewriting to run at http://domain/ # Use '/mywiki' if you use rewriting to run at http://domain/mywiki/ #fix_script_name = None # <-- adapt="adapt" as="as" class="anchor" here="here" id="line-24" needed="needed" span="span">-->
$HTTP["host"] =~ "wiki\.example\.com" { fastcgi.server += ( "/" => (( "socket" => "/tmp/moin.socket", "min-procs" => 1, "max-procs" => 2, "check-local" => "disable", "bin-path" => "/usr/local/moinmoin_instance1/moin.fcgi", "fix-root-scriptname" => "enable" )) ) alias.url += ( "/moin_static195" => "/usr/local/moinmoin_engine/lib/python2.7/site-packages/MoinMoin/web/static/htdocs") }
For more information about user and administration guide, please refer the HelpContents.
PS: So here is the wiki running on my Raspberry Pi: http://wiki.jessed121.us/ . You can walk around and feel it.
Install Lighttpd, PHP5, MySQL on Raspberry Pi
To run a 'typical' server on Raspberry Pi, a Web server is necessary. If possible, it can run application (by PHP5, Java, Perl, Python, etc...). Apache may be the most famous web server, but here I choose Lighttpd is it is not as big as Apache. In fact, a lightweight server is more suitable. Also, it will use FastCGI to run PHP and Python, I will list out what applications/ services to be run on this server.
Finally Mysql is also a popular DB. At the beginning I don't want to install it as there may be a huge overhead on the Pi. In fact, some embedded DB such as sqlite would be a better option. However, there are still applications which only official support Mysql, so at last I decide to install it and hopefully can fine-tune it later.
So here is the steps...
Install Lighttpd and PHP5
- Login as root
- create the user and group "www-data"
- Install the following packages:
- apt-get update (get the latest repository)
- apt-get install lighttpd php5-cgi
After installation, check the /etc/lighttpd/lighttpd.conf
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
it
will includes setting under /etc/lighttpd/conf-enabled. Make sure there
is something like "fastcgi" and "fastcgi-php". (The settings can be
fine tuned afterwards)
# ls /etc/lighttpd/conf-enabled/ 10-fastcgi.conf 15-fastcgi-php.conf
Install Mysql
just install the packages "mysql-server", "php5-mysql"
label
Lighttpd,
Linux,
pi,
python,
Raspberry Pi
Failed to exclude directories when running flarcreate on Solaris 8
When I tried to prepare a flash archive (flar) from an old Solaris 8 physical machine, I wanted to exclude two directories (say, /one and /two). I checked the syntax from web (and the man page), it should be:
flarcreate -n -c -S -R / -x /one -x /two
where -c is enable compression, -S is ignore size stats, -R is the root path
However, the directories /one and /two are still in the flar !
After doing some investigation and research from the web, it is believed that there is a bug of this script of the current version. Since it's too old and I don't want to apply any patch on it, I'd rather modify the script a bit in order fulfill my requirement:
flarcreate -n
where -c is enable compression, -S is ignore size stats, -R is the root path
However, the directories /one and /two are still in the flar !
After doing some investigation and research from the web, it is believed that there is a bug of this script of the current version. Since it's too old and I don't want to apply any patch on it, I'd rather modify the script a bit in order fulfill my requirement:
Tuesday, November 20, 2012
Weather information from openweathermap.org JSON API by Python
The openweathermap.org offers JSON API to query weather information around the world. It is not difficult to use python to call the API, parse the JSON and gather the information.
Since all the request are from web, it'd better to prepare a simple function to fetch the HTML/JSON from the site:
import urllib2, json
def fetchHTML(url):
req = urllib2.Request(url)
response=urllib2.urlopen(req)
return response.read()
Remember it is just for a quick and dirty approach. In real case we should handle exceptions (such as URL unreachable, network not found, etc)
Now we are ready to call the API. First of all we need to know the "id" of a City. http://openweathermap.org/data/2.1/find/name?q=<CITY>
Since all the request are from web, it'd better to prepare a simple function to fetch the HTML/JSON from the site:
import urllib2, json
def fetchHTML(url):
req = urllib2.Request(url)
response=urllib2.urlopen(req)
return response.read()
Remember it is just for a quick and dirty approach. In real case we should handle exceptions (such as URL unreachable, network not found, etc)
Now we are ready to call the API. First of all we need to know the "id" of a City. http://openweathermap.org/data/2.1/find/name?q=<CITY>
Friday, November 16, 2012
My first Raspberry Pi
I bought my Raspberry Pi (with a transparent case) 2 weeks ago. Since its tiny size and low power consumption, I decided to run it in 7x24 as a light weight server.
When the Pi was just delivered, my Dad wondered its ability. Don't under estimate the configuration of it. I called it a "server" means it really fulfill my expectation.
Once I recieved it, what have I done to it:
When the Pi was just delivered, my Dad wondered its ability. Don't under estimate the configuration of it. I called it a "server" means it really fulfill my expectation.
Once I recieved it, what have I done to it:
label
Linux,
pi,
Raspberry Pi
Subscribe to:
Posts (Atom)