# 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-panel` site itself) - Create / delete sites via WordOps - Optional bootstrap step after site creation (`wp-dev-bootstrap.sh`) - User auth + roles: - `admin` can see/manage all sites + manage users - `dev` can 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 (`wp` in PATH) - Nginx + PHP-FPM (Provided by WordOps) - SQLite support for PHP - Sudo privileges for `www-data` to run WordOps commands without password ### File layout Panel site lives at: - `/var/www//htdocs/index.php` - `/var/www//htdocs/includes/db.php` - `/var/www//htdocs/includes/functions.php` - `/var/www//htdocs/style.css` - `/var/www//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 1. Create the WordOps “panel” site `sudo wo site create --php` Add host entry on your workstation (or internal DNS), then confirm you can load the site. 2. Drop in the panel files Copy: - `index.php` → `/var/www//htdocs/index.php` - `includes/db.php` → `/var/www//htdocs/includes/db.php` - `includes/functions.php` → `/var/www//htdocs/includes/functions.php` - `style.css` → `/var/www//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//htdocs` > Optional: 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: ```text 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](https://code.visualstudio.com/docs/remote/ssh) - Devs connect via SSH to the server - Edit project files directly under `/var/www//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: ```bash 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