I give up.

I've spent two full days hacking away at my script, trying desperately to make it work. I couldn't do it.

This update has broken me for the foreseeable future. I doubt it will get done unless someone forks the project and somehow manages to get around the insane dependencies that the packages in the Ubuntu repos have.

Sorry.

Okay, I don't even know anymore

Installing kdm installs all of the GNOME packages. Why? I JUST DON'T KNOW.

Putting the -R flag into all the commands. I'm tired of non-required packages being installed.

Femtobuntu Progress Report

I've ported the script fully to 11.04. As expected, the KDE and *box segments required no modification, however (for some odd reason) you still get the generic Unity error on the first login (it never shows up again). Unity isn't in there yet, but I'm working on it. If you want to hop on the testing train, you can download the script from http://minimal-desktop.sublevel21.com/latest.sh. Remember if you're wget'ing this onto a new CLI install you'll have to manually switch to tty1.

Unity support is my priority right now, then Xfce after that. GNOME2/3 work fine (so far as I know).

Update: Whaaaaat? The KDE install boots to GNOME 2. I... don't even know what causes that. Investigating the crap out of this...

Roadblocks

Evidently Natty doesn't like a CLI install (from the 11.04 Alternate install disc). It refuses to boot! Let's hope the Netboot installation works.

Update: As dpeter pointed out, the CLI install fails to work inside the testing environment (as well as older machines). Until this is ironed out, I can't really work on the project effectively.

Le Second Update: esauvisky pointed out that tty switching still works. I hate to do it, but I guess I have to make the user handle tty switching in order to get to the script until this bug is fixed. Thanks, mate!

Update the Third: Installing GNOME forces the install of Unity. This needs to stop happening. I'm not even sure why, because none of the dependency trees map out that way. I think the default install of GDM is designed to kick to Unity, even when it's not even installed.

Update4: Or not! It's just stupid and gives me the standard "your hardware can't run Unity" message, despite Unity not being installed at all.

Official stance on a Natty update (11.04, AKA Femtobuntu)

It'll happen when it happens. I've been a little cramped for time, with work and biking and all the things I can do now that the sun stays out for more than 10 minutes.

Estimated changelog:
  • Port script to Ubuntu 11.04
  • Add Unity support
  • Add GNOME3/GNOME2 choice
  • Add XFCE support (tentative)
Additionally, MDU 12.04 will be the final official update to MDU. Its codename will be "Hellabuntu", in support of the Make Hella- Official group. It will follow MDU 11.10, "Nanobuntu", so named in honor of the nano text editor.

Previously, I was using a naming convention that took the lowest SI prefix and suffixed "buntu" onto it. Nanobuntu skips over "Picobuntu" (pico is what nano is based on), since pico is not open-source.

Advanced SSH Tunelling

In case you don't already know, ssh is kind of a big deal in the GNU/Linux world. It stands for "secure shell", and it's one of the primary ways of remote administration (or login in general). Apart from the standard use, one of my favorite uses of ssh is to create on-the-fly tunnels (or proxies).

This guide makes the following assumtions:

  • You own a Linux computer
  • Said computer's SSH port is forwarded
  • You have a basic understanding of the Linux command line
  • The client is running a POSIX-compliant OS with ssh installed
The basic syntax is as follows:
ssh -D 9999 user@ip.add.ress
Let's break that down a little. ssh is the command to create a secure shell session. The -D flag tells SSH to create a local tunnel (SOCKS5) on the specified port, in this case 9999. user is your username, and ip.add.ress is the IP address of your proxy server. You can retrieve this by running the command:
wget http://www.whatismyip.com/automation/n09230945.asp -O - -o /dev/null && echo
on the SSH server. (Note: the echo command is necessary because wget does not echo a newline at the end of its output.) In order to use this proxy that we've just set up, we need to configure our programs to use it. Most Web-based programs have proxy settings (for example, in Firefox they are found in Edit > Preferences... > Advanced > Network > Settings... In the "Server" or "Host" section, you would place localhost and in the Port section you would type 9999 (or whatever port you specified above). This will route all traffic through that server, through the secure connection that SSH provides.

In some cases, this is not enough. Let's say you have a remote computer running VNC and you don't have its ports forwarded. Is it possible to connect to that machine though your SSH server? The answer is a resounding "yes". It's more complicated, but entirely possible. The syntax would be:

ssh -L 9999:net.work.ip:5900 user@ip.add.ress
Instead of using the -D flag, we use the -L flag. This creates a direct proxy to a specific machine. As above, 9999 is the local port to create the tunnel on, user is your username on the SSH machine, and ip.add.ress is your external IP address. In the example above, 5900 is the port we want to connect to on the remote computer, and 5900 is the default VNC port. Replace this with what you need. net.work.ip is the local IP address of the final target machine. You can retrieve this by running the command:
ifconfig |grep inet |grep Bcast |cut -d ':' -f 2
on the target machine.

Let me know if there's anything else I can expand on.

While I'm on the subject...

Speaking of domain name changes, here's a little explanation for those of you less technically-inclined.

Domain names are "...hostnames that identify Internet Protocol (IP) resources such as web sites." (source: Wikipedia) In other words, when you connect to a website by typing in its domain name, you're actually typing in an alias for that web server's IP address. Try it: go up to your address bar and type in http://74.125.226.112/ and notice where you go. When you enter in http://google.com/, your computer automatically pings a Domain Name Service Server (DNS Server) and retrieves the actual numerical IP address of the server, then connects you to it.

Now, almost all domain registrations cost money. I mentioned in my earlier post that a .com domain registered with domain.com costs approximately $11 USD per year and .net names for $9 USD. GoDaddy.com offers a free domain name with every hosting package, or $13 USD per year for a domain name alone. While this may not seem like much, a Web site that gets barely 200 pageviews per day doesn't exactly justify the cost.

I said that "almost" all domain registrations cost money. To my knowledge, there is only one domain registrar that's completely free and has fully-integrated DNS control: dot.tk. There, you can register for a *.tk domain name, and even change DNS servers if you like (which is exactly what I'm going to talk about in a moment). Very rarely will hosts offer DNS control, let alone allow you to use different nameservers entirely.

Then we have DNS control, one of the most important aspects of Web hosting. Subdomains, for example, are a powerful way of connecting your users to Web applications that are accessed more often (an example of this would be mail.google.com or store.steampowered.com). Additionally, if you are self-hosting (ie. own the physical server hardware) then you may have a dynamic IP address from your Internet Service Provider (ISP). This means your numerical IP address changes every so often, which can interrupt your service. In this case, you would need a dynamic DNS controller, something which ZoneEdit provides for free. If you choose to self-host, all you need to do is download one of several dynamic DNS clients (or, if you're using GNU/Linux, there are scripts you can place into crontab to run periodically) and tell them to update the Zone if your choice.

If you want me to write a step-by-step process explaining how you can get your own free domain name with DNS control (something which is not limited to Web sites: game, chat and file servers can benefit from a fixed domain name as well), let me know in the comments and I'll make a post about it.