Corentin BARNICHON 0d7b62539d first commit
2026-04-16 18:13:36 +02:00

82 lines
3.8 KiB
Markdown

# Vito Technitium DNS Plugin
A [Vito](https://github.com/vitodeploy/vito) plugin that adds [Technitium DNS Server](https://technitium.com/dns/) as a DNS provider, enabling zone and DNS record management directly from Vito.
## Summary
Vito ships with Cloudflare as a built-in DNS provider. This plugin adds Technitium as an additional option using Vito's plugin system — no core files are modified.
Once enabled, the plugin registers Technitium in the DNS provider list. You can then connect your self-hosted Technitium instance, import zones, and create, update, or delete DNS records from the Vito dashboard.
### Key differences from Cloudflare
- **Self-hosted:** Technitium runs on your own infrastructure. You provide the server URL and port.
- **Authentication:** Uses a single API token (generated from the Technitium web console), passed as a query parameter.
- **Zone-based:** Technitium manages authoritative zones. Only Primary zones are listed by default.
- **No proxy support:** Unlike Cloudflare, Technitium is a pure DNS server. The `proxied` flag is always `false`.
- **Record identification:** Technitium does not assign numeric IDs to records. Records are identified by their domain name, type, and data. This plugin uses base64-encoded composite IDs internally.
### Supported operations
- Connect and authenticate with Technitium HTTP API
- List and retrieve Primary zones
- Create, update, and delete DNS records (A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, PTR)
### Supported record types
| Type | Content field | Priority |
|-------|--------------------------|----------|
| A | IPv4 address | — |
| AAAA | IPv6 address | — |
| CNAME | Target hostname | — |
| MX | Mail server hostname | ✓ |
| TXT | Text value | — |
| NS | Name server hostname | — |
| SRV | Target hostname | ✓ |
| CAA | `flags tag "value"` | — |
| PTR | Pointer name | — |
## Setup
1. Open your Technitium DNS web console (usually `http://your-server:5380`).
2. Navigate to **Administration → Sessions → Create API Token** and generate a non-expiring token.
3. Enable the plugin in Vito (**Admin → Plugins**).
4. Add a new DNS provider, select **Technitium**, and fill in:
- **Server URL:** The full URL with port (e.g. `http://dns.example.com:5380`)
- **API Token:** The token you generated
- **Zone Filter** *(optional)*: Comma-separated list of zones to show
## Zone Filter
Technitium may host many zones (including internal, secondary, or forwarder zones). By default, the plugin only shows **Primary** zones and excludes internal ones.
If you want to further restrict which zones appear in Vito, use the optional **Zone Filter** field. Enter a comma-separated list of zone names (e.g. `example.com, mysite.org`). Only matching zones will be shown.
If the field is left empty, all Primary zones are returned.
## Security Notes
- The API token grants full access to your Technitium DNS server. Keep it secure.
- If your Technitium instance is not exposed to the internet, make sure the Vito server can reach it on the configured port.
- Consider using HTTPS if the Technitium web console is accessible over the network (Technitium supports TLS certificates).
## Development
To develop locally, place the plugin at:
```
app/Vito/Plugins/LiittleCookie/VitoTechnitiumDns/
```
The namespace must be `App\Vito\Plugins\LiittleCookie\VitoTechnitiumDns`.
Then go to **Admin → Plugins → Discover** to install and enable it.
## Community & Open Source
This plugin is community-built and open source. It is not officially maintained by the Vito core team.
Contributions, bug reports, and feature requests are welcome.
Licensed under the same terms as the Vito project.