Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -184,5 +184,5 @@ lxc info <instance>

- Emergency cleanup: use the `clean-lxd-environments` skill
- Expected test errors: use the `debug-test-errors` skill
- LXD provider docs: [`docs/user-guide/providers/lxd.md`](../../../../docs/user-guide/providers/lxd.md)
- LXD provider docs: [`docs/user-guide/providers/lxd/`](../../../../docs/user-guide/providers/lxd/)
- E2E troubleshooting: [`docs/e2e-testing/troubleshooting.md`](../../../../docs/e2e-testing/troubleshooting.md)
2 changes: 1 addition & 1 deletion docs/deployments/hetzner-demo-tracker/deployment-spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ The file is stored at `envs/torrust-tracker-demo.json` (git-ignored — contains

## Related Documentation

- [Hetzner server types and pricing](../../user-guide/providers/hetzner.md#available-server-types)
- [Hetzner server types and pricing](../../user-guide/providers/hetzner/#available-server-types)
- [HTTPS/TLS configuration](../../user-guide/services/https.md)
- [Grafana service](../../user-guide/services/grafana.md)
- [Prometheus service](../../user-guide/services/prometheus.md)
2 changes: 1 addition & 1 deletion docs/deployments/hetzner-demo-tracker/prerequisites.md
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,6 @@ torrust-tracker-demo.com. 3600 IN SOA hydrogen.ns.hetzner.com. dns.hetzner.com.

## Related Documentation

- [Hetzner Cloud Provider guide](../../user-guide/providers/hetzner.md)
- [Hetzner Cloud Provider guide](../../user-guide/providers/hetzner/)
- [Quick Start: Docker Deployment](../../user-guide/quick-start/docker.md)
- [Quick Start: Native Installation](../../user-guide/quick-start/native.md)
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

**Issue**: #405
**Parent Epic**: None
**Related**: [docs/user-guide/providers/hetzner.md](../user-guide/providers/hetzner.md), [docs/user-guide/quick-start/docker.md](../user-guide/quick-start/docker.md)
**Related**: [docs/user-guide/providers/hetzner/](../user-guide/providers/hetzner/), [docs/user-guide/quick-start/docker.md](../user-guide/quick-start/docker.md)

## Overview

Expand Down Expand Up @@ -118,7 +118,7 @@ See [`docs/deployments/hetzner-demo-tracker/post-provision/`](../deployments/het

## Related Documentation

- [Hetzner Cloud Provider](../user-guide/providers/hetzner.md)
- [Hetzner Cloud Provider](../user-guide/providers/hetzner/)
- [Quick Start: Docker Deployment](../user-guide/quick-start/docker.md)
- [Deployment Overview](../deployment-overview.md)
- [User Guide](../user-guide/README.md)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ Create `docs/user-guide/ssh-keys.md` covering:

#### Update: Hetzner provider guide

`docs/user-guide/providers/hetzner.md` — add a "SSH Key Requirements" section or
`docs/user-guide/providers/hetzner/` — add a "SSH Key Requirements" section or
callout box noting that Docker-based deployments require a passphrase-free key (or agent
forwarding) and linking to the new SSH keys page.

Expand Down Expand Up @@ -246,7 +246,7 @@ configured private key appears to be passphrase-protected.
### Phase 3: Documentation

- [ ] Create `docs/user-guide/ssh-keys.md` covering all workflows and security notes
- [ ] Update `docs/user-guide/providers/hetzner.md` with an SSH key requirements note
- [ ] Update `docs/user-guide/providers/hetzner/` with an SSH key requirements note
- [ ] Update `docs/user-guide/commands/create.md` to mention the passphrase warning
- [ ] Update `docs/user-guide/README.md` to link to the new `ssh-keys.md` page

Expand Down Expand Up @@ -276,11 +276,11 @@ configured private key appears to be passphrase-protected.
forwarding, separate key)
- [ ] `docs/user-guide/ssh-keys.md` exists and covers key requirements, workflows, and
security notes
- [ ] `docs/user-guide/providers/hetzner.md` references the SSH key requirements
- [ ] `docs/user-guide/providers/hetzner/` references the SSH key requirements

## Related Documentation

- [docs/deployments/hetzner-demo-tracker/commands/provision/problems.md](../deployments/hetzner-demo-tracker/commands/provision/problems.md) — root cause analysis and resolution for the Hetzner deployment failure
- [src/adapters/ssh/ssh/credentials.rs](../../src/adapters/ssh/ssh/credentials.rs) — `SshCredentials` struct
- [src/presentation/cli/controllers/create/subcommands/environment/handler.rs](../../src/presentation/cli/controllers/create/subcommands/environment/handler.rs) — where the warning is added
- [docs/user-guide/providers/hetzner.md](../user-guide/providers/hetzner.md) — Hetzner provider guide
- [docs/user-guide/providers/hetzner/](../user-guide/providers/hetzner/) — Hetzner provider guide
2 changes: 1 addition & 1 deletion docs/security/ssh-root-access-hetzner.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,5 +131,5 @@ Consider disabling root access after successful deployment:
## Related Documentation

- [ADR: Hetzner SSH Key Dual Injection Pattern](../decisions/hetzner-ssh-key-dual-injection.md)
- [Hetzner Provider Documentation](../user-guide/providers/hetzner.md)
- [Hetzner Provider Documentation](../user-guide/providers/hetzner/)
- [SSH Keys Guide](../tech-stack/ssh-keys.md)
2 changes: 1 addition & 1 deletion docs/tools/lxd-cleanup.md
Original file line number Diff line number Diff line change
Expand Up @@ -240,4 +240,4 @@ cargo run --bin lxd_cleanup -- environment-name

- [E2E Testing Documentation](../e2e-testing/README.md)
- [Preflight Cleanup Implementation](../../src/testing/e2e/tasks/virtual_machine/preflight_cleanup.rs)
- [LXD Provider Documentation](../user-guide/providers/lxd.md)
- [LXD Provider Documentation](../user-guide/providers/lxd/)
11 changes: 6 additions & 5 deletions docs/user-guide/providers/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ This directory contains provider-specific configuration guides.

## Available Providers

| Provider | Status | Description |
| --------------------------- | --------- | ------------------------------------------ |
| [LXD](lxd.md) | ✅ Stable | Local development using LXD containers/VMs |
| [Hetzner Cloud](hetzner.md) | 🆕 New | Cost-effective European cloud provider |
| Provider | Status | Description |
| ------------------------- | --------- | ------------------------------------------ |
| [LXD](lxd/) | ✅ Stable | Local development using LXD containers/VMs |
| [Hetzner Cloud](hetzner/) | 🆕 New | Cost-effective European cloud provider |

## Choosing a Provider

Expand All @@ -30,7 +30,7 @@ To add a new provider:
1. Create OpenTofu templates in `templates/tofu/<provider>/`
2. Add provider configuration types in `src/domain/provider/`
3. Update the template renderer for provider-specific logic
4. Add documentation in `docs/user-guide/providers/<provider>.md`
4. Add documentation in `docs/user-guide/providers/<provider>/README.md`

See the [contributing guide](../../contributing/README.md) for more details.

Expand All @@ -39,3 +39,4 @@ See the [contributing guide](../../contributing/README.md) for more details.
- [Quick Start Guides](../quick-start/README.md) - Docker and native installation guides
- [Commands Reference](../commands/README.md) - Available commands
- [SSH Keys](../../tech-stack/ssh-keys.md) - SSH key generation and management
- [Hetzner Post-Deployment](hetzner/post-deployment.md) - Manual steps for floating IPs and IPv6
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ This guide covers Hetzner-specific configuration for cloud deployments.

- Hetzner Cloud account ([sign up](https://www.hetzner.com/cloud))
- API token with read/write permissions
- SSH key pair (see [SSH keys guide](../../tech-stack/ssh-keys.md))
- SSH key pair (see [SSH keys guide](../../../tech-stack/ssh-keys.md))

## Create API Token

Expand Down Expand Up @@ -143,7 +143,7 @@ cat /var/log/cloud-init-output.log
2. **Restrict SSH access** - Consider using Hetzner Firewall
3. **Use strong SSH keys** - Ed25519 or RSA 4096-bit minimum
4. **Regular updates** - Keep server packages updated
5. **Disable root SSH access** - For production, see [SSH Root Access Guide](../../security/ssh-root-access-hetzner.md)
5. **Disable root SSH access** - For production, see [SSH Root Access Guide](../../../security/ssh-root-access-hetzner.md)

## SSH Key Requirements

Expand All @@ -163,13 +163,13 @@ private key will cause the `provision` step to fail with
# Press Enter twice for an empty new passphrase
```

2. **Forward your SSH agent** into the container (see [SSH Keys Guide](../ssh-keys.md#workflow-2--passphrase-protected-key-with-ssh-agent-forwarding-into-docker)).
2. **Forward your SSH agent** into the container (see [SSH Keys Guide](../../ssh-keys.md#workflow-2--passphrase-protected-key-with-ssh-agent-forwarding-into-docker)).

The `create environment` command will warn you if it detects a passphrase-protected key
so you can resolve this before reaching `provision`.

For more detail on generating keys, removing passphrases, and security considerations,
see the [SSH Keys Guide](../ssh-keys.md).
see the [SSH Keys Guide](../../ssh-keys.md).

## SSH Key Behavior

Expand All @@ -182,14 +182,15 @@ Hetzner deployments configure SSH access through two mechanisms:

**Why both?** If cloud-init fails, root SSH access provides a debugging path. Without it, a failed cloud-init would leave the server completely inaccessible.

**For stricter security**: You can disable root SSH access after deployment. See [SSH Root Access on Hetzner](../../security/ssh-root-access-hetzner.md) for instructions.
**For stricter security**: You can disable root SSH access after deployment. See [SSH Root Access on Hetzner](../../../security/ssh-root-access-hetzner.md) for instructions.

**Note**: The SSH key appears in your Hetzner Console under **Security** → **SSH Keys** with the name `torrust-tracker-vm-<environment>-ssh-key`.

## Related Documentation

- [Quick Start: Docker](../quick-start/docker.md) - Deploy to Hetzner using Docker
- [Quick Start: Native](../quick-start/native.md) - Deploy using native installation
- [SSH Keys Guide](../../tech-stack/ssh-keys.md) - SSH key generation
- [SSH Root Access Security](../../security/ssh-root-access-hetzner.md) - Disabling root access
- [LXD Provider](lxd.md) - Local development alternative
- [Quick Start: Docker](../../quick-start/docker.md) - Deploy to Hetzner using Docker
- [Quick Start: Native](../../quick-start/native.md) - Deploy using native installation
- [SSH Keys Guide](../../../tech-stack/ssh-keys.md) - SSH key generation
- [SSH Root Access Security](../../../security/ssh-root-access-hetzner.md) - Disabling root access
- [LXD Provider](../lxd/) - Local development alternative
- [Post-Deployment: Floating IPs and IPv6](post-deployment.md) - Manual steps for floating IPs and IPv6 UDP
Loading
Loading