Skip to content
Open
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
18 changes: 18 additions & 0 deletions docs/awesome-remnawave.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import WhiteboxGuide from '/docs/awesome-remnawave/\_install-guides/whitebox.md'
import XrayCheckerStatuspageGuide from '/docs/awesome-remnawave/\_install-guides/xray-checker-statuspage.md'
import McpRemnawaveGuide from '/docs/awesome-remnawave/\_install-guides/mcp-remnawave.md'
import InfraBillingGuide from '/docs/awesome-remnawave/\_install-guides/infra-billing.md'
import TerraformProviderRemnawaveGuide from '/docs/awesome-remnawave/\_install-guides/terraform-provider-remnawave.md'

<HeroSection
title="❤️ Awesome Remnawave"
Expand Down Expand Up @@ -388,6 +389,23 @@ import InfraBillingGuide from '/docs/awesome-remnawave/\_install-guides/infra-bi
<McpRemnawaveGuide />
</ProjectCard>

<ProjectCard
id="terraform-provider-remnawave"
title="Terraform Provider for Remnawave"
description="Community Terraform provider for managing Remnawave users, nodes, hosts, squads, billing, subscriptions, templates, panel settings, and more as version-controlled infrastructure, with import support and acceptance tests against real Remnawave backends."
author="batonogov"
authorLink="https://github.com/batonogov"
image="/awesome/terraform-provider-remnawave.webp"
githubRepo="batonogov/terraform-provider-remnawave"
links={{
github: 'https://github.com/batonogov/terraform-provider-remnawave',
docs: 'https://registry.terraform.io/providers/batonogov/remnawave/latest',
website: 'https://context7.com/batonogov/terraform-provider-remnawave'
}}
>
<TerraformProviderRemnawaveGuide />
</ProjectCard>

<ProjectCard
id="version-regex-generator"
title="Version Regex Generator"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
### What it manages

- **Resources and data sources** for users, nodes, hosts, squads, config profiles, subscriptions, billing, panel settings, API tokens, metadata, HWID devices, snippets, passkeys, and node plugins
- **Import support** for bringing existing panel objects under Terraform management
- **API token or username/password authentication**, with automatic JWT refresh for login-based sessions
- **Acceptance-tested compatibility** across multiple real, digest-pinned Remnawave backends; see the [current compatibility matrix](https://github.com/batonogov/terraform-provider-remnawave#compatibility)
- **Terraform Registry documentation** indexed by [Context7](https://context7.com/batonogov/terraform-provider-remnawave) for AI coding assistants

### Quick start

Add the provider to your Terraform configuration:

```hcl
terraform {
required_providers {
remnawave = {
source = "batonogov/remnawave"
version = ">= 1.4.0, < 2.0.0"
}
}
}
```

Keep credentials out of configuration and shell history. For this tutorial,
use a token with `system:read`, `users:read`, and `users:write` scopes; a
wildcard token also works.

```bash
export REMNAWAVE_ENDPOINT="https://panel.example.com"
read -rsp "Remnawave API token: " REMNAWAVE_API_TOKEN
export REMNAWAVE_API_TOKEN
printf '\n'
```

Create a Remnawave user as code:

```hcl
resource "remnawave_user" "example" {
username = "john-doe"
expire_at = "2030-01-01T00:00:00.000Z"
traffic_limit_bytes = 10737418240
traffic_limit_strategy = "MONTH"
description = "Managed by Terraform"
}
```

Then initialize and review the plan before applying it:

```bash
terraform init
terraform plan
terraform apply
unset REMNAWAVE_API_TOKEN
```

See the complete resource and data-source reference in the [Terraform Registry](https://registry.terraform.io/providers/batonogov/remnawave/latest).
Binary file added static/awesome/terraform-provider-remnawave.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.