After iGTD was abandoned my GTD workflow was in disarray for a while. I wasn’t planning on paying a subscription for or buying software which used to be free..
So I quickly snapped up Evernote and Google Tasks, but, I was missing a quick way to empty my head and review what I needed to get done ASAP. Everything became dependent on notes and my own memory. And if you’re like me (or human for that matter) the latter isn’t a great way to manage a long and never ending list of tasks. After a few years the lists of things to do just stacked up. I kept forgetting things, missed opportunities, and all-in-all my life became messy again. Enter the Raspberry Pi and My Tiny Todo. (Edit: This’ll work on basically any linux server under your control, not just the RasPi.) Don’t know what Getting Things Done is? I recommend reading the book by David Allen.
The installation couldn’t be any easier in my opinion. Note: This tutorial assumes you have Apache or Nginx already installed and configured. There are numerous tutorials and resources on the web if you don’t. You have Apache or Nginx running? Great! Fire up your command line application, SSH into the RasPi if needed, and enter the following commands:
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install php5 sqlite php5-sqlite
This’ll update the repository lists on your RasPi, upgrade any packages you might have installed, and will download and install PHP5, SQLite and a plugin so the 2 applications can work together. Next we grab the My Tiny Todo files, unzip em and remove the downloaded zipfile again:
$ wget http://mytinytodo.googlecode.com/files/mytinytodo-v1.4.2.zip
$ unzip mytinytodo-v1.4.2.zip
$ rm mytinytodo-v1.4.2.zip
Rename the folder if you like, by default it’ll be called ‘mytinytodo’, you can go with anything you like though. For this tutorial we’ll be using ‘gtd’ as an example:
$ mv mytinytodo gtd
And then we move the folders and files into the right place, and give them the correct privileges so Apache/Nginx, the PHP files and SQLite can talk to each other without any issues.
$ sudo mv gtd/ /var/www/
$ cd /var/www/gtd/
$ sudo chown -R www-data:www-data ./*
That last command changes ownership of every file and folder in the current directory to user www-data in group www-data, the default user and group for an Apache webserver. You can check if everything went well by issuing the following command:
$ ls -la
This should show you all the files in the current directory and who owns them. Now we repeat this step once again, as the folder itself also needs to be owned by www-data.
$ cd ..
$ sudo chown www-data:www-data gtd/
And you’re done with the terminal for now! Keep it open though, as we need to do 1 more tiny thing after the configuration screen. Fire up your favorite webbrowser and point it to the IP of your RasPi, followed by /gtd/setup.php. If you’re browsing on the Raspberry Pi itself, just go here: http://0.0.0.0/gtd/setup.php. (Change the IP to that of your Raspberry Pi if you’re on another machine on the same local network.) This’ll give you an initial setup needed to configure and start My Tiny Todo. Choose SQLite and let it do it’s install-magic. We’re almost there now!
Now return to the command line and enter this.
$ sudo rm /var/www/gtd/setup.php
This’ll remove the setup.php file so other people can’t reconfigure your installation, safety first! And you’re done! You can now enter tasks, make lists and review your work. If your server is open to the internet and/or you don’t want family members, other people at work, people living in your house snooping on your projects, there’s one more thing you’ll definitely need to do. Go to ‘settings’ on the top-right of the My Tiny Todo screen (in your browser, remember). Go to ‘Password protection’ and click the ‘Enabled’ button. Next, enter a password of your choice. and hit the ‘Submit changes’ button. Now you’re safe from people snooping on you.
I hope this tutorial’ll help you get things done. If your webserver is open to the internet it might be wise to checkout how to enable SLL (https) so the password won’t go over the web unencrypted. Enjoy!
Edit: If you open up your server to the internet, you can access you tasks via any computer and smartphone (iOS, Android, Windows Phone) by surfing to your IP. Setting up a dynamic DNS service will really make your life a lot easier then.