- Python 57.2%
- Shell 42.8%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| docs | ||
| scripts | ||
| .gitignore | ||
| AGENTS.md | ||
| instance.yaml.example | ||
| README.md | ||
| requirements.lock | ||
user-local Plone instance
Reproducible notes and helper scripts for a user-local Plone 6.2.2 (Classic UI) instance that runs without root privileges.
Everything lives in one directory; nothing is installed system-wide and no systemd unit, package manager entry or sudo call is involved.
| Item | Value |
|---|---|
| Plone | 6.2.2 (plone==6.2.2, plone-classicui==2.0.0) |
| Zope | 6.2 |
| WSGI server | waitress 3.0.2, localhost:8080 |
| Python | 3.13.5 (venv created with uv 0.11.21) |
| Virtualenv | .venv/ (~326 MB, 250 pinned packages in requirements.lock) |
| Instance home | instance/ (generated by mkwsgiinstance / cookiecutter-zope-instance) |
| Database | instance/var/filestorage/Data.fs + instance/var/blobs/ |
| Plone site | /Plone - Classic UI, default language en, timezone Europe/Ljubljana |
| Admin user | admin (password lives in instance.yaml, mode 0600) |
| URL | http://localhost:8080/Plone |
Quick start
Start (restart) the instance:
cd /home/samob/ai/plone
scripts/start.sh
Stop it:
scripts/stop.sh
Foreground (what start.sh wraps):
.venv/bin/runwsgi -v instance/etc/zope.ini
Layout
.venv/ virtualenv (uv-managed, no pip inside)
instance/ generated instance home: etc/, var/
instance.yaml generated config incl. initial admin password (0600, local only)
requirements.lock exact package set of the working install
scripts/install.sh create venv + instance from scratch
scripts/start.sh start runwsgi in the background
scripts/stop.sh stop it again
scripts/create_site.py create the Plone site over the REST API
scripts/check_no_secrets.py fail if a secret is about to be committed
docs/install.md what was installed, how, and why
docs/operations.md day-2 operations: logs, restart, backups, operations
docs/production-buildout-plan.md production Buildout deployment plan
Creating the Plone site
The instance starts with an empty Zope database - the Plone site is created afterwards, either in a browser at http://localhost:8080/ or over the API:
scripts/create_site.py # dry run: shows what would be created
scripts/create_site.py --create # creates /Plone (classic distribution)
Repository workflow
The canonical repository is https://code.clawdie.si/clawdie/plone.
The local origin remote points to that repository, and main tracks
origin/main. Work is developed on a review branch and merged into main
after review. See AGENTS.md for the project workflow and verification
baseline.
Secrets
instance.yaml holds the initial admin password and is chmod 0600. It is
git-ignored; only instance.yaml.example is tracked. Run
scripts/check_no_secrets.py
before pushing - it checks every tracked file against the real password and against the ignore rules.