Files
dokploy/README.md
T
2026-08-18 16:12:55 +02:00

77 lines
1.3 KiB
Markdown

# dokploy
Terraform + Ansible setup for a self-hosted [Dokploy](https://dokploy.com/) instance.
## Setup
1. Create a Hetzner Cloud API key
2. Create a Cloudflare DNS key with `Zone.DNS` edit permission
### Local setup
Secrets live in `terraform/.env` and are injected as `TF_VAR_*` environment
variables into the local shell session:
```env
TF_VAR_hcloud_token=...
TF_VAR_cloudflare_api_token=...
TF_VAR_domain_name=...
```
#### direnv
Setup direnv on the development machine and add `terraform/.envrc`:
```env
dotenv_if_exists .env
```
Then load the variables into the shell:
```sh
cd terraform
direnv allow
```
Run Terraform / Tofu manually:
```sh
tofu init
tofu plan
tofu apply
```
#### Without direnv
Load the file manually, scoped to a single command:
```sh
cd terraform
set -a; . ./.env; set +a
tofu plan
```
Or use a wrapper that keeps the variables contained to the `tofu` subprocess:
```sh
#!/bin/sh
set -a
. ./.env
set +a
exec tofu "$@"
```
## CI/CD
CI reads the same variables from the git forge's secret store — no `.env` file is needed.
Add the necessary variables
GitHub Actions example:
```yaml
env:
TF_VAR_hcloud_token: ${{ secrets.TF_VAR_HCLOUD_TOKEN }}
TF_VAR_cloudflare_api_token: ${{ secrets.TF_VAR_CLOUDFLARE_API_TOKEN }}
TF_VAR_domain_name: ${{ secrets.TF_VAR_DOMAIN_NAME }}
```