What is Dokku?
Dokku is an open source platform as a service that runs a single server, similar to Heroku. Click here to visit their website.
Configure your VPS on a Linode server.
Some configurations are required in order to achieve a better performance in Dokku. The configurations are:
- Open your server’s dashboard in the Linode Manager.
Make sure your Linode is using KVM, not Xen, for virtualization.
In the “Rebuild” tab, select “Ubuntu 14.04 LTS”, set a root password, and rebuild.
Once your Linode has been created, click “Boot” and wait for it to complete.
SSH into your server as root and run the following commands:
When prompted, install Grub into the first hard drive.
apt-get update
apt-get -qq upgrade
apt-get install linux-image-virtual linux-image-extra-virtual
Back in your server’s dashboard, click “Edit” on its Configuration Profile
Change the “Kernel” option to “GRUB 2” and save your changes.
Lastly, reboot the Linode.
This changes are necessary because of Docker has a better performance with AUFS.
Install Dokku.
To install Dokku, access your Linode using ssh and run the following commands:
wget [https://raw.githubusercontent.com/dokku/dokku/v0.7.2/bootstrap.sh](https://raw.githubusercontent.com/dokku/dokku/v0.7.2/bootstrap.sh)
sudo DOKKU_TAG=v0.7.2 bash bootstrap.sh
After installing Dokku, you should configure the ssh access and the virtualhosts in order to respectively deploy and access your app through a browser. Open your browser and enter the IP address of your Linode. There are a few parts that you need to configure here. See the following images.
In your terminal run the following command:
cat ~/.ssh/id_rsa.pub
If you want to use a subdomain, check the option ‘Use virtualhost naming for apps’.
Create a new dokku application
In order to create a new application in the Dokku, it is necessary to access your server via ssh and run the following command:
dokku apps:create <app-name>
Install Postgres plugin
By default Dokku don’t come with a database. Therefore, we’ll need to install a plugin to work with Postgres or MySQL. Let’s stick with Postgres, run the following command to install the plugin:
sudo dokku plugin:install [https://github.com/dokku/dokku-postgres.git](https://github.com/dokku/dokku-postgres.git)
Run the following command to create a new service. It is necessary fill the service name, but it is not necessary to use the same app name. Create a new services with name, not necessary some name your app. Run the command:
dokku postgres:create <serviceapp-name>
Access your server to link the postgres service to your app. Run the following command:
dokku postgres:link <service-name> <app-name>
List of commands to postgres plugin
postgres:clone <name> <new-name> Create container <new-name> then copy data from <name> into <new-name>
postgres:connect <name> Connect via psql to a postgres service
postgres:create <name> Create a postgres service with environment variables
postgres:destroy <name> Delete the service and stop its container if there are no links left
postgres:enter <name> [command] Enter or run a command in a running postgres service container
postgres:export <name> > <file> Export a dump of the postgres service database
postgres:expose <name> [port] Expose a postgres service on custom port if provided (random port otherwise)
postgres:import <name> < <file> Import a dump into the postgres service database
postgres:info <name> Print the connection information
postgres:link <name> <app> Link the postgres service to the app
postgres:list List all postgres services
postgres:logs <name> [-t] Print the most recent log(s) for this service
postgres:promote <name> <app> Promote service <name> as DATABASE_URL in <app>
postgres:restart <name> Graceful shutdown and restart of the postgres service container
postgres:start <name> Start a previously stopped postgres service
postgres:stop <name> Stop a running postgres service
postgres:unexpose <name> Unexpose a previously exposed postgres service
postgres:unlink <name> <app> Unlink the postgres service from the app
Deploying your app
In order to deploy your app you will need to add a remote link.
git remote add dokku dokku@ip-or-domain:<app-name>
After that you can deploy your app with git push, for example:
git push dokku master
To run any rake, it is necessary that you access your server via ssh and run the following commands:
dokku run <app-name> rake <rake-task>
That’s all folks! Your application is up and running on a Linode Server.
References
Thanks to Dmitry Rocha, Marcle Rodrigues, and Will Soares.
We want to work with you. Check out our "What We Do" section!