# 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

- Chat Application
- Hono Backend
- Mithril.js Frontend
- Bun!
- Dockerized
- chat.freedoom.party

## What's already done?

- Server Setup
- DNS Records
- Dokku installation
- Git Remote Setup

## What We're Going to Do

- Create an app with Dokku
- Push the code
- Add SSL
- Chat!