Getting started

Installation

Install Jokku on a fresh server with one command, then run commands from your laptop over SSH.

Requirements#

  • A fresh Ubuntu or Debian server.
  • Ports 80 and 443 free.
  • KVM. Bare metal works, or a virtual machine with nested virtualization turned on (on Proxmox, set the CPU type to host).
  • A CPU from 2011 or newer, which Firecracker needs: Intel Sandy Bridge or AMD Bulldozer and later. Jokku is tested on Intel Skylake and newer.

Install#

Terminal
curl -fsSL https://raw.githubusercontent.com/wes/jokku/main/install.sh | sudo sh

That's it. The SSH keys you used to log in to the server can now deploy apps and run commands.

The installer downloads the jokku binary, checks it against the release's checksums, then runs jokku setup. Setup creates the jokku user, its directories and services, and installs the pinned Firecracker and BuildKit that Jokku runs with. Each step checks before it changes anything, so running it again is safe.

You can set a few options in the environment:

VariableWhat it does
JOKKU_VERSION=v0.5.0Install a specific release instead of the latest.
JOKKU_IMPORT_KEYS=0Don't give the SSH keys you logged in with access to Jokku.
Terminal
curl -fsSL https://raw.githubusercontent.com/wes/jokku/main/install.sh | sudo JOKKU_VERSION=v0.5.0 sh

Run commands#

Run commands from your laptop over SSH, with nothing installed locally, or on the server itself with sudo jokku <command>:

Terminal
ssh jokku@your-server apps:list    # from your laptop
sudo jokku apps:list               # on the server

The rest of these docs assume this alias on your laptop:

Terminal
alias jokku='ssh -t jokku@your-server'
jokku apps:list

Give others access#

To let someone else deploy, add their public key:

Terminal
cat alice.pub | jokku ssh-keys:add alice
jokku ssh-keys:list
jokku ssh-keys:remove alice

Every key is an admin, as in Dokku without its ACL plugin. The key's name is recorded on each deploy, so you can see who shipped what.

Ports#

PortWhereUsed for
22/tcpfirst serverSSH: git push and commands
80, 443/tcpevery server that takes web trafficHTTP and HTTPS
7443/tcpfirst serverServers joining the cluster
51820/udpevery serverThe encrypted network between servers

The last two only matter once you add more servers.

Repair a server#

jokku setup brings the server to the state the installed release needs. Run it again if something on the server was changed or removed:

Terminal
sudo jokku setup