82 lines
3.8 KiB
Markdown
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.
|