As a freelancer I have one primitive motive. I want to do work and get paid. Getting paid means I need to generate invoices and keep track of them. I’ve tried to manage my invoices via spreadsheets and documents, but keeping track of my payments in a series of disconnected files is a fragile and inefficient process. Simple Invoices provides a solution to this.
Simple Invoices is a relatively young project, and working with it requires that you’re willing to do some manual configurations and tolerate the occasional problem.
To work with and install the application, you need to be familiar with running a web server on OS X, Windows, or Linux. The next section, Web Server Required provides some out of the box server packages that allow you to run a server environment on your personal computer. It’s point and click easy and perfect for an individual user.
Not up for running a web server, but still need to find a reliable invoicing application? No problem. Visit www.simpleinvoices.com for a list of hosted solutions.
Let’s get started.
Web Server Required
Simple Invoices is a web application that requires Apache, PHP, and MySQL to function. Even if you’re not a system administrator, you can still run a web server on your computer, regardless of your operating system. Windows users can get the required software by installing WAMP from www.wampserver.com. OS X users can install MAMP from www.mamp.info. Linux users can install Apache, MySql, and PHP5 using their distribution’s software repositories.
The database administrative tool, phpMyAdmin makes managing the MySQL database intuitive. Both the WAMP and MAMP installers contain phpMyAdmin, and we’ll use it to setup our databases.
Take a moment to setup your web server before continuing with the Simple Invoices installation.
Install Simple Invoices
Our first step will be to prepare the MySQL database. Open a web browser and navigate to http://localhost/phpmyadmin. Replace localhost with the actual server address. A login screen will display and will prompt you for a user name and password. Enter the the root login information for your MySQL install.
MAMP users might try root for both the user name and password. WAMP users might try root with no password. If you plan on keeping your WAMP or MAMP servers installed, setting new root passwords for your MySQL database is a good idea, even if you do not allow external connections to your server.
After you log in to phpMyAdmin, you will see a list of databases on the left sidebar; the main content window displays a set of tabs, including Databases, SQL, and Status.
Let’s create the database.
- Click on the Privileges tab to display a list of all users and associated access permissions.
- Find the Add a New User link and click on it. The Add New User page displays.
- Complete the following fields:
- User Name: enter simpleinvoices
- Host: select Local
- Password: specify a password for the user; then retype it in the field provided
- Database for User: select the Create database with same name and grant all privileges option
- Scroll to the bottom of the page and click the Go button.
This procedure creates the database user and the database at the same time. If you wanted to use a database name that was different than the user name, then could have selected None for the Database for user configuration and added the database manually via the Databases tab in phpMyAdmin.
If you prefer to work with MySQL directly, the SQL code for the steps we just ran is (the *** in the first line is the password):
CREATE USER 'simpleinvoices'@'localhost' IDENTIFIED BY '***';
GRANT USAGE ON *.* TO 'simpleinvoices'@'localhost' IDENTIFIED BY
'***' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0
MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;CREATE DATABASE
IF NOT EXISTS `simpleinvoices`;
GRANT ALL PRIVILEGES ON `simpleinvoices`.* TO 'simpleinvoices'@'
Now that the database is setup, let’s download the stable version of Simple Invoices by visiting www.simpleinvoices.org and following the Download link. The versions are identified by the year and version. At the time of this writing, the stable version is 2010.1.
Unzip the Simple Invoices download file into a subdirectory on your web server. Because I like to install a lot of software, I like to keep the application name in my directory structure, so my example installation installs to a directory named simpleinvoices. That makes my installation available at http://localhost/simpleinvoices. Pick a directory path that makes sense for you.
Not sure where the root of your web server resides on your server? Here are some of the default locations for the various server environments:
- WAMP – C:wampwww
- MAMP – /Applications/MAMP/htdocs
- Linux – /var/www
Linux users will need to set the ownership of the tmp directory to the web user and make the tmp directory writable. For an Ubuntu system, the appropriate commands are:
chown -R www-data tmp
chmod -R 775 tmp
The command syntax assumes we’re working from the Simple Invoices installation directory on the web server. The web user on Ubuntu and other Debian-based systems is www-data. The -R option in both commands applies the permissions to all sub-directories and files. With the chmod command, you are granting write access to the web user.
If you have problems or feel like being less secure, you can reduce this step down to one command: chmod -R 777 tmp.
We’re almost ready to open the Simple Invoices installer, but before we go to the web browser, we need to define the database connections in the config/config.ini file.
At a minimum, we need to specify the database.params.username and database.params.password with the values we used to setup the database. If you skip this step and try to open Simple Invoices in your web browser, you will receive an error message indicating that your config.ini settings are incorrect.
The following screenshot shows the relevant settings in confi.ini.
Now, we’re ready to start Simple Invoices and step through the graphical installer.
- Open a web browser and navigate to your installation (for example: http://localhost/simpleinvoices). Step 1: Install Database will display in the browser.
- Review the database connection information and click the Install Database button. Step 2: Import essential data displays.
- Click the Install Essential Data button to advance the installation. Step 3: Import sample data displays.
- We can choose to import sample data or start using the application. The sample data contains a few example billers, customers, and invoices. We’re going to set all that up from scratch, so I recommend you click the Start using Simple Invoices button.
At this point the Simple Invoices dashboard displays with a yellow note that instructs us to configure a biller, a customer, and a product before we create our first invoice. See the following screenshot.
You might notice that the default access to Simple Invoices is not protected by a username and password. We can force authentication by adding a user and password via the People > Users screen. Then set the authentication.enabled field in config.ini equal to true.