Introducing TNS Panel 0.1.0

releaseannouncementhosting control panel

What 0.1.0 does

TNS Panel is a hosting control panel for people who run servers for other people: hosting companies, resellers and agencies. It replaces panels that stopped receiving updates, and it is built around three ideas: every client is isolated from every other client, every change the panel makes is declared and reconciled instead of scripted once, and every action leaves a record.

This first release runs on a single server with AlmaLinux 9 or 10, or Rocky Linux 9 or 10. It covers the day-to-day work of a hosting business:

  • Sites: one PHP-FPM pool per client, Git deploy, staging, a one-click installer and containers for Node.js, Python and Ruby apps.
  • Mail: Postfix, Dovecot, Rspamd and ClamAV with SPF, DKIM and DMARC published automatically, plus webmail.
  • DNS and certificates: BIND with DNSSEC and a mirror to Cloudflare.
  • Databases, FTPS and backups: MariaDB and PostgreSQL, FTPS only, and restic backups with self-service restore.
  • Reselling: plans, quotas, resellers, white-label branding and a WHMCS module.
  • Migration: readers for CWP, Plesk, DirectAdmin, cPanel and others, including migration from a single account without access to the old server.

The full list is in the changelog, and each function has its own page in the wiki.

How it is built

The panel is written in Go. The API runs without privileges and the agent that changes the system is a separate process with a closed set of verbs. There is no shell command built from user input. Each client gets its own UNIX user, its own PHP pool and its own resource limits through cgroups, and the file-system boundary is the client, not the server.

What is not in this release

0.1.0 is a single-node release. Multi-node clusters, the Debian and Ubuntu branch and the Windows branch are not part of it, and we do not publish dates for them here. Some functions listed in the wiki are marked as coming soon, and that mark is the source of truth.

Try it

Read the installation guide, look at the pricing or download the installer. If you are coming from CWP, start with migrating from CWP. To follow what changes, subscribe to the feed of this blog or watch the changelog.

All posts · Changelog