linux
All in one webserver from the ground up. A Virtualized Debian How-to
2< This is the only image you get, as this is going to be a very text centered post.
I figured after virtualizing my entire network a few weeks ago and while learning alot, I also rebuilt several machines, and documented the rebuild. So from those notes, I’m going to finally get around to how to securely host and build a website, from the ground up.
We’ll start with a bare bones debian 6 install (this guide will work for ubuntu server 12.04 as well) on a virtual host.
I’m also using this guide as a walk-through for myself, so I’ve included the instructions on getting vmware-tools installed, if you’re doing this on bare metal, skip that part.
Most of this should be done as the root user. In ubuntu, to gain root use the command:
|
1 |
sudo su |
Also to get the basics out of the way I will be using nano as my text editor, to save in nano use the keys
|
1 |
Ctrl+o |
or to save and exit use the command
|
1 |
Ctrl+x |
I will assume you know how to save a file from this point forward.
To get started let’s get our environment setup, it makes life easier in the end.
|
1 2 |
cd ~ nano .bashrc |
Uncomment the lines in the root .bashrc file
|
1 2 3 4 5 6 7 8 9 |
export LS-OPTIONS=' --color=auto' eval "'dircolors'" alias ls='ls $LS-OPTIONS' alias ll='ls $LS_OPTIONS -lha' * < I added the letters 'ha' to this, I just prefer it YMMV* alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' alias nano='nano -c' alias arestart='/etc/init.d/apache2 restart' |
Save and exit * I won’t be telling you this again, if the files done being edited, save and close it!
*
Force your current session to use the new .bashrc file.
|
1 |
source .bashrc |
You should now have colors when displaying the contents of your directories and have a shortcut to restart apache once we have it installed.
But before we install the web server let’s finish getting prepped. (ubuntu users, don’t add the netselect-apt in the next command, it’s not available in your repos.)
|
1 |
apt-get install sudo most ntp ntpdate unzip denyhosts htop curl clamav netselect-apt screen byobu build-essential linux-headers-`uname -r` psmisc |
If your curious on how any of these programs work in more detail, you can always turn to the “man” command. I do often, so I like my man pages in color. If you do as well, use this, and select the option that references “most” (usually 3 in my experience)
|
1 |
update-alternatives --config pager |
Now let’s create a normal user (ubuntu users will already have a normal user, and can skip this part)
*replace <yourname> with Your name.*
|
1 |
adduser |
and then answer the questions it asks as best you want.
Now let’s also give this user the ability to manage this server using sudo.
|
1 |
nano /etc/sudoers |
Copy the syntax for the root user replacing root with your username from above.
Now Debian users with netselect installed, use this list of commands:
|
1 2 3 4 |
netselect-apt -n squeeze cp /etc/apt/source.list /etc/apt/source.list.bak cp sources.list /etc/apt/source.list nano /etc/apt/source.list #*Uncomment the line's you want, probably wanting all 3 *# |
then
|
1 |
apt-get update |
Now we can start installing the vmware-tools. First click the option on your vmware console to install tools or guest additions. This will insert a virtual cd-rom in your virtual machine. I know right!?! How deep DOES the rabbit hole go?! Anyways.
|
1 2 3 4 5 6 7 8 9 |
mount /dev/cdrom /media/cdrom cd /tmp/ cp /media/cdrom/VMWareTools*.tar.gz . tar xvf VMwareTools*.tar.gz cd vmware-tools-distrib ./vmware-install.pl #* Answer the questions *# umount /media/cdrom reboot |
Welcome back
Login as your normal user from here on out and gain root using “sudo su“. It’s just good practice.
|
1 2 |
sudo su nano /etc/network/interfaces |
Comment out the default settings for the eth0 interface as we want a static IP address for a server and add something like this (changing the values as needed for your network of course!)
|
1 2 3 4 5 6 7 8 9 |
auto eth0 iface eth0 inet static address 192.168.0.100 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.1 dns-nameservers 192.168.0.111 8.8.8.8 dns-search foo.org bar.com |
Then restart your network.
|
1 |
/etc/init.d/networking restart |
You will probably get disconnected if you’re using ssh to connect. This is to be expected and you should now be able to ssh to the IP address you just set.
Now let’s set the hostname of the server.
|
1 2 3 4 |
nano /etc/hosts #* Should look something like this *# 127.0.0.1 localhost.localdomain localhost 192.168.0.100 server1.example.com server1 |
And append the same name to the hostname file and restart the service.
|
1 2 |
echo server1.example.com > /etc/hostname /etc/init.d/hostname.sh start |
Being ssh is probably going to be left open, let’s start to automate banning of brute force attempts for our ssh login (moving ssh to a non standard port is also a good idea!)
|
1 |
nano /etc/denyhosts.conf |
Setup the times and purge options as you see fit and then restart denyhosts.
|
1 |
/etc/init.d/denyhosts restart |
And let’s FINALLY get to installing that webserver like I promised!
|
1 |
apt-get install apache2 |
That’s it! your webserver’s installed! Now let’s configure it!
|
1 2 3 4 |
a2enmod rewrite a2enmod ssl a2enmod include /etc/init.d/apache2 restart |
Now let’s build the config for the website you’ll be hosting.
|
1 |
cd /etc/apache2/sites-available/ |
|
1 2 |
touch example.com nano example.com |
There are alot of options you can define in here, but to get you started make sure you have the DocumentRoot, ErrorLog and CustomLog defined in this config file.
|
1 2 3 4 5 6 7 |
<VirtualHost *:80> ServerAdmin webmaster@domain.com ServerName domain.com ServerAlias www.domain.com DocumentRoot /var/www/example.com/public_html/ ErrorLog /var/log/example.com/logs/error.log CustomLog /var/log/example.com/logs/access.log combined |
Using our example above, let’s create those directories.
|
1 2 |
mkdir -p /var/www/example.com/public_html mkdir -p /var/log/example.com/logs |
And bring this site online, and remove the default site
|
1 2 |
a2ensite domain.com a2dissite default |
Your website should now be online! w00t!
Let’s get the rest going so we can get something more dynamic then html websites.
|
1 |
apt-get install mysql-server |
Enter in a SQL root password when prompted. (SHOULDNT BE THE SAME AS YOUR ROOT PASSWORD!!!!!!!!!!!!!)
And let’s harden our SQL environment as this is not a developer server.
|
1 |
mysql_secure_installation |
You don’t need to change your SQL root password if you set a good one above. if it’s the same as your normal root user’s password, change it ffs! Answer yes to the rest of the questions.
Now this next line will install php. Lot’s of php. This command should be entered in as one single line!
|
1 |
apt-get install php-pear php5-suhosin php5-mysql libapache2-mod-php5 libapache2-mod-ruby libapache2-mod-python php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-mysql php5-pspell php5-recode php5-intl php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl memcached |
These settings will get you off to a good start, but more tuning can be done. Search for the following and make the needed changes in this file. (search in nano using “Ctrl+w” and typing in the keyword.
|
1 |
nano /etc/php5/apache2/php.ini |
|
1 2 3 4 5 6 7 |
max_execution_time = 30 memory_limit = 64M error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR display_errors = Off log_errors = On error_log = /var/log/php.log register_globals = Off |
|
1 |
/etc/init.d/apache2 restart |
(You do remember you can type in ^ arestart ^ instead of that line throughout this gude if you used my .bashrc edits, right?
)
And of course a web-gui to your SQL server is super handy, so let’s add that as well.
|
1 |
apt-get install phpmyadmin |
Select apache2 when asked, and choose yes to create the default database. Enter in the SQL root password, and then leave the next password prompt blank to have a random one generated, as you won’t need it.
Almost done!
Let’s set the permissions on the folders we created.
|
1 2 |
chown -R www-data:www-data /var/www/example.com/public_html chmod 774 /var/www/example.com/public_html |
And your set!
Let’s go one step further and setup a firewall to finish it up, just in case you’re not behind a seperate firewall (Check out untangle if you’re looking for a good one!)
|
1 |
apt-get install ufw |
This will install the “Uncomplicated Firewall” that works with iptables, and makes life alot easier!
For more help with ufw settings check out this guys site, it’s got a pretty good rundown and examples.
|
1 2 3 4 5 6 7 8 |
ufw logging on ufw default deny ufw allow ssh ufw allow www ufw allow https ufw enable #* Answer yes when it asks to proceed *# ufw status |
You should now get a result that says the following:
|
1 2 3 4 5 6 7 |
Status: active To Action From -- ------ ---- 22 ALLOW Anywhere 80 ALLOW Anywhere 443 ALLOW Anywhere |
Of course this is the basic setup, you can further limit ssh to local connections only etc.
And your website is ready for stage 2, Content! You now have a memcached apache http server with php5 and mysql ready for the world wide web! Good luck!
(The stage 2 post will come soon!)
** EDIT **
After a few month’s with this setup I’ve started getting several mail objects that say:
This is a RAID status update from mpt-statusd.
The mpt-status program reports that one of the RAIDs changed state:Report from /etc/init.d/mpt-statusd on virtual-proxy
Being it’s a virtual machine there’s no raid state to worry about (at least not from the guest side…) so unless you have a reason for it, just stop the mpt-status daemon. Do the following:
|
1 |
sudo /etc/init.d/mpt-statusd stop |
to stop it from it’s currently running state, and then
|
1 |
sudo update-rc.d-insserv -f mpt-statusd remove |
which will remove it from several startup scripts that run on boot.
That’s it, no more mail from that problem
Hope your install is running as smoothly as mine has been!
Stream My Pi
2Alright, so most of my friends already know, I’ve recieved one of my Raspberry Pi computers!
w00t!
So being my old love is streaming radio, I figured why not get this little guy pushing out some tunes for me!
MPD To the rescue!
Now I did a post for Ubuntu 10.04 a while ago where I had custom compiled a .deb file that included mp3 support, however the new version of MPD for the pi has it already built in! Double sweet!
So here’s how to get it started.
First install a few apps. I personally prefer ncmpcpp as my local client to control my MPD stream from the cli. And of course you’ll need to install MPD.
|
1 |
sudo apt-get update ; sudo apt-get install mpd ncmpcpp |
Type in “Y” when it asks if you would like to install the dependencies as well, let it run and install your requested apps.
Shucks, you’re already half way done!
Now you just need to configure your server (mpd) and client (ncmpcpp) to cut down on overhead I’ll just be using the built in httpd stream as well as the alsa mixer, however the config files are much more built out with better examples then they had on my last post, so configuring them should be quite simple these days.
In order to get MPD working as your local user “pi” in this case, we’ll first need to create some directories and files. Enter in the following commands one at a time from the pi user’s home directory.
|
1 2 3 4 5 |
mkdir -p .mpd/db cd .mpd touch state pid cd db touch cache sticker.sql |
That will create the “state” and “pid” file in your .mpd folder and the “cache” and “sticker.sql” files in your .mpd/db folder.
Now let’s backup the original mpd.conf file and then edit the original file.
|
1 2 |
sudo cp /etc/mpd.conf /etc/mpd.conf.org sudo nano /etc/mpd.conf |
You can copy it straight up if you like, as your username is most likely “pi” as well. I’ve set my default music folder to “/home/pi/Music” and Playlists to “/home/pi/Playlists” if you don’t have these directories either, go ahead and make them with the mkdir command, I’ll wait.
Alright, here’s my /etc/mpd.conf file (click it to expand, it’s kinda long):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 |
# An example configuration file for MPD # See the mpd.conf man page for a more detailed description of each parameter. # Files and directories ####################################################### # # This setting controls the top directory which MPD will search to discover the # available audio files and add them to the daemon's online database. This # setting defaults to the XDG directory, otherwise the music directory will be # be disabled and audio files will only be accepted over ipc socket (using # file:// protocol) or streaming files over an accepted protocol. # music_directory "/home/pi/Music" # # This setting sets the MPD internal playlist directory. The purpose of this # directory is storage for playlists created by MPD. The server will use # playlist files not created by the server but only if they are in the MPD # format. This setting defaults to playlist saving being disabled. # playlist_directory "/home/pi/Playlists" # # This setting sets the location of the MPD database. This file is used to # load the database at server start up and store the database while the # server is not up. This setting defaults to disabled which will allow # MPD to accept files over ipc socket (using file:// protocol) or streaming # files over an accepted protocol. # db_file "/home/pi/.mpd/db/cache" # # These settings are the locations for the daemon log files for the daemon. # These logs are great for troubleshooting, depending on your log_level # settings. # # The special value "syslog" makes MPD use the local syslog daemon. This # setting defaults to logging to syslog, otherwise logging is disabled. # log_file "/var/log/mpd/mpd.log" # # This setting sets the location of the file which stores the process ID # for use of mpd --kill and some init scripts. This setting is disabled by # default and the pid file will not be stored. # pid_file "/home/pi/.mpd/pid" # # This setting sets the location of the file which contains information about # most variables to get MPD back into the same general shape it was in before # it was brought down. This setting is disabled by default and the server # state will be reset on server start up. # state_file "/home/pi/.mpd/state" # # The location of the sticker database. This is a database which # manages dynamic information attached to songs. # sticker_file "/home/pi/.mpd/db/sticker.sql" # ############################################################################### # General music daemon options ################################################ # # This setting specifies the user that MPD will run as. MPD should never run as # root and you may use this setting to make MPD change its user ID after # initialization. This setting is disabled by default and MPD is run as the # current user. # user "pi" # # This setting specifies the group that MPD will run as. If not specified # primary group of user specified with "user" setting will be used (if set). # This is useful if MPD needs to be a member of group such as "audio" to # have permission to use sound card. # #group "nogroup" # # This setting sets the address for the daemon to listen on. Careful attention # should be paid if this is assigned to anything other then the default, any. # This setting can deny access to control of the daemon. Choose any if you want # to have mpd listen on every address # # For network #bind_to_address "localhost" bind_to_address "any" # # And for Unix Socket #bind_to_address "/var/run/mpd/socket" # # This setting is the TCP port that is desired for the daemon to get assigned # to. # port "6666" # # This setting controls the type of information which is logged. Available # setting arguments are "default", "secure" or "verbose". The "verbose" setting # argument is recommended for troubleshooting, though can quickly stretch # available resources on limited hardware storage. # #log_level "default" # # If you have a problem with your MP3s ending abruptly it is recommended that # you set this argument to "no" to attempt to fix the problem. If this solves # the problem, it is highly recommended to fix the MP3 files with vbrfix # (available as vbrfix in the debian archive), at which # point gapless MP3 playback can be enabled. # gapless_mp3_playback "yes" # # This setting enables MPD to create playlists in a format usable by other # music players. # #save_absolute_paths_in_playlists "no" # # This setting defines a list of tag types that will be extracted during the # audio file discovery process. Optionally, 'comment' can be added to this # list. # #metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc" # # This setting enables automatic update of MPD's database when files in # music_directory are changed. # auto_update "yes" # # Limit the depth of the directories being watched, 0 means only watch # the music directory itself. There is no limit by default. # auto_update_depth "3" # ############################################################################### # Symbolic link behavior ###################################################### # # If this setting is set to "yes", MPD will discover audio files by following # symbolic links outside of the configured music_directory. # #follow_outside_symlinks "yes" # # If this setting is set to "yes", MPD will discover audio files by following # symbolic links inside of the configured music_directory. # #follow_inside_symlinks "yes" # ############################################################################### # Zeroconf / Avahi Service Discovery ########################################## # # If this setting is set to "yes", service information will be published with # Zeroconf / Avahi. # zeroconf_enabled "yes" # # The argument to this setting will be the Zeroconf / Avahi unique name for # this MPD server on the network. # zeroconf_name "Music Player" # ############################################################################### # Permissions ################################################################# # # If this setting is set, MPD will require password authorization. The password # can setting can be specified multiple times for different password profiles. # #password "password@read,add,control,admin" # # This setting specifies the permissions a user has who has not yet logged in. # default_permissions "read,add,control,admin" # ############################################################################### # Input ####################################################################### # input { plugin "curl" # proxy "proxy.isp.com:8080" # proxy_user "user" # proxy_password "password" } # ############################################################################### # Audio Output ################################################################ # # MPD supports various audio output types, as well as playing through multiple # audio outputs at the same time, through multiple audio_output settings # blocks. Setting this block is optional, though the server will only attempt # autodetection for one sound card. # # See <http://mpd.wikia.com/wiki/Configuration#Audio_Outputs> for examples of # other audio outputs. # # An example of an ALSA output: # audio_output { type "alsa" name "My ALSA Device" device "hw:0,0" # optional format "44100:16:2" # optional mixer_device "default" # optional mixer_control "PCM" # optional mixer_index "0" # optional } # # An example of an OSS output: # #audio_output { # type "oss" # name "My OSS Device" # device "/dev/dsp" # optional # format "44100:16:2" # optional # mixer_device "/dev/mixer" # optional # mixer_control "PCM" # optional #} # # An example of a shout output (for streaming to Icecast): # #audio_output { # type "shout" # encoding "ogg" # optional # name "My Shout Stream" # host "localhost" # port "8000" # mount "/mpd.ogg" # password "hackme" # quality "5.0" # bitrate "128" # format "44100:16:1" # protocol "icecast2" # optional # user "source" # optional # description "My Stream Description" # optional # genre "jazz" # optional # public "no" # optional # timeout "2" # optional #} # # An example of a recorder output: # #audio_output { # type "recorder" # name "My recorder" # encoder "vorbis" # optional, vorbis or lame # path "/var/lib/mpd/recorder/mpd.ogg" ## quality "5.0" # do not define if bitrate is defined # bitrate "128" # do not define if quality is defined # format "44100:16:1" #} # # An example of a httpd output (built-in HTTP streaming server): # audio_output { type "httpd" name "Stream of Pi" encoder "lame" # optional, vorbis or lame port "8000" # quality "5.0" # do not define if bitrate is defined bitrate "128" # do not define if quality is defined format "44100:16:1" } # # An example of a pulseaudio output (streaming to a remote pulseaudio server) # #audio_output { # type "pulse" # name "My Pulse Output" # server "remote_server" # optional # sink "remote_server_sink" # optional #} # ## Example "pipe" output: # #audio_output { # type "pipe" # name "my pipe" # command "aplay -f cd 2>/dev/null" ## Or if you're want to use AudioCompress # command "AudioCompress -m | aplay -f cd 2>/dev/null" ## Or to send raw PCM stream through PCM: # command "nc example.org 8765" # format "44100:16:2" #} # ## An example of a null output (for no audio output): # #audio_output { # type "null" # name "My Null Output" #} # # This setting will change all decoded audio to be converted to the specified # format before being passed to the audio outputs. By default, this setting is # disabled. # #audio_output_format "44100:16:2" # # If MPD has been compiled with libsamplerate support, this setting specifies # the sample rate converter to use. Possible values can be found in the # mpd.conf man page or the libsamplerate documentation. By default, this is # setting is disabled. # #samplerate_converter "Fastest Sinc Interpolator" # ############################################################################### # Volume control mixer ######################################################## # # These are the global volume control settings. By default, this setting will # be detected to the available audio output device, with preference going to # hardware mixing. Hardware and software mixers for individual audio_output # sections cannot yet be mixed. # # An example for controlling an ALSA, OSS or Pulseaudio mixer; If this # setting is used other sound applications will be affected by the volume # being controlled by MPD. # mixer_type "hardware" # # An example for controlling all mixers through software. This will control # all controls, even if the mixer is not supported by the device and will not # affect any other sound producing applications. # #mixer_type "software" # # This example will not allow MPD to touch the mixer at all and will disable # all volume controls. # #mixer_type "disabled" # ############################################################################### # Normalization automatic volume adjustments ################################## # # This setting specifies the type of ReplayGain to use. This setting can have # the argument "album" or "track". See <http://www.replaygain.org> for more # details. This setting is disabled by default. # #replaygain "album" # # This setting sets the pre-amp used for files that have ReplayGain tags. By # default this setting is disabled. # #replaygain_preamp "0" # # This setting enables on-the-fly normalization volume adjustment. This will # result in the volume of all playing audio to be adjusted so the output has # equal "loudness". This setting is disabled by default. # #volume_normalization "no" # ############################################################################### # MPD Internal Buffering ###################################################### # # This setting adjusts the size of internal decoded audio buffering. Changing # this may have undesired effects. Don't change this if you don't know what you # are doing. # #audio_buffer_size "2048" # # This setting controls the percentage of the buffer which is filled before # beginning to play. Increasing this reduces the chance of audio file skipping, # at the cost of increased time prior to audio playback. # buffer_before_play "8%" # ############################################################################### # Resource Limitations ######################################################## # # These settings are various limitations to prevent MPD from using too many # resources. Generally, these settings should be minimized to prevent security # risks, depending on the operating resources. # connection_timeout "60" max_connections "10" max_playlist_length "1634" max_command_list_size "2048" max_output_buffer_size "8192" # ############################################################################### # Character Encoding ########################################################## # # If file or directory names do not display correctly for your locale then you # may need to modify this setting. After modification of this setting mpd # --create-db must be run to change the database. # filesystem_charset "UTF-8" # # This setting controls the encoding that ID3v1 tags should be converted from. # id3v1_encoding "UTF-8" # ############################################################################### # SIDPlay decoder ############################################################# # # songlength_database: # Location of your songlengths file, as distributed with the HVSC. # The sidplay plugin checks this for matching MD5 fingerprints. # See http://www.c64.org/HVSC/DOCUMENTS/Songlengths.faq # # default_songlength: # This is the default playing time in seconds for songs not in the # songlength database, or in case you're not using a database. # A value of 0 means play indefinitely. # # filter: # Turns the SID filter emulation on or off. # #decoder { # plugin "sidplay" # songlength_database "/media/C64Music/DOCUMENTS/Songlengths.txt" # default_songlength "120" # filter "true" #} # ############################################################################### |
I went and left all of the default comments in there, but of course if you want to make it more readable feel free to remove what you don’t use.
So, yea. MPD’s ready. Just restart it.
|
1 |
sudo /etc/init.d/mpd restart |
Now let’s get our client up and running so we can start playing some music!
This one’s a little more tricky as the default config file is hiding and compressed.
First let’s create the local config directory like we did for MPD.
|
1 |
mkdir ~/.ncmpcpp |
and let’s copy the example config over to our new directory.
|
1 |
cp /usr/share/doc/ncmpcpp/config /home/pi/.ncmpcpp |
and then extract it.
|
1 |
gzip -d ~/.ncmpcpp/config.gz |
Now go ahead and edit that file.
|
1 |
nano ~/.ncmpcpp/config |
Again, these are the settings I used, but it’s well documented so feel free to make changes as well. Here is my config for ncmpcpp (again, click it to expand it, it’s even longer…)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 |
#################################################### ## this is example configuration file, copy it to ## ## ~/.ncmpcpp/config and set up your preferences ## #################################################### # ##### directories ###### ## ## Directory for storing ncmpcpp related files. ## Changing it is useful if you want to store ## everything somewhere else and provide command ## line setting for alternative location to config ## file which defines that while launching ncmpcpp. ## # ncmpcpp_directory = "~/.ncmpcpp" # ## ## Directory for storing downloaded lyrics. It ## defaults to ~/.lyrics since other MPD clients ## (eg. ncmpc) also use that location. ## # lyrics_directory = "~/.lyrics" # ##### connection settings ##### # ## set it in order to make tag editor and renaming files work properly # mpd_host = "localhost" # mpd_port = "6666" # mpd_music_dir = "/home/pi/Music" # mpd_connection_timeout = "5" # mpd_crossfade_time = "5" # #mpd_communication_mode = "notifications" (polling/notifications) # ##### music visualizer ##### ## ## Note: In order to make music visualizer work you'll ## need to use mpd fifo output, whose format parameter ## has to be set to 44100:16:1 for mono visualization ## or 44100:16:2 for stereo visualization. Example ## configuration (it has to be put into mpd.conf): ## ## audio_output { ## type "fifo" ## name "My FIFO" ## path "/tmp/mpd.fifo" ## format "44100:16:2" ## } ## # ## ## If you set format to 44100:16:2, make it 'yes'. ## # #visualizer_in_stereo = "no" # #visualizer_fifo_path = "" # ## ## Note: Below parameter is needed for ncmpcpp ## to determine which output provides data for ## visualizer and thus allow syncing between ## visualization and sound as currently there ## are some problems with it. ## # #visualizer_output_name = "" # ## ## Note: Below parameter defines how often ncmpcpp ## has to "synchronize" visualizer and audio outputs. ## 30 seconds is optimal value, but if you experience ## synchronization problems, set it to lower value. ## Keep in mind that sane values start with >=10. ## # #visualizer_sync_interval = "30" # ## ## Note: To enable spectrum frequency visualization ## you need to compile ncmpcpp with fftw3 support. ## # #visualizer_type = "wave" (spectrum/wave) # #visualizer_look = "◆│" # ##### system encoding ##### ## ## ncmpcpp should detect your charset encoding ## but if it failed to do so, you can specify ## charset encoding you are using here. ## ## Note: You can see whether your ncmpcpp build ## supports charset detection by checking output ## of `ncmpcpp --version`. ## ## Note: Since MPD uses utf8 by default, setting ## this option makes sense only if your encoding ## is different. ## # #system_encoding = "" # ##### delays ##### # ## delay after playlist highlighting will be disabled (0 = don't disable) # playlist_disable_highlight_delay = "5" # ## defines how long various messages are supposed to be visible # message_delay_time = "4" # ##### song format ##### ## ## for song format you can use: ## ## %l - length ## %f - filename ## %D - directory ## %a - artist ## %A - album artist ## %t - title ## %b - album ## %y - year ## %n - track number (01/12 -> 01) ## %N - full track info (01/12 -> 01/12) ## %g - genre ## %c - composer ## %p - performer ## %d - disc ## %C - comment ## $R - begin right alignment ## ## you can also put them in { } and then it will be displayed ## only if all requested values are available and/or define alternate ## value with { }|{ } eg. {%a - %t}|{%f} ## ## Note: If you want to set limit on maximal length of a tag, just ## put the appropriate number between % and character that defines ## tag type, e.g. to make album take max. 20 terminal cells, use '%20b'. ## ## Note: Format that is similar to "%a - %t" (i.e. without any additional ## braces) is equal to "{%a - %t}", so if one of the tags is missing, ## you'll get nothing. ## ## text can also have different color than the main window has, ## eg. if you want length to be green, write $3%l$9 ## ## available values: ## ## - 0 - default window color (discards all other colors) ## - 1 - black ## - 2 - red ## - 3 - green ## - 4 - yellow ## - 5 - blue ## - 6 - magenta ## - 7 - cyan ## - 8 - white ## - 9 - end of current color ## ## Note: colors can be nested. ## # #song_list_format = "{%a - }{%t}|{$8%f$9}$R{$3(%l)$9}" # #song_status_format = "{{%a{ \"%b\"{ (%y)}} - }{%t}}|{%f}" # #song_library_format = "{%n - }{%t}|{%f}" # #tag_editor_album_format = "{(%y) }%b" # ## ## Note: Below variables are for alternative version of user's interface. ## Their syntax supports all tags and colors listed above plus some extra ## markers used for text attributes. They are followed by character '$'. ## After that you can put: ## ## - b - bold text ## - u - underline text ## - r - reverse colors ## - a - use alternative character set ## ## If you don't want to use an attribute anymore, just put it again, but ## this time insert character '/' between '$' and attribute character, ## e.g. {$b%t$/b}|{$r%f$/r} will display bolded title tag or filename ## with reversed colors. ## # #alternative_header_first_line_format = "$b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b" # #alternative_header_second_line_format = "{{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D}" # ## ## Note: Below variables also supports ## text attributes listed above. ## # #now_playing_prefix = "$b" # #now_playing_suffix = "$/b" # #browser_playlist_prefix = "$2playlist$9 " # #selected_item_prefix = "$6" # #selected_item_suffix = "$9" # ## colors are not supported for below variable # #song_window_title_format = "{%a - }{%t}|{%f}" # ##### columns settings ##### ## ## syntax of song columns list format is "column column etc." ## ## - syntax for each column is: ## ## (width of column)[column's color]{displayed tag} ## ## Note: Width is by default in %, if you want a column to ## have fixed size, add 'f' after the value, e.g. (10)[white]{a} ## will be the column that take 10% of screen (so the real column's ## width will depend on actual screen size), whereas (10f)[white]{a} ## will take 10 terminal cells, no matter how wide the screen is. ## ## - color is optional (if you want the default one, type []) ## ## Note: You can give a column additional attributes by putting appropriate ## character after displayed tag character. Available attributes are: ## ## - r - column will be right aligned ## - E - if tag is empty, empty tag marker won't be displayed ## ## You can also: ## ## - give a column custom name by putting it after attributes, ## separated with character ':', e.g. {lr:Length} gives you ## right aligned column of lengths named "Length". ## ## - define sequence of tags, that have to be displayed in case ## predecessor is empty in a way similar to the one in classic ## song format, i.e. using '|' character, e.g. {a|c|p:Owner} ## creates column named "Owner" that tries to display artist ## tag and then composer and performer if previous ones are ## not available. ## # #song_columns_list_format = "(7f)[green]{l} (25)[cyan]{a} (40)[]{t|f} (30)[red]{b}" # ##### various settings ##### # ## ## Note: Custom command that will be executed each ## time song changes. Useful for notifications etc. ## ## Attention: It doesn't support song format anymore. ## Use `ncmpcpp --now-playing SONG_FORMAT` instead. ## #execute_on_song_change = "" # #playlist_show_remaining_time = "no" # #playlist_shorten_total_times = "no" # #playlist_separate_albums = "no" # #playlist_display_mode = "classic" (classic/columns) # #browser_display_mode = "classic" (classic/columns) # #search_engine_display_mode = "classic" (classic/columns) # #playlist_editor_display_mode = "classic" (classic/columns) # #discard_colors_if_item_is_selected = "yes" # #incremental_seeking = "yes" # #seek_time = "1" # #autocenter_mode = "no" # #centered_cursor = "no" # ## ## Note: You can specify third character which will ## be used to build 'empty' part of progressbar. ## #progressbar_look = "=>" # #default_place_to_search_in = "database" (database/playlist) # #user_interface = "classic" (classic/alternative) # #media_library_left_column = "a" (possible values: a,y,g,c,p, legend above) # #default_find_mode = "wrapped" (wrapped/normal) # #default_space_mode = "add" (add/select) # #default_tag_editor_left_col = "albums" (albums/dirs) # #default_tag_editor_pattern = "%n - %t" # #header_visibility = "yes" # #statusbar_visibility = "yes" # #titles_visibility = "yes" # #header_text_scrolling = "yes" # #fancy_scrolling = "yes" # #cyclic_scrolling = "no" # #lines_scrolled = "2" # #follow_now_playing_lyrics = "no" # #fetch_lyrics_for_current_song_in_background = "no" # #store_lyrics_in_song_dir = "no" # ## ## Note: If you set this variable, ncmpcpp will try to ## get info from last.fm in language you set and if it ## fails, it will fall back to english. Otherwise it will ## use english the first time. ## ## Note: Language has to be expressed as an ISO 639 alpha-2 code. ## #lastfm_preferred_language = "" # #ncmpc_like_songs_adding = "no" (enabled - add/remove, disabled - always add) # #show_hidden_files_in_local_browser = "no" # #display_screens_numbers_on_start = "yes" # ## ## How shall key_screen_switcher work? ## ## - "previous" - switch between current and last used screen ## - "sequence: 2 -> 9 -> 5" - switch between given sequence of screens. ## ## Screen numbers you can use after 'sequence' keyword are: ## ## - 1 - help ## - 2 - playlist ## - 3 - browser ## - 4 - search engine ## - 5 - media library ## - 6 - playlist editor ## - 7 - tag editor ## - 8 - outputs ## - 9 - visualizer ## - 10 - clock ## ## As you can see, above example will switch between ## playlist, visualizer and media library screens. ## #screen_switcher_mode = "sequence: 2 -> 3" # ## ## Default width of locked screen (in %). ## Acceptable values are from 20 to 80. ## # #locked_screen_width_part = "50" # #ask_for_locked_screen_width_part = "yes" # ## ## Note: You can define startup screen for ncmpcpp ## by choosing screen number from the list above. ## #startup_screen = "2" # #jump_to_now_playing_song_at_start = "yes" # #ask_before_clearing_main_playlist = "no" # #clock_display_seconds = "no" # #display_volume_level = "yes" # #display_bitrate = "no" # #display_remaining_time = "no" # #regular_expressions = "basic" (basic/extended) # ## ## Note: If below is enabled, ncmpcpp will ignore leading ## "The" word while sorting items in browser, tags in ## media library, etc. ## #ignore_leading_the = "no" # #block_search_constraints_change_if_items_found = "yes" # #mouse_support = "yes" # #mouse_list_scroll_whole_page = "yes" # #empty_tag_marker = "<empty>" # #tag_editor_extended_numeration = "no" # #media_library_display_date = "yes" # #media_library_display_empty_tag = "yes" # #media_library_disable_two_column_mode = "no" # #enable_window_title = "yes" # ## ## Note: You can choose default search mode for search ## engine. Available modes are: ## ## - 1 - use mpd built-in searching (no regexes, pattern matching) ## - 2 - use ncmpcpp searching (pattern matching with support for regexes, ## but if your mpd is on a remote machine, downloading big database ## to process it can take a while ## - 3 - match only exact values (this mode uses mpd function for searching ## in database and local one for searching in current playlist) ## # #search_engine_default_search_mode = "1" # ## ## Note: Below variables can allow you to physically ## remove files and directories from your hdd using ## ncmpcpp's browser screen. ## # #allow_physical_files_deletion = "no" # #allow_physical_directories_deletion = "no" # #external_editor = "" # #use_console_editor = "no" (set to yes, if your editor is console app) # ##### colors definitions ##### # #colors_enabled = "yes" # #empty_tag_color = "cyan" # #header_window_color = "default" # #volume_color = "default" # #state_line_color = "default" # #state_flags_color = "default" # #main_window_color = "yellow" # #color1 = "white" # #color2 = "green" # #main_window_highlight_color = "yellow" # #progressbar_color = "default" # #statusbar_color = "default" # #alternative_ui_separator_color = "black" # #active_column_color = "red" # #visualizer_color = "yellow" # #window_border_color = "green" # #active_window_border = "red" # |
So yea. That’s it! You should be up and running!
Start ncmpcpp in a tty with the logical command of “ncmpcpp” This will open the client app and allow you to start playing music! Being it’s a command line app, most of the work is done with keyboard commands. Press the number “1″ on your keyboard (NOT on the 10key if you have one to the right of your normal keyboard but the numbers above the qwerty row) and you will be shown a VERY long list of keyboard commands to control ncmpcpp, however the arrow and space and enter key’s will get you through most of it easily.
Plug it in to your amplifier, or better yet, grab your android phone and grab the free app called “MPDroid” it’s the best app I’ve found to interface with MPD. Now you can control your music from your phone, and get a stream of it sent TO your phone as well! No wires needed! (however it will be significantly buffered, so be patient when you first choose to start your stream)
Not too bad right!
Enjoy and if you have any questions, feel free to post a comment, here or in our forums, or even in my IRC hangout at italktomachines.com !
Auto Start your WiFi on Raspberry Pi
7So I just got my new Hawking HWUN3 USB wireless N adapter that I purchased for my Raspberry Pi, and wanted it to connect on boot being I only access it via SSH and to plug it in to a wired adapter in order to start the wireless connection so that I can unplug it just didn’t make sense. So here’s how I got it installed and starting on boot.
This network adapter is perfect, I didn’t need to compile a thing, it was recognized right out of the box. LOVE IT!
I ran ifconfig and it was right there, happy and waiting.
[codesyntax lang="bash" lines="no" title="ifconfig output"]
wlan0 Link encap:Ethernet HWaddr 00:0e:3b:1e:b8:4d
inet addr:192.168.0.51 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:464 errors:0 dropped:0 overruns:0 frame:0
TX packets:267 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:68999 (67.3 KiB) TX bytes:40100 (39.1 KiB)
[/codesyntax]
Then you’ll need to do a little bash scripting, you can create a script in “/etc/init.d/” and then run “update-rc.d scriptname defaults” to install it, however I decided to instead just add it to the end of “/etc/rc.local” as this will run after everything else has already loaded after a reboot. Of course you can have init start your script at the end of the boot cycle (or anywhere in between) but the rc.local just takes less planning.
By default the “/etc/rc.local” file does nothing, but I left the existing code in and just commented it out. You can do what you like of course. Here is the contents of my rc.local file
[codesyntax lang="bash" lines="normal" title="rc.local"]
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will “exit 0″ on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
## Print the IP address
#_IP=$(hostname -I) || true
#if [ "$_IP" ]; then
# printf “My IP address is %s\n” “$_IP”
#fi
echo “Starting WiFi…”
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
sleep .5s
dhclient wlan0
echo “WiFi should be started”
exit 0
[/codesyntax]
The code doesn’t actually do anything until line 18. On line 19 you’ll see that we’re starting the wpa_supplicant in the background (-B) for interface wlan0 (-i wlan0) using the configuration file found at “/etc/wpa_supplicant.conf” (-c)
We will need to create that file. Also I should note, wpasupplicant was already installed on my image, however if you need it installed, just issue the following command.
[codesyntax lang="bash" lines="no" title="install wpa supplicant"]
|
1 |
sudo apt-get install wpasupplicant |
[/codesyntax]
now let’s create the ever important wpa_supplicant.conf file. This will hold your ssid name and pre-shared key (password) of course replace YOURSSID and YOURPASSWORD with your own info respectively.
[codesyntax lang="bash" lines="fancy" title="create wpa_supplicant.conf file"]
|
1 |
sudo nano /etc/wpa_supplicant.conf |
[/codesyntax]
and the contents of that file should look something like this:
[codesyntax lang="bash" lines="fancy" title="wpa_supplicant.conf"]
|
1 2 3 4 |
network={ ssid="YOURSSID" psk="YOURPASSWORD" } |
[/codesyntax]
That’s it! You should be connected! Go ahead and reboot, and then run iwconfig and you should be connected to your designated access point, all without using the GUI!
Here’s a pic of my pi, with the usb stick, and some ram heat sinks I picked up at Frys for like $10 ( and I still have 6 more lying around now.. guess I’ll need more pi!)
And here’s a screen dump showing it recognized by my pi.
[codesyntax lang="text" lines="fancy" title="pi screendump"]
Using username “pi”.
pi@192.168.0.51′s password:
Linux raspberrypi 3.1.9+ #168 PREEMPT Sat Jul 14 18:56:31 BST 2012 armv6l
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Type ‘startx’ to launch a graphical session
Last login: Wed Jul 25 19:45:17 2012 from 192.168.0.119
pi@raspberrypi ~ $ iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
wlan0 IEEE 802.11bgn ESSID:”editedformysaftey”
Mode:Managed Frequency:2.452 GHz Access Point: BC:C5:C3:6C
Bit Rate=65 Mb/s Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:on
Link Quality=70/70 Signal level=-37 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:47 Invalid misc:3 Missed beacon:0
pi@raspberrypi ~ $ ifconfig
eth0 Link encap:Ethernet HWaddr b8:27:16:60
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1104 (1.0 KiB) TX bytes:1104 (1.0 KiB)
wlan0 Link encap:Ethernet HWaddr 00:3b:1e:b8
inet addr:192.168.0.51 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:464 errors:0 dropped:0 overruns:0 frame:0
TX packets:267 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:68999 (67.3 KiB) TX bytes:40100 (39.1 KiB)
pi@raspberrypi ~ $ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 0e66:0013 Hawking Technologies HWUN3 Hi-Gain Wireless-N Adapter [Ralink RT3070]
pi@raspberrypi ~ $
[/codesyntax]
One thing to note, your network led’s wont be working, because your not using your nic…. You’ll want to watch the led on the actual usb stick to see if there’s activity. If it’s up and online, the light will be steady green, and only flash with transmissions. If it’s constantly off and only blinks every few seconds, something’s wrong and you’ll need to do some troubleshooting.
Hope this helps someone, and if not, at least I can forget about how I did it until my next pi comes in a few more days!
Installing Ubuntu Server 12.04 LTS using Hardware Raid1
19So my new 10,000 rpm raptor drives came in today, and I’ve had a sabrent hardware 4 port sata raid controller sitting around for a while, and decided to put them to work in a desktop server I plan on migrating the site’s I host (including this one) over to during the next few weeks.
One of the main reasons for the move is I this new raid1 setup will help ensure that me and my clients data will remain safe, in the case of a hardware failure. While I do currently backup with mysqldump and some rsync magic, restoration is alot easier using raid, then moving and re-installing everything from backups, not to mention just add’s to the geek cred
However I ran into a problem installing grub the error stated:
Unable to install GRUB in /dev/mapper
Executing ‘grub-install ‘/dev/mapper’ failed.
This is a fatal error
and because I haven’t had a lot of experience with either raid configurations or ever having installed linux to a machine with such a configuration I needed to do some research.
I found a few good posts, but most of them recommended creating another partition just for grub, and then using the raid drives for the rest of the install.
To me that sounded like a poor workaround, I want the data to be mirrored on both drives, equally, grub and all.
That led me to try a few other avenues to figure out the correct and easy way to get through the install.
Long story short, here’s a breakdown of how to get it setup and working, the easy way. In this breakdown I’ll assume you can follow the easy installer prompts for Ubuntu, have “activated the serial ata raid devices”, have taken note of the array’s name (you can take note of it on the “[!!] Partition disks” screen that looks like the purple box on the left. (sorry not a vm so I had to take a picture of the screen…)
in my case the name of the array is “sil_biegdfaaeabh”, and have continued onto the part of the install where it asks where to install grub.
- First let’s find the name of the raid array, in case you forgot to take note of the name as mentioned in the previous paragraph (as I’ve done a few times when just mindlessly pressing next in the wee hours of the morning..) press Ctrl +alt+F2 to drop into a busybox terminal session. Press enter when prompted to start the terminal.
- Type in the command [codesyntax lang="bash" lines="no" title="command"]
1ls -l /dev/mapper
[/codesyntax] and find that funny-named array after the entry named controller and then head back to your install terminal by pressing Ctrl+Alt+F1. - enter that name after the /dev/mapper that is populated by default. In my case:
[codesyntax lang="bash" lines="no" title="install grub to:"]
1/dev/mapper/sil_biagdfaaeabh
[/codesyntax]Of course CHANGE THE NAME and substitute your OWN in the example above!
- Continue setting up Ubuntu as you see fit, as the rest should complete without any further hassle!
|
1 |
sudo apt-get –-no-install-recommends install ubuntu-desktop |
Untangle on the Edge
0So my new employer is very generous on the old hardware that is going to be recycled and let me take home an old desktop (sans hard drive of course).
Awesome! Now what to do with it…
Wait, I remember a cool router I used to use a few years ago when I first moved out of my parents house.
So I ran down to my local Fry’s Electronics, picked up a new hard drive (IDE is really expensive!) more ram (so is ddr ram…) and two gigabit network cards. (pretty cheap!)
Viola, a great and very powerful new router!
Untangle offers you two options to setup your untangle router, either as the edge device (directly connected to the internet) or as a transparent bridge (behind a firewall or router just doing traffic filtering). I went with it as my edge device.
The UI is great and I’ve always liked the interface, it looks like a rack of independant network devices that you can configure the same way, independantly.
It does everything a good UTM router does, and then some, and most of the options are available for free. (I did end up buying the web cache as it really does help speed up most web browsing.) and the pay for additions are pretty averagely priced.
The “lite” package is made out of entirely opensource software, and provides a great platform for free,
It also does reporting, generates a key based VPN connection for each client independently using OpenVPN (there’s also an IPSec VPN available for purchase as well.)
If you haven’t heard of it, check it out. If your looking for a new router for your network, they also provide hardware appliances as well, if you have an old beige box lying around, why not add a nic card or two and give it a shot yourself!



