OpenPanel is the first truly modular control panel, meaning that you can edit or disable every component of it that you do not need, and everything else keeps working as usual.
This is not possible with traditional hosting panels, as they share the same services and therefore have many single points of failure.
In this example, we will be using the OpenPanel server only for hosting the MySQL database, and accessing it from another server.
After setting up the server, we only really need the MySQL service, user terminal access, and phpMyAdmin. Everything else can be disabled to avoid using system resources.
Create a new user, setup the database and test remote access. After that follow these steps to completely disable unnecessary services on OpenPanel:
Step 1: Disable All Unused Services
service admin stop && systemctl disable admin
service watcher stop && systemctl disable watcher
service nginx stop && systemctl disable nginx
service named stop && systemctl disable named
Step 2: Disable OpenPanel (optional)
If users will not be accessing the OpenPanel interface but only via terminal, phpMyAdmin, or remote MySQL, then we can safely disable the user panel as well:
cd /root && docker compose down
Step 3: Disable Services Monitoring
Since we disabled system services that we no longer need, we should also disable email alerts for them.
Edit the file /etc/openpanel/openadmin/config/notifications.ini
and remove the services that we disabled in step 1: mysql, named, nginx, admin, panel.
Step 4: Disable OpenPanel Cron Jobs
We should also disable auto-updates and other scripts relevant only to the OpenPanel and OpenAdmin interfaces.
Edit the file /etc/cron.d/openpanel
and comment all lines by adding # at the start of each line.
If you set backup jobs, I recommend leaving the backups section as is; otherwise, backups will not work.
Step 5: Reboot and Test Everything
The final step is to reboot the server and test if everything is set up as expected on system startup.
Confirm that both OpenAdmin and OpenPanel interfaces are disabled, and that cron jobs were not executed.
Check if OpenAdmin is running:
opencli admin
Check if OpenPanel MySQL database is running:
docker ps -a | grep openpanel_mysql
Check if cronjobs are still being executed:
tail /var/log/openpanel/admin/cron.log
Also, connect to user services via remote MySQL port or phpMyAdmin to ensure users have no problems.