123 lines
3.8 KiB
Markdown
123 lines
3.8 KiB
Markdown
# 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/<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
|
||
|
||
1. Create the WordOps “panel” site
|
||
|
||
`sudo wo site create <dev panel URL> --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/<dev panel URL>/htdocs/index.php`
|
||
- `includes/db.php` → `/var/www/<dev panel URL>/htdocs/includes/db.php`
|
||
- `includes/functions.php` → `/var/www/<dev panel URL>/htdocs/includes/functions.php`
|
||
- `style.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>/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/<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:
|
||
|
||
```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
|