Deploying

Your Dumb Ideas

With Dokku

Who am I?

Dave Smith-Hayes

  • Father
  • Developer
  • JavaScript Enjoyer

What is deploying?

Releasing software to be used.

How it works for Web

  • Have a DNS record point to an IP
  • Have a webserver runnning at that IP
  • Have that webserver proxy requests to the application

My history of deploying

  • cPanel File Manager
  • FTP to Shared Hosting
  • $ git pull
  • Jenkins & Ansible build VM Images
  • Packer & Terraform build Containers

Doing it Yourself

What do you need?

  • A domain
  • An internet connected server
  • A webserver (NGiNX, Apache, Caddy, etc)
  • Patience

Dokku

Self-hosted Platform as a Service (PaaS)

Your very own Heroku*

*I have never used Heroku

What Dokku Does

  • Creates a dokku user on your system
  • Installs all the services for running Dokku
    • Docker
    • NGiNX

How Dokku Works

  • Sets up Application
  • Becomes a Git remote repository
  • Builds and deploys the app behind NGiNX

It does a lot more than this

Builders

  • Heroku Buildpacks
  • Dockerfile
  • Nixpacks

It does a lot more than this

Plugins

  • Let's Encrypt
  • Databases (MySQL, Postgres)

It does a lot more than this

Demo

Anatomy of the Server

  • Linode VPS
  • Debian
  • Nameservers

Anatomy of the Application