User-local Plone 6.2.2 (Classic UI) instance: install docs, start/stop scripts, REST site creation
  • Python 57.2%
  • Shell 42.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-05 09:23:46 +00:00
docs docs: define staged production evidence capture 2026-10-05 11:21:19 +02:00
scripts install.sh: replace && chains with if blocks (set -e aborts the script when the test fails) 2026-09-19 00:13:23 +02:00
.gitignore Add user-local Plone 6.2.2 install docs and helper scripts 2026-09-19 00:08:20 +02:00
AGENTS.md Document Clawdie AI Assistant commit identity 2026-09-19 10:14:03 +02:00
instance.yaml.example Add user-local Plone 6.2.2 install docs and helper scripts 2026-09-19 00:08:20 +02:00
README.md Add production Buildout deployment plan 2026-09-19 09:56:57 +02:00
requirements.lock Add user-local Plone 6.2.2 install docs and helper scripts 2026-09-19 00:08:20 +02:00

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.