Track JavaScript Errors Easily with Track:js

I’ve been using Track:js for a few weeks now here at

There may seem like a lot of GoogleBot-related errors at first glance. But, after deleting or filtering those out, you’re left with the errors that really happen most often.

Track:js has also recently added an option that will send you a daily summary of the JavaScript errors encountered, which is really handy, especially when you don’t have time to monitor the Track:js dashboard all day long.

A summary email can be seen below:
Track:js Daily Email Summary

I really enjoy the service, but I can’t see myself paying for it, at least not until I have a viable product of my own that is worthy of being tracked in such detail. Track:js starts out at $29.99 a month, which will get you 500,000 hits per month and 8 days worth of error history.

The guys behind Track:js are pretty awesome and seem to be pretty involved in the tech startup scene here in the Midwest. The footer of their site reads “Proudly built in Minnesota”.


Remove SSH Login Message After DigitalOcean WordPress One-Click Install

After creating a new Droplet using the pre-built WordPress image provided by DigitalOcean, you’re presented with a very helpful message after logging in via SSH:

To finish installing WordPress, navigate to your droplet’s IP:
Make sure to specify hostname from DO panel to your droplet before creating it (for example: ‘’ or ‘’)
This will create necessary Apache configs based on hostname and Apache will respond based on hostname.
Server will also respond to its IP address, so if you finish installation from http://IP then
you will need to change hostname from WordPress Settings later (from http://IP to http://hostname)

It’s a really helpful message, especially if you’re new to DigitalOcean and even more so if you’re new to hosting stuff on your own (ie: unmanaged hosting). However, the message isn’t really helpful after the first login, maybe two logins.

There’s a great article on how to get setup after using the One-Click WordPress install, but removing the message is never mentioned.

It’s just a message of the day, the configuration for which can be found in /etc/motd. Delete line 2, and you should be good to go.


HackerNews Front Page: I Stayed Up

Load (cpu and memory) was significantly lower than I expected

Didn’t expect anything specific for load, but more load than what I did see, for sure.

A post I made hit the front page of HackerNews the other day. Here’s the discussion at HackerNews. Traffic was steady, For about five hours, there were between 50 and 250 users on the site at any given time.

I use two DigitalOcean droplets, one running Apache 2, the other for MySQL (mostly). The Apache 2 droplet is a 2GB droplet in the NYC2 datacenter and the MySQL droplet is a 1GB droplet in the same datacenter. They talk to each other over a private network.

I’ve really liked the setup so far, and without any tweaks to Apache or MySQL, both servers have performed quite well. I use a WordPress caching plugin and CloudFlare, but that’s all there is for caching.

CPU Usage
CPU usage remained quite low, you can clearly see the HackerNews traffic.

Eventually, one could expect thousands of users on a site at any given time. That greatly depends on the type of site, though.

At that point, you’d probably need the power of Nginx, using it as a front-end (reverse) proxy to Apache.

I’m going to setup a DigitalOcean droplet to serve as a reverse proxy in the event I need to serve massive amounts of traffic. It’s sole job will be to run Nginx.

I simply don’t need it right now, though. Unless this hits the front page of HackerNews and makes it further up the page. ;). Then I’ll be scrambling to get that Nginx box up. So, put me to work later.

Bandwidth Usage
Highest bandwidth usage was 2.33Mbps. DigitalOcean can do a LOT more than that.

I didn’t receive any alerts from New Relic,, or Uptime Robot, so all was good. I am, however, still going to prep some kind of solution with Nginx sitting in front of Apache, to at least serve static files.

Nginx, Apache, or Nginx + Apache?

View Results

Loading ... Loading ...


Poor Man’s VPN With a Cheap VPS

VPN using a cheap VPS and sshuttle

It really is awesome, sshuttle basically allows you to browse the web via your VPS, in my case, a VPS from DigitalOcean (sponsored link, as are the others to DigtialOcean). It works on Linux and MacOS.

The GitHub repo explains it better than I can.

Transparent proxy server that works as a poor man’s VPN. Forwards over ssh. Doesn’t require admin. Works with Linux and MacOS. Supports DNS tunneling.

It hasn’t been updated in two years, but, no need to fix or change something that doesn’t need fixing or changing.

So, Why? What’s the point?

I run some Tor relays, one out of my house, thanks Mediacom! ;)

Because of this, many websites block me. Kohl’s, Best Buy, no posting on 4Chan (understandable), even is blocked. I don’t want to pay for one of the many VPN services. Here’s the message I get at without sshuttle.

Access Denied

You don’t have permission to access “” on this server.
Reference #18.22ea4d17.1397361569.6bb6afe

VPN’s even provide vital Internet access to those facing government censorship, and worse.


Setting up a secure VPN server on a linux box can be a pain, and definitely takes longer than 5 minutes. sshuttle takes about that, maybe, if you type really slow.

So, for me, when I found sshuttle, my heart was set, the other options didn’t matter.

Setting Up sshuttle On Ubuntu Flavors

Doesn’t get any easier than this. Run the following in a terminal:

sudo apt-get install sshuttle

Now, we’re basically going to SSH to our VPS/server. Again, run this in the terminal:

sshuttle -r [email protected] 0/0 -vv

After running sshuttle -r [email protected] 0/0 -vv you’ll be asked for the root password. And sometimes, for whatever reason, it dies immediately after running the sshuttle command.

If sshuttle doesn’t work after running it the first time, run it again! It should work the second time. It could be something with the system I’m on, so hopefully this is isolated to me. :)

Setting Up sshuttle On MacOS

When someone donates me a new Macbook Pro 15″, I’ll start writing this stuff. :)
Update: April 21, 2014 Have a look at this post for using sshuttle with MacOS. Comes courtesy of Aaron Bull Schaefer in the comments.

And if I need a VPS?

You can find a cheap VPS easily with Google. DigitalOcean has them for $5/month, which will be plenty sufficient to use specifically for sshuttle.

ChunkHost is another good option for a cheap VPS.

Other Options

Lots of other options have been mentioned in the thread at Hacker News. Check em out. Some really good suggestions that are sometimes even cheaper!


Secure SSH By Disabling Password Logins

Make bruteforce attempts almost impossible

I always disable SSH password logins when setting up a new server, allowing authentication via private key only. It’s a good way to secure SSH all-around.

Disabling password logins in Ubuntu is extremely easy.

Open /etc/ssh/sshd_config with nano or vi. You’ll want to change options for 3 different directives, ChallengeResponseAuthentication, PasswordAuthentication, and UsePAM.

Find those directives in /etc/ssh/sshd_config and set them to the following:

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

Save sshd_config, and reload ssh:

sudo service ssh reload

That’s it, now you won’t be able to SSH to your server and login with a password, and neither will anyone else.

Of course, you’ll want to enable private key authentication, first. If you don’t, you’ll lock yourself out of your server.

DigitalOcean has a good article on how to do this.

Do you allow SSH password logins?

View Results

Loading ... Loading ...

Let’s go a bit farther and only allow specific users to login via SSH. We can do so with by adding a line like the one below to /etc/ssh/sshd_config:

AllowUsers firstuser seconduser thirduser

This will allow only three users to login: firstuser, seconduser, or thirduser. I usually add my AllowUsers directive towards the top of sshd_config.

After modifying /etc/ssh/sshd_config, reload ssh again like so:

sudo service ssh reload