Unofficial

WebPortico

The Ultimate Web Server Revolution for QNAP

Your QNAP. Fully Unleashed. Zero Compromises.

Stop squeezing every site into one PHP. Transform your network-attached storage into a high-performance web development and hosting powerhouse with 1-click port takeover, multi-PHP isolation, lightning-fast caching demons, and automated enterprise DNS control.

See an example site →A free application from the QNAP Utilities repository. Requirements: QNAP NAS with an Intel or AMD processor, x86_64 architecture, and QTS 6.0 or QuTS hero 6.0 or later.

WebPortico's Front server and ports page: the Take over ports 80 and 443 card moves QTS's administration from 443 to 44443 and QTS's Web Server from 80 to 8880, and WebPortico takes 80 and 443.
Front server and ports. Take over ports 80 and 443 lists each port that moves, and where to, before you click.
WebPortico's Sites page: nine sites on one NAS, on PHP 8.4 and PHP 8.5, static and reverse proxy, each with its folder, web server and certificate.
Sites. PHP 8.4 and PHP 8.5 sites side by side with static sites and reverse proxies, each PHP site with a PHP-FPM service of its own.
WebPortico's Databases page: the MariaDB card with its settings, and Percona Server under it.
Database servers. MariaDB's buffer pool, connections and slow-query log, set in the panel, with Percona Server below.
A site's Cache tab: Valkey, memcached, APCu and OPcache with their use and hit rates, a Flush button for each, and the page cache's state.
A site's Cache tab. What Valkey, memcached, APCu and OPcache hold for this site, with Flush for each.
The Add site wizard's Website step: Reverse proxy chosen, the list of apps on this NAS open, the target http://127.0.0.1:8096 filled in for Jellyfin, and websockets on.
Add site. A reverse proxy to an app on this NAS: pick the app, and its port and websockets are filled in.
The Add site wizard's DNS step for cf.example.test: the registrar and DNS servers at Cloudflare, the records added with an API token, the NAS's public addresses and the six steps to make the token.
Add site, DNS step. The domain is at Cloudflare: WebPortico walks you to an API token and writes the records with it when you apply.
A site's PHP tab: Show PHP errors on the page ticked, every error reported to the site's PHP log, and the note that Xdebug is ticked for this site.
A site's PHP tab. PHP errors on the page and in the site's PHP log, and Xdebug loaded for this site alone.

The real WebPortico 0.16.0 panel with demonstration data.

Demons of Speed & Power

  • 1-Click Server Replacement

    Claim Ports 80 and 443.

    Instantly replace QTS's own servers on ports 80 and 443 with a modern, high-throughput environment. One click transitions your server core into a streamlined production-grade engine—no manual config hell, your storage untouched, and one click takes you back.

  • Multi-PHP Version Freedom (PHP 8.1 to 8.5)

    Run Every Project, Side by Side.

    Legacy spaghetti code or bleeding-edge framework? Switch seamlessly between PHP 8.1, 8.2, 8.3, 8.4 and 8.5, site by site. Isolate environments per site with custom execution pools, dedicated php.ini overrides, and extensions no other site sees.

  • Enterprise Database Suite (MariaDB, Percona, PostgreSQL)

    Raw Query Velocity.

    Deploy enterprise-ready database backends—battle-tested MariaDB, high-concurrency Percona Server, or robust PostgreSQL. Tune the buffer pool, connections and slow-query log from the panel, and connect over a local socket.

  • PECL & Extension Power-House (Imagick, APCu, OPcache)

    Unleash the Speed Demons.

    Pre-compiled and ready to rumble. Load PECL extensions on demand, harness OPcache byte-code caching, cache database results in Memcached and Valkey (Redis), and manipulate heavy graphics instantly via ImageMagick. Your apps won't just run—they'll fly.

  • Native Reverse Proxy & QNAP Integration

    Seamless Traffic Routing.

    Route external traffic cleanly through an intelligent reverse proxy layer directly into your QNAP infrastructure. Manage internal service routing, SSL termination, and WebSocket upgrades with absolute precision.

  • Automated DNS Records (OVHcloud & Cloudflare API)

    Records Written in Seconds.

    Stop manually copying A-records. WebPortico hooks straight into OVHcloud and Cloudflare APIs. Add a new domain via the dashboard, and let the system provision DNS records, root mappings, and Let's Encrypt certificates, with every record shown in the plan first.

  • PHP Error Backtrace Debug

    Instant Diagnostics. Zero Guesswork.

    When things go south, you don't want vague 500 errors. Tick Xdebug for a site and every PHP error lands in that site's own log with its full backtrace, stack frame by stack frame; once you set its time on the PHP tab, the slow-request log records the stack of every request that drags. Both open in the site's Logs tab.

WebPortico — your own hosting environment on a QNAP NAS

Your domains. Your websites. Your NAS.

Run websites, PHP applications and services under your own domain names. WebPortico brings web-server management, PHP configuration, database services, HTTPS certificates and reverse proxy into one control panel on your QNAP NAS.

Each website has its own configuration. Choose its type, web server and PHP version, assign a database, configure domain names and select a certificate. Before publishing web-server configuration changes, review the proposed plan and its validation results.

Explore the panel → Read the hosting guide →

See WebPortico in action

Select a panel view to see the actual application: the website list, the new-site wizard, PHP settings, a site's database and the database servers, domains and TLS, reverse proxy, the preview of changes and its result, scheduled tasks, the cache, Cloudflare Tunnel and the port takeover. Screenshots show the original interface with demonstration data.

The WebPortico Sites list: the default site and eight demonstration sites with their site type, web server, certificate and state.

Domains, site types and their status. Sites on one NAS: static files, PHP and reverse proxy.

Panel detail. Enlarge the image to see the full view.

The Website step of the Add site wizard: a choice of PHP, static files or reverse proxy, and the web server.

From a name to a configuration plan. The wizard takes you through the domain, DNS and new site settings.

Panel detail. Enlarge the image to see the full view.

The PHP tab of a site: PHP version with its support status, time zone and limits.

The version and settings for a particular application. Set the PHP version, limits and worker processes separately for each site.

Panel detail. Enlarge the image to see the full view.

A site's Database tab showing a MariaDB database and its user, with the form for a new database.

The database and user assigned to a project. A database and user account prepared for a particular project.

Panel detail. Enlarge the image to see the full view.

The Database servers card for MariaDB with buffers, connections, packet size and slow query time.

Settings of a shared database server. Settings of the shared MariaDB server, not of a single site.

Panel detail. Enlarge the image to see the full view.

The Domains and TLS tab: the aliases, a self-signed certificate and the buttons for the other certificate sources.

The site's names and certificate. Choose domains, aliases and the HTTPS method in the site settings.

Panel detail. Enlarge the image to see the full view.

A reverse proxy site's Hosting tab: App on this NAS, the note about the application's own settings and the proxy target.

The target service and connection settings. Select an application on the NAS and make it available under the chosen site name.

Panel detail. Enlarge the image to see the full view.

The Preview of changes card: the files that change, each with its changed lines.

What changes, checked before it is applied. Review files and configuration-check results before applying the changes.

Panel detail. Enlarge the image to see the full view.

The Sites page after Apply changes: the notice with the snapshot's name and the services reloaded.

The applied plan and what was started. After Apply changes: the snapshot's name and the services started and reloaded.

Panel detail. Enlarge the image to see the full view.

A site's Scheduled tasks tab with one demonstration task, its schedule and its next runs.

A site's tasks, their schedule and next runs. The task schedule and execution result are available directly within the site settings.

Panel detail. Enlarge the image to see the full view.

A site's Cache tab: what Valkey, memcached, APCu and OPcache hold, the Valkey and memcached sockets, and compression.

A site's own Valkey, memcached and page cache. Page caching and local caches configured for the selected site.

Panel detail. Enlarge the image to see the full view.

The Cloudflare card of the Front server and ports page with an empty API token field and the plan's limits.

Publishing without forwarding ports. The optional tunnel lets you publish a site without forwarding ports on the router.

Panel detail. Enlarge the image to see the full view.

The Take over ports 80 and 443 card: the ports before and after and the new QTS administration address.

QTS's ports before and after the takeover. The port-takeover plan shows what will change in WebPortico and QTS services.

Panel detail. Enlarge the image to see the full view.

Original WebPortico interface. Demonstration data.

On this page
  1. Panel
  2. Sites and PHP
  3. Domains and HTTPS
  4. Preview of changes
  5. Reverse proxy
  6. NAS web server
  7. Build it yourself
  8. Installation
  9. Requirements
  10. WebPortico vs Plesk, cPanel and others
  11. Frequently asked questions

One website is only the beginning

A single NAS can host several separate websites. One may be a plain HTML site, another a PHP application, and a third an address that forwards to a service running in a container or on another device on your network.

WebPortico organises settings around each website. Its domains, site type, PHP configuration, database, certificate, scheduled tasks and logs are kept together. You do not have to hunt through server configuration files every time you add a project.

Static websites

A company site, portfolio, documentation or custom landing page does not need PHP or a database. Create a static site and place its HTML, CSS, JavaScript and image files in its public/ directory.

PHP applications

A blog, RSS reader, service dashboard or file-management application may need PHP, a database or additional extensions. WebPortico lets you choose the PHP version and web server for the application. The FreshRSS, Heimdall and FileRise examples show what a deployment looks like in practice.

Services under your own domain

An application can keep running on the NAS, in a container or on another device on your local network. A reverse-proxy site forwards requests from the selected domain to that service. It does not move the application or its data; it gives the service a web address and routes requests through the front-end server.

Choose PHP to suit the application

Two websites on the same NAS can use different PHP versions. WebPortico runs a separate PHP-FPM master, with its own configuration and worker pool, for each PHP site. Changing one site's settings does not require switching PHP across the other projects.

For each site, you can set memory and upload limits, maximum script execution time, time zone, error reporting, extensions and PHP-FPM pool parameters. OPcache, JIT and APCu settings are also available. The panel shows the support status of the selected PHP branch.

If an application relies on .htaccess rules, choose Apache httpd. Otherwise, nginx is available. Select the web server to match the application's requirements.

Separate PHP-FPM processes do not mean separate machines. Websites still share the NAS processor, RAM and storage. Separate accounts and worker pools make administration easier, but they cannot shield other services from an overloaded NAS.

The PHP workers (pool) card of a site's PHP tab.

Worker processes of one site: the process manager, their number and their limits.

Panel detail. Enlarge the image to see the full view.

Database engines for different applications

WebPortico supports MariaDB, Percona Server and PostgreSQL. The panel lists the database engines included in the installed package build. You can create a database and a separate user account for a website.

Applications compatible with MySQL can use a compatible engine such as MariaDB or Percona Server. PostgreSQL is a separate database engine and requires application-level PostgreSQL support.

Not every website needs a SQL server. A static site does not need a database. An application that uses SQLite manages its own file-based database; SQLite is not a database server managed by the WebPortico panel.

MariaDB and Percona Server have server settings such as the buffer pool, the connection limit and the slow-query log. They apply to the whole database server, not to one website. Applying a change restarts that server, and applications cannot connect to its databases while it restarts.

The Database servers card for MariaDB with buffers, connections, packet size and slow query time.

Settings of the shared MariaDB server, not of a single site.

Panel detail. Enlarge the image to see the full view.

From a domain name to a working website

The Add site wizard covers the domain, DNS, the registrar records, the website (type, web server, PHP version), an optional database for a PHP site, and the certificate. The Review step lists your choices, and Preview changes shows what will change in the server configuration.

The Domain step of the Add site wizard with the name notes.example.test, for the local network only.

The site's name and any further names.

Panel detail. Enlarge the image to see the full view.

The Website step of the Add site wizard: a choice of PHP, static files or reverse proxy, and the web server.

The wizard takes you through the domain, DNS and new site settings.

Panel detail. Enlarge the image to see the full view.

The Review step of the Add site wizard listing the name, site type, web server, PHP version and limits, OPcache, database, certificate and DNS.

An overview of the prepared settings before the preview of changes.

Panel detail. Enlarge the image to see the full view.

You can keep DNS with your existing provider or connect WebPortico to TurboDNS running on the NAS. If Cloudflare or OVHcloud serves the public zone, WebPortico sends the records to TurboDNS, and you push them to the provider from the zone's Cloudflare and OVH tab in TurboDNS.

After you apply the changes, a checklist on the site's Overview tab shows what is left: the records at your registrar, the domain check and the Let’s Encrypt request. The panel helps organise the deployment; it does not automatically change settings at every domain registrar or router.

The Finish setting up checklist of a site with the records to add at the registrar, the router's ports and the domain check.

The checklist on the site's Overview, before the registrar and DNS steps are done.

Panel detail. Enlarge the image to see the full view.

HTTPS for your domains

WebPortico supports Let’s Encrypt certificates and automatic renewal. Domain validation can use HTTP-01, or DNS-01 when the required DNS integration is configured. You can also use your own certificate, the NAS certificate or a self-signed certificate.

Entering a domain name is not enough to obtain a certificate. Let’s Encrypt must verify control of the name: through publicly reachable port 80 for HTTP-01, or the correct TXT record for DNS-01. A self-signed certificate is not automatically trusted by browsers.

Set up your domain step by step →

Review the plan before applying configuration

WebPortico prepares a plan for website-configuration changes. The preview lists files that will be added, changed or removed, together with configuration-check results from nginx, Apache and PHP-FPM. Apply changes publishes the prepared configuration.

The current configuration files are copied before replacement. If applying the plan fails, the deployment mechanism can restore the previous configuration. This is not a backup of website files or databases.

Not every operation is part of the configuration plan. Creating or deleting a database and changing scheduled tasks take effect at once. In the Add site wizard, Preview changes also creates the selected database and makes or stores the selected certificate; a Let’s Encrypt certificate is requested after you apply the changes. Read the operation details before confirming it.

The Preview of changes card: the files that change, each with its changed lines.

Review files and configuration-check results before applying the changes.

Panel detail. Enlarge the image to see the full view.

The Sites page after Apply changes: the notice with the snapshot's name and the services reloaded.

After Apply changes: the snapshot's name and the services started and reloaded.

Panel detail. Enlarge the image to see the full view.

Give your applications their own addresses

Instead of remembering a separate port for every service, assign selected services names under your domain. A reverse-proxy site forwards traffic to an application running on the NAS or elsewhere on your local network. WebSocket connections are supported as well.

For recognised applications, WebPortico can fill in the service address, WebSocket setting, and the headers and timeouts the application needs. Available templates include Rtorrent 16, Jellyfin, Plex Media Server, qBittorrent and applications in the *arr family. The list depends on installed packages and the applications supported by WebPortico.

Some applications also need their own public URL or reverse-proxy settings changed. WebPortico points out these steps, but it does not automatically change every application's internal configuration.

A reverse proxy site's Hosting tab with the App on this NAS list expanded and the proxy target filled in.

The App on this NAS list of the demonstration NAS: only supported apps that are installed there.

Panel detail. Enlarge the image to see the full view.

A domain name and HTTPS do not replace authentication or access control. Check a service's security before exposing it. Keep QTS and the WebPortico administration panel on a trusted network or make them available through appropriately secured remote access.

Make WebPortico your NAS's main web server

WebPortico can use its own ports or serve websites on standard ports 80 and 443. The administration panel runs separately, by default at https://<NAS>:9541/.

The application supports a controlled takeover of ports used by selected QTS services. Review the change plan before starting. After confirmation, WebPortico moves the QTS services that hold ports 80 and 443 (the QTS Web Server and QTS administration) to other ports, checks each stage and makes supported QTS websites available behind its front-end server. The result shows the new administration address and the actions performed. You can reverse the takeover from the panel.

The Take over ports 80 and 443 card: the ports before and after and the new QTS administration address.

The port-takeover plan shows what will change in WebPortico and QTS services.

Panel detail. Enlarge the image to see the full view.

The takeover's result lines: QTS Web Server and QTS administration moved, a QTS site imported, WebPortico on 80 and 443, and Done.

The result of a takeover on the demonstration NAS: each step checked and the new administration address.

Panel detail. Enlarge the image to see the full view.

This is not a migration tool for every application or database. The takeover moves QTS's own servers only; another program that holds a port is not moved. Review the plan before the operation, then check QTS access, website availability and router rules afterwards.

Keep using the existing Web folder

The default website can serve the existing QTS Web folder. Requests sent to the NAS address, or to a name not assigned to another site, can be directed to its contents. Apache handles this site, including PHP and supported .htaccess rules.

This lets you continue using existing files; it does not guarantee that every application will work without changes. Permissions, PHP requirements and application-specific configuration still matter.

Keep your websites running

Caching and compression

nginx can compress text responses with Brotli, zstd or gzip. For nginx sites, the Cache tab can enable PHP page caching and set how long browsers keep static files. PHP sites can also use their own Valkey and memcached instances through local sockets.

Configure caching to match the application. Logged-in pages, shopping carts and user-specific data need suitable exclusions. A cache is not permanent data storage and does not replace a database.

A site's Cache tab: what Valkey, memcached, APCu and OPcache hold, the Valkey and memcached sockets, and compression.

Page caching and local caches configured for the selected site.

Panel detail. Enlarge the image to see the full view.

Scheduled tasks

Scheduled tasks run on a timetable. Each website has its own: a PHP file, a shell command or a request to one of the site's addresses. Every task runs as the site's system account, and PHP runs with the site's PHP version and settings. The panel shows the schedule, the last result and the output of the last run.

A site's Scheduled tasks tab with one demonstration task, its schedule and its next runs.

The task schedule and execution result are available directly within the site settings.

Panel detail. Enlarge the image to see the full view.

The same task after a run: Done, exit status 0 and its output.

The result and output of the last run of a harmless demonstration script.

Panel detail. Enlarge the image to see the full view.

Logs and troubleshooting

The Logs tab shows events related to a website. The Services page lets you check the state of server components. When something goes wrong, start with the application's, PHP's or web server's logs instead of changing settings at random.

Custom PHP extensions

In addition to the extensions shipped with the package, you can build custom PECL extensions for a selected website. This requires Bucket & Code Server IDE and a prepared build environment. The extension must be compiled for the PHP version used by that site. It is not automatically enabled for other websites.

Hosting without a public IP address

If your ISP uses CGNAT or you cannot forward ports on your router, you can publish selected websites through Cloudflare Tunnel. Once configured, the NAS initiates the connection to Cloudflare and traffic to the selected websites travels through the tunnel.

This method requires a Cloudflare account and a domain managed through Cloudflare DNS. No inbound port forwarding is required on your router.

Traffic does pass through an external provider. Check its limits and terms before publishing, especially for large files, long-running requests and media streams.

The Cloudflare card of the Front server and ports page with an empty API token field and the plan's limits.

The optional tunnel lets you publish a site without forwarding ports on the router.

Panel detail. Enlarge the image to see the full view.

Ready-to-install package and build project

Install WebPortico as a QPKG application from the QNAP Utilities repository. You do not need to compile the web servers or install a development environment to use the hosting features.

If you want to inspect how the package is built, the web-server project is available in Bucket & Code Server IDE. It contains the panel code, scripts, build recipes, tests and packaging configuration. Individual components may use different licences, so check the terms for each component before modifying or redistributing it.

The Files tab showing the site's folder, disk use, the editor link and Fix permissions.

The site directory and the link to the Bucket & Code Server IDE editor.

Panel detail. Enlarge the image to see the full view.

Explore Bucket & Code Server IDE → Browse the WebPortico project →

Bucket & Code Server IDE · example project

Build WebPortico yourself, with the versions you choose

WebPortico is one of the example QPKG projects of Bucket & Code Server IDE. Use the example and the package’s build becomes a project of your own on the NAS: the list of recipes the servers are built from, the panel’s Go source, the tests and the packer. Build a new package whenever you want; your NAS units install it from the App Center repository that Bucket & Code runs.

  1. Use the example

    On the Examples page, Use this example on “web server stack with a vhost panel” creates the web-server project for the Editor. Its builds need the Debian 12 builder environment and the Go 1.27 runtime, and make qpkg needs QDK.

  2. Choose the versions

    Each recipe of the library pins a version. Bucket & Code fetches newer recipes from its signed recipe catalog once a day, and the next build takes a newer PHP or nginx release when the catalog brings one. For a version of your own, put a recipe of the same name in the project’s recipes/ folder: this project’s app builds it instead of the library’s. Another PHP release takes a copy of the library’s recipe with that release in its version, source and check, then a new build; WebPortico’s panel switches only between the PHP branches the package carries.

    Your first own recipe → A custom app from your own recipes →

  3. Build and publish

    In the Editor’s terminal, make app build activate builds the servers and make qpkg packs WebPortico. Publish on the project’s page puts the package into the App Center repository of this NAS. An admin’s publish lists the version at once, and App Center on each NAS that added the repository’s address offers it as an update.

    Your own App Center →

make app build activate
make qpkg

The repository takes only signed packages by default, and make qpkg signs WebPortico only with the code-signing files you give it.

Bucket & Code Server IDE →

Set up your first website

1. Add the repository

In QTS or QuTS hero, open App Center → ⚙ Settings → App Repository → Add. Enter QNAP Utilities as the name and use this address:

https://www.qnaputilities.com/repo.xml

2. Install WebPortico

Select the QNAP Utilities repository and the WebPortico package. After installation, click Open to access the panel.

3. Set your password and choose how to run it

On first launch, set your own administrator password of at least 10 characters from a computer on the NAS's local network. The form is available for 60 minutes after the panel starts. If that window has expired, restart WebPortico in App Center.

Next, decide whether hosting should stay on separate ports or take over the standard web ports. A fresh install asks this once, and the Front server and ports page keeps the choice for later. The panel's guided tour points you to the relevant settings, but does not perform the actions for you.

The guided tour's step Your first site, with the Add site button ringed by the application.

The guided tour points to the next settings. Decisions and confirmations remain with the administrator.

Panel detail. Enlarge the image to see the full view.

4. Add a site

Enter its name, choose static files, PHP or reverse proxy, and prepare the remaining settings. Review the plan, apply the configuration and, for a static or PHP site, place the application files in its directory. A public domain also needs the correct DNS, a working access method and a certificate.

The panel guides you through the setup and lists the remaining tasks. Changes at your domain registrar, router and external services must be made according to your own network configuration.

Requirements

NAS
QNAP with an Intel or AMD processor, x86_64 architecture
Operating system
QTS 6.0 or QuTS hero 6.0 or later, subject to the requirements of the package build
Installation
QPKG package from the QNAP Utilities repository in App Center
Administration panel
Default address: https://<NAS>:9541/
Website ports
9542/HTTP and 9543/HTTPS by default; operation on 80 and 443 is supported
Local access
Sites can remain available only on the local network
Public access
DNS and access to the web server, or a configured Cloudflare Tunnel
QuTS hero folders
Advanced Folder Permissions on a shared folder can keep websites out of it; the panel then stops the apply and offers another shared folder or WebPortico's data folder
Application cost
WebPortico is free. Domain registration and external services may have separate fees and terms

See the App Center catalogue for component versions, licences and the installation package.

WebPortico vs Plesk, cPanel and others

This comparison covers panels that can be self-hosted and used to manage websites. When a vendor does not document direct installation on QNAP, the comparison uses a virtual-machine scenario. That is not equivalent to a QPKG installation: the VM has its own operating system and IP address, and integration with QTS services is limited. Missing documentation is not proof that a feature does not exist.

  • no
  • not in the vendor’s documentation
  • yes
  • yes, useful for hosting sites on a NAS
  • yes, very useful for hosting sites on a NAS
  • WebPortico has it and the others’ documentation does not show it; one to three stars, as useful as the ticks
WebPortico and six self-hosted hosting panels on a QNAP NAS, as of 2026-11-08
FeatureWebPorticoour packagePlesk ObsidiancPanel & WHMDirectAdminHestiaCPCloudPanelVirtualmin
Runs on a QNAP NASYes, very useful. A package you install from App Center, for Intel and AMD modelsYes. Only inside a virtual machine; the vendor’s Docker image is for evaluationYes. Only inside a virtual machine, with a fixed IP address; no ARMYes. Only inside a virtual machine, on a freshly installed systemYes. Only inside a virtual machine, on a freshly installed systemYes. Only inside a virtual machineYes. Only inside a virtual machine, on a freshly installed system
Beside QTS’s Web Server (ports 80/443)Yes, useful. Yes. It runs beside the QTS web server on its own ports. One click takes over ports 80 and 443, and one click gives them backYes. In its own virtual machine with its own address; it does not work with QTS’s sitesYes. In its own virtual machine with its own address; it does not work with QTS’s sitesYes. In its own virtual machine with its own address; it does not work with QTS’s sitesYes. In its own virtual machine with its own address; it does not work with QTS’s sitesYes. In its own virtual machine with its own address; it does not work with QTS’s sitesYes. In its own virtual machine with its own address; it does not work with QTS’s sites
Own DNS serverYes, very useful. Yes, through TurboDNS: your zones, names for your home network, copies to Cloudflare or OVHcloud, DNSSECYes, very useful. Yes: BIND, with Cloudflare and Route 53 sync; DNSSEC is an extension, paid in Web AdminYes, useful. Yes: BIND or PowerDNS; DNSSEC with PowerDNSYes, useful. Yes: BIND with DNSSECYes, useful. Yes: BIND with clusters and DNSSECNot in the vendor’s documentation. No DNS server in its documentationYes. Cloud DNS (Cloudflare, Google, Route 53) in Pro; BIND and DNSSEC only on its forum
A site without a public IPYes, very useful; not in the others’ documentation. Yes. A built-in Cloudflare Tunnel publishes the sites you choose; you need a Cloudflare account and zoneNot in the vendor’s documentation. Not in its documentationNot in the vendor’s documentation. Not in its documentationNot in the vendor’s documentation. Not in its documentationNot in the vendor’s documentation. Not in its documentationNot in the vendor’s documentation. Not in its documentationNot in the vendor’s documentation. Not in its documentation
Reverse proxy to LAN servicesYes, very useful. Yes. Pick an app installed on the NAS or any address on your network; WebSockets with one switchYes. Only to Docker containers on the same serverYes. Only with configuration files written by handNot in the vendor’s documentation. Not in its documentationYes. With a custom nginx templateYes, useful. Yes: a “Reverse Proxy” site typeYes, useful. Yes: proxy paths to another web server
Mail and Exchange ActiveSyncYes, very useful. Yes, through MailServerPro: mail, webmail, calendars, contacts and ActiveSync (Z-Push)Yes, useful. Yes: Postfix or qmail, Dovecot, Roundcube; ActiveSync only in the paid Kolab extensionYes, useful. Yes: Exim, Dovecot, Roundcube, calendars and contacts; the ActiveSync plugin is deprecated since v118Yes. Webmail (Roundcube); ActiveSync not in its documentationYes, useful. Yes: Exim, Dovecot, Roundcube; ActiveSync not in its documentationNo. No: it has no mail serverYes, useful. Yes: Postfix, Usermin, Roundcube; a Z-Push installer in Pro
DatabasesYes, very useful. Yes: MariaDB and PostgreSQL, a database and a user for each siteYes, very useful. Yes: MySQL, MariaDB and PostgreSQLYes, useful. Yes: MySQL or MariaDB; PostgreSQL after a manual installYes, useful. Yes: MySQL or MariaDBYes, very useful. Yes: MariaDB or MySQL, and PostgreSQLYes, useful. Yes: MySQL or MariaDBYes, very useful. Yes: MySQL, MariaDB and PostgreSQL
Percona ServerYes, useful; not in the others’ documentation. Yes: Percona Server 8.4 beside MariaDB on the same NAS, on x86_64No. Not offered: MySQL or MariaDBNo. Not offered: MySQL or MariaDBNo. Not offered: MySQL or MariaDBNo. Not offered: MariaDB or MySQL 8Yes. Its installer puts in Percona Server when you choose MySQL; one engine, not beside MariaDB (its installer script)No. Not offered: MySQL, MariaDB or PostgreSQL
Valkey (Redis) and memcachedYes, very useful. Yes: a Valkey and a memcached of its own for each PHP site, open only to that siteYes. Redis as a Docker container; memcached by hand, outside Plesk supportYes, useful. Redis, Valkey and memcached for each cPanel user in containers; the user needs shell accessYes, useful. Redis for each account that has it turned on; memcached not in its documentationNot in the vendor’s documentation. Only the PHP client modules; a service is not in its documentationYes. Redis on the server; per site and memcached not in its documentationYes. Redis or Valkey in Podman recipes for each virtual server, in Pro
PHP versionsYes, useful. Yes: 8.1 to 8.5, each site in its own PHP-FPM as its own account; 8.1 gets no security fixes since 2025-12-31, and the panel marks it end of lifeYes, useful. 5.2 to 8.5, chosen per domain; the branches before 8.2 get no security fixes, a risk on a public siteYes, useful. 7.4 and 8.1 to 8.5, chosen per domain; 7.4 and 8.1 get no security fixesYes, useful. Up to 9 versions, chosen per domainYes, useful. 5.6 to 8.5; the branches before 8.2 get no security fixes, a risk on a public siteYes, useful. Up to 8.5, chosen per siteYes. PHP 7 and 8; 8.5 since 7.50.1
Pictures in PHP (ImageMagick, GD)Yes, very useful. Yes: imagick (ImageMagick 7) and GD in every PHP versionYes, very useful. Yes: gd and imagick come with Plesk’s PHPYes, useful. GD by default; imagick after you install ImageMagick and its PECL moduleYes. imagick in the CustomBuild list; GD not in its documentationYes, useful. Its install script adds gd and imagick to every PHP version (the project’s code)Not in the vendor’s documentation. Not in its documentationYes. GD in its PHP install line; imagick not in its documentation
PHP caches (OPcache, APCu)Yes, very useful. Yes: OPcache and APCu of its own in every PHP site, set on its PHP tabYes, useful. OPcache, switched per domain; APCu not in its documentationYes. OPcache, set up by hand; APCu not in its documentationYes. OPcache; APCu only as a manual buildYes, useful. Its install script turns on OPcache and adds APCu (the project’s code)Not in the vendor’s documentation. Not in its documentationYes. OPcache in its PHP install line; APCu not in its documentation
Your own PECL extensionsYes, useful; not in the others’ documentation. Yes: built on the site’s PHP tab and loaded by that site alone; needs Bucket & Code Server IDEYes. For the whole server, from the command lineYes. For the whole server, from WHM, for rootYes. For the whole server, compiled for each PHP versionNot in the vendor’s documentation. Not in its documentationYes. For the whole server, built by handNot in the vendor’s documentation. Not in its documentation
Scheduled tasks (cron)Yes, very useful. Yes: a preset or the five cron fields, checked as you type, with the next runs shown; each task runs as the site’s accountYes, useful. Available per hosting subscription; supports a test runYes, useful. Yes, per account, with common intervalsYes. Yes, per user (the user’s crontab)Yes, useful. Yes, with a generator; its code checks the fields (the project’s code)Yes, useful. Yes, per site, from a templateYes. Yes, through Webmin’s scheduled cron jobs
Logs in the panelYes, useful. Yes: each site’s Logs tab, and the servers’ logs on the Services pageYes, very useful. Yes: a log browser with real-time updatesYes. The last 300 error lines; access logs as a downloadNot in the vendor’s documentation. A viewer is not in its documentationYes. Access and error logs to view or downloadYes, useful. Yes: a Log Viewer for NGINX and PHP-FPMYes, useful. Yes: access and error logs under Logs and Reports
CertificatesYes, very useful. Yes: Let’s Encrypt through HTTP or DNS (TurboDNS or Cloudflare), renewed by itselfYes, useful. Yes: Let’s Encrypt (SSL It!), renewed 30 days ahead; a wildcard needs Plesk to host the DNSYes, useful. Yes: Let’s Encrypt (AutoSSL); no wildcard when the DNS is hosted elsewhereYes, very useful. Yes: Let’s Encrypt, the DNS check through LEGO (Cloudflare and others)Yes, useful. Let’s Encrypt with wildcards; Hestia’s own DNS needed, forum onlyYes. Let’s Encrypt; a DNS check is not in its documentationYes. Let’s Encrypt; a DNS check only when it hosts the zone, forum only
Brotli and zstd compressionYes, very useful. Yes: Brotli and zstd besides gzip, with nothing to setYes, very useful. Brotli on by default (nginx); zstd not in its documentationYes, useful. Brotli as an Apache or nginx module you installYes. Brotli only in a custom buildNot in the vendor’s documentation. Not in its documentationNot in the vendor’s documentation. Not in its documentationNot in the vendor’s documentation. Not in its documentation
HTTP/3 (QUIC)Yes, useful. Yes: one switch on the Front server and ports pageYes. Experimental, turned on from the command line; per siteNot in the vendor’s documentation. Not in its documentation (HTTP/2 only)Yes. With OpenLiteSpeed, or the commercial LiteSpeedNot in the vendor’s documentation. Not in its documentationYes, useful. Yes: per site in the vhost, off by defaultNot in the vendor’s documentation. Not in its documentation
Preview before applyingYes, very useful; not in the others’ documentation. Yes. Every change to the web servers shows its file differences and passes the servers’ own checks first; a snapshot lets you go backNot in the vendor’s documentation. Not in its documentationYes. Only a list of the packages to change (EasyApache 4)Not in the vendor’s documentation. Not in its documentationNot in the vendor’s documentation. Not in its documentationNot in the vendor’s documentation. Not in its documentationNot in the vendor’s documentation. Not in its documentation
Licence and price, one serverYes, very useful. FreeYes. Paid: Web Admin (VPS) $15.57 a month, 10 domains; when the licence ends, the sites keep running and the panel is lockedYes. Paid: Solo $29.99 a month, 1 accountYes. Paid: Personal PLUS $5 a month, 2 accounts, 20 domainsYes, very useful. Free and open source (GPLv3)Yes, useful. Free, under a closed licenceYes, very useful. Free GPL edition; Pro from $7.50 a month, 10 domains
Rebuild from sourceYes, useful. Yes, in Bucket & Code Server IDE from source recipes; the panel’s own code is freeware, not open sourceNot in the vendor’s documentation. A build from source is not in its documentationNot in the vendor’s documentation. A build from source is not in its documentationYes. Its CustomBuild compiles the programs; the panel itself is closedYes, useful. Yes: the panel’s source is GPLv3No. No: its licence forbids changesYes, useful. Yes: the GPL edition’s source (GPL-3.0)
  • No vendor in this table documents QNAP. “In a VM” means a Virtualization Station virtual machine on an Intel or AMD QNAP NAS with one of the panel’s supported Linux systems. The VM has its own IP address, so it does not compete with QTS for ports 80 and 443; it has no access to QTS’s Web folder, certificate or web server.
  • TurboDNS and MailServerPro are separate free packages from the same repository. WebPortico works with them on the same NAS.
  • The preview of changes covers the web servers’ configuration. Creating or dropping a database and scheduled tasks take effect at once.
  • Prices in the table are in US dollars, the cheapest tier for one server as the vendor’s page showed it on 2026-11-08. Plesk: a VPS licence; the page shows no price for a dedicated server. cPanel: the monthly price ($27.46 a month billed yearly), without VAT; new prices from 2026-12-16. The other pages do not say whether VAT is included.
  • “Not documented”: we did not find it in the vendor’s documentation on 2026-11-08; it does not mean the panel cannot do it. “Forum only”: the documentation is silent and only community forum posts describe it.

Frequently asked questions

  1. Do I have to install TurboDNS?

    No. DNS can stay with your registrar or another provider. TurboDNS is an optional integration for preparing zones and records on the NAS.

  2. Does WebPortico install WordPress and other applications in one click?

    WebPortico prepares the site's environment: the server, PHP, an optional database and domain configuration. Supply the application's files and install it separately, according to its requirements. The guides include practical examples.

  3. Do I have to expose my NAS to the internet?

    No. You can use websites and applications entirely within the LAN. Publishing a particular site is a separate decision; it does not require exposing the NAS administration panel.

  4. Does creating a site immediately give me a working website?

    No. The configuration must be applied, and a static or PHP site also needs the correct application files. Internet access additionally depends on working DNS and the chosen publishing method.

  5. Do I need backups?

    Yes. Back up site files, databases and configuration separately. The snapshot of server configuration files made when applying a plan helps roll back configuration changes, but does not replace a backup of application data.

  6. Is WebPortico on a QNAP NAS free of PHP2Shell?

    Yes, on PHP 8.2 to 8.5. PHP2Shell is the pair of PHP flaws CVE-2026-109618 and CVE-2026-109619. WebPortico ships PHP 8.2.35, 8.3.36, 8.4.27 and 8.5.12, the releases with php.net's fix, and runs every PHP site on PHP-FPM, without php-cgi or mod_php. PHP 8.1.34 has no fix, because php.net ended its support on 2025-12-31: move any site on PHP 8.1 to a newer branch. You can also build the web server yourself, at any time and for free, from the latest sources with the recipes nginx, httpd and php81 to php85 in Bucket & Code Server IDE.

Install WebPortico and publish your first website

Start with a simple website, documentation or an application used by your household or team. Add further projects in the same panel, each with its own configuration.

Documentation and sources

The screenshots come from the original WebPortico panel on a test NAS, with demonstration data. The NAS's own addresses are replaced with documentation addresses.

The sources of every cell, with the date they were read, are in a plain-text register: comparison-sources.txt.

Plesk is a registered trademark or trademark of WebPros International GmbH. cPanel, WebHost Manager and WHM are registered trademarks of WebPros International L.L.C. QNAP is a trademark of QNAP Systems, Inc. DirectAdmin, HestiaCP, CloudPanel and Virtualmin are the names of their owners’ products. The names only identify the products; none of their owners endorses this comparison.