Files
dokku/docs/getting-started/installation/index.md

72 lines
3.5 KiB
Markdown
Raw Normal View History

# Getting Started with Dokku
## What is Dokku?
Dokku is an extensible, open source Platform as a Service that runs on a single server of your choice. Dokku supports building apps on the fly from a `git push` via either Dockerfile or by auto-detecting the language with Buildpacks, and then starts containers based on your built image. Using technologies such as nginx and cron, Web processes are automatically routed to, while background processes and automated cron tasks are also managed by Dokku.
## System Requirements
2016-01-07 13:21:43 +02:00
To start using Dokku, you'll need a system that meets the following minimum requirements:
- A fresh installation of any of the following operating systems:
- [Ubuntu 20.04/22.04](https://www.ubuntu.com/download)
- [Debian 10+ x64](https://www.debian.org/distrib/)
- A server with one of the following architectures
- AMD64 (alternatively known as `x86_64`), commonly used for Intel cloud servers
- ARMV8 (alternatively known as `arm64`), commonly used for Raspberry PI and AWS Graviton
To avoid memory pressure during builds or runtime of your applications, we suggest the following:
- At least 1 GB of system memory
2022-08-18 23:43:49 +02:00
- If your system has less than 1GB of memory, you can use [this workaround](/docs/getting-started/advanced-installation.md#vms-with-less-than-1-gb-of-memory).
Finally, we recommend attaching at least one domain name to your server. This is not required, but using a domain name will make app access easier. When connecting a domain, either a single domain or a wildcard may be associated to the server's IP.
- Wildcard domain (`*.domain.tld` A Record): will allow access to apps via `$APP.domain.tld`.
- Single domain (`domain.tld` A or CNAME Record): will result in apps being accessed via `domain.tld:$RANDOM_PORT`.
Please see the [dns documentation](/docs/networking/dns.md) and [domains documentation](/docs/configuration/domains.md) for more details.
## Installing the latest stable version
This is the simple method of installing Dokku. For alternative methods of installation, see the [advanced install guide](/docs/getting-started/advanced-installation.md#configuring).
### 1. Install Dokku
To install the latest stable version of Dokku, you can run the following shell commands:
2014-12-19 15:09:38 -05:00
```shell
# for debian systems, installs Dokku via apt-get
Release 0.33.8 # History ## 0.33.8 Install/update via the bootstrap script: ```shell wget -NP . https://dokku.com/install/v0.33.8/bootstrap.sh sudo DOKKU_TAG=v0.33.8 bash bootstrap.sh ``` ### Bug Fixes - #6675: @josegonzalez Remove the need for executing crontab as root - #6660: @josegonzalez Handle case where systemctl isn't in /usr/bin - #6659: @josegonzalez Add missing cron:set command - #6658: @josegonzalez Execute go get/build with mod in readonly mode - #6642: @josegonzalez Use correct annotations key for the ingress chart - #6631: @josegonzalez Correctly use cache volume for herokuish builds - #6629: @josegonzalez Use smaller reference to image pull secrets in secret naming - #6628: @josegonzalez Ensure non-web processes do not attempt to perform web logic in k3s templates - #6623: @josegonzalez Do not allow reusing the same scheme:host-port mappings when setting ports - #6624: @taraszka Install jq in vagrant vm - #6614: @josegonzalez Correct issue where --force-tty was not properly supported by run:detached calls ### New Features - #6673: @josegonzalez Add image version as label to built images - #6640: @josegonzalez Add initial support for injecting keda addons - #6662: @josegonzalez Allow limiting letsencrypt to certain domains when using openresty as a proxy - #6643: @josegonzalez Add ability to add extra labels - #6639: @josegonzalez Add support for setting underscores-in-headers for nginx, openresty, and k3s - #6634: @josegonzalez feat: install keda addon in k3s cluster - #6616: @josegonzalez Ensure referenced images get updated by dependabot - #6613: @josegonzalez Add a helper binary to deploy a test app for local development ### Refactors - #6644: @josegonzalez Only apply the cluster issuers helm chart when setting letsencrypt properties - #6641: @josegonzalez Rename image pull secrets to standardize on secret naming pattern - #6626: @josegonzalez Copy code into initial base image via docker build ### Documentation - #6656: @holamendi Fix typo in builder management docs - #6652: @Calyhre Added dokku-mdns to list of community plugins - #6649: @undercontr Added detach flag to Docker installation documentation ### Dependencies - #6671: @josegonzalez Update dokku dependencies - #6672: @dependabot[bot] chore(deps): bump golang from 1.22.0 to 1.22.1 in /tests/apps/go-fail-predeploy - #6670: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.62.0 to 1.62.1 in /tests/apps/gogrpc - #6669: @dependabot[bot] chore(deps): bump google.golang.org/protobuf from 1.32.0 to 1.33.0 in /tests/apps/gogrpc - #6668: @dependabot[bot] chore(deps): bump golang from 1.22.0 to 1.22.1 in /tests/apps/zombies-dockerfile-tini - #6667: @dependabot[bot] chore(deps): bump golang from 1.22.0 to 1.22.1 in /tests/apps/gogrpc - #6664: @dependabot[bot] chore(deps): bump golang from 1.22.0 to 1.22.1 in /tests/apps/go-fail-postdeploy - #6666: @dependabot[bot] chore(deps): bump pyparsing from 3.1.1 to 3.1.2 in /docs/_build - #6665: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.12 to 9.5.13 in /docs/_build - #6663: @dependabot[bot] chore(deps): bump golang from 1.22.0 to 1.22.1 in /tests/apps/zombies-dockerfile-no-tini - #6661: @josegonzalez Bump go modules - #6654: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.7 to 10.7.1 in /docs/_build - #6653: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.20.0 to 0.21.0 in /plugins/common - #6651: @dependabot[bot] chore(deps): bump python-dateutil from 2.9.0 to 2.9.0.post0 in /docs/_build - #6648: @dependabot[bot] chore(deps): bump python-dateutil from 2.8.2 to 2.9.0 in /docs/_build - #6645: @dependabot[bot] chore(deps): bump rack from 2.2.8 to 2.2.8.1 in /tests/apps/ruby - #6646: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.11 to 9.5.12 in /docs/_build - #6638: @josegonzalez chore: bump go modules - #6635: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 42.0.4 to 42.0.5 - #6636: @dependabot[bot] chore(deps): bump timberio/vector from 0.36.X-debian to 0.36.0-debian in /plugins/logs - #6637: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.19.0 to 0.20.0 in /plugins/common - #6619: @dependabot[bot] chore(deps): bump traefik from v2.10 to 2.11 in /plugins/traefik-vhosts - #6622: @josegonzalez chore(deps): bump timberio/vector from 0.35.X-debian to 0.36.X-debian in /plugins/logs - #6618: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.10 to 9.5.11 in /docs/_build - #6621: @dependabot[bot] chore(deps): bump byjg/easy-haproxy from 4.3.0 to 4.4.0 in /plugins/haproxy-vhosts - #6610: @dependabot[bot] chore(deps): bump helm.sh/helm/v3 from 3.14.1 to 3.14.2 in /plugins/scheduler-k3s
2024-03-06 16:40:18 +00:00
wget -NP . https://dokku.com/install/v0.33.8/bootstrap.sh
sudo DOKKU_TAG=v0.33.8 bash bootstrap.sh
```
The installation process takes about 5-10 minutes, depending upon internet connection speed.
### 2. Setup SSH key and Virtualhost Settings
Once the installation is complete, you should configure an ssh key and set your global domain.
```shell
# usually your key is already available under the current user's `~/.ssh/authorized_keys` file
cat ~/.ssh/authorized_keys | dokku ssh-keys:add admin
# you can use any domain you already have access to
# this domain should have an A record or CNAME pointing at your server's IP
dokku domains:set-global dokku.me
# you can also use the ip of your server
dokku domains:set-global 10.0.0.2
# finally, you can use sslip.io to get subdomain support
# as you would with a regular domain name
# this would be done by appending `.sslip.io` to your ip address
dokku domains:set-global 10.0.0.2.sslip.io
```
See the [user management](/docs/deployment/user-management.md#adding-ssh-keys) and [domains documentation](/docs/configuration/domains.md#customizing-hostnames) for more information.
### 3. Deploy your first application
2022-01-23 22:38:04 -05:00
At this point, you should be able to [deploy to the Dokku installation](/docs/deployment/application-deployment.md).