3.8 KiB
WordOps Dev Panel
A lightweight internal control panel for managing WordOps WordPress sites without forcing developers onto the CLI.
What this does
- Lists WordOps sites (hides the
dev-panelsite itself) - Create / delete sites via WordOps
- Optional bootstrap step after site creation (
wp-dev-bootstrap.sh) - User auth + roles:
admincan see/manage all sites + manage usersdevcan only see/manage sites they created
- SQLite-backed storage (no external DB required)
- Password change modal + logout under a username dropdown
- Streaming output for long-running bootstrap (WordOps output may still arrive in chunks)
Requirements
Server
- WordOps installed and working (
/usr/local/bin/wo) - WP-CLI installed and working (
wpin PATH) - Nginx + PHP-FPM (Provided by WordOps)
- SQLite support for PHP
- Sudo privileges for
www-datato run WordOps commands without password
File layout
Panel site lives at:
/var/www/<dev panel URL>/htdocs/index.php/var/www/<dev panel URL>/htdocs/includes/db.php/var/www/<dev panel URL>/htdocs/includes/functions.php/var/www/<dev panel URL>/htdocs/style.css/var/www/<dev panel URL>/htdocs/panel.sqlite (auto-created)
Helper scripts live at:
/usr/local/bin/wp-dev-bootstrap.sh/usr/local/bin/wo-fix-perms.sh
Install steps
-
Create the WordOps “panel” site
sudo wo site create <dev panel URL> --phpAdd host entry on your workstation (or internal DNS), then confirm you can load the site.
-
Drop in the panel files
Copy:
index.php→/var/www/<dev panel URL>/htdocs/index.phpincludes/db.php→/var/www/<dev panel URL>/htdocs/includes/db.phpincludes/functions.php→/var/www/<dev panel URL>/htdocs/includes/functions.phpstyle.css→/var/www/<dev panel URL>/htdocs/style.css
Make sure the web server can write the SQLite DB (the panel will create it on first load):
sudo chown -R www-data:www-data /var/www/<dev panel URL>/htdocsOptional: lock down later once seeded
First login / seeding
On first load, if there are no users, the panel auto-creates an admin user with the following credentials:
Username: admin
Password: change-me
Log in and change it immediately using the user dropdown → “Change password”.
Daily workflow
Option A: (recommended) VSCode Remote - SSH
- Devs connect via SSH to the server
- Edit project files directly under
/var/www/<site>/htdocs - Panel handles provisioning + bootstrap + ownership metadata
- No need for tooling (
node,php, etc) on user machines beyond VSCode + SSH
Option B: SMB shares (with SSH tunnel)
- Export
/var/www(or per-site roots) via Samba - Use group permissions (webdev) so edits behave identically to SSH
- Map network drives on dev machines
- Requires tooling (
node,php, etc) on user machines for composer, Tailwind, etc
Troubleshooting
“PDOException: could not find driver”
PHP SQLite extension missing:
sudo apt install -y php-sqlite3
sudo systemctl restart php8.3-fpm || sudo systemctl restart php-fpm
WordOps fails when run as www-data
Don’t run wo as www-data directly:
Correct (what the panel does):
sudo -u www-data sudo /usr/local/bin/wo site list
Incorrect:
sudo -u www-data /usr/local/bin/wo site list
Panel isn’t streaming output
Bootstrap output streams (proc_open + flush)
WordOps sometimes buffers; that’s normal. The panel will still show output when it arrives.
Next steps / nice-to-haves
- “Fix perms” button in the panel post-create
- Per-site notes (who/why) for management visibility
- Audit log for create/delete/bootstrap actions
- Optional “clone template site” support