Structure
Overview
OhnePapier is a configuration-only project β no application source code exists. The repository contains Docker Compose orchestration files, documentation, and philosophical/licensing texts. All application logic lives inside Docker images.
Directory Layout
OhnePapier-v.0.0/
βββ docker-compose.yml # Primary orchestration file β all services defined here
βββ docker-compose.env # Secret environment variables (NOT in git β must be created manually)
βββ .env # Non-secret env vars (e.g. PAPERLESS_AI_PORT)
βββ .gitignore # Excludes docker-compose.env, consume/, export/
β
βββ CLAUDE.md # AI assistant instructions + project context
βββ README.md # Project overview and usage guide
βββ LICENSE.md # Crumbforest combined license
βββ CKL.md # Crumbforest Knowledge License (non-military, non-surveillance)
βββ HHL.md # Human Heritage License (human-before-machine clause)
βββ NO_AHAB_GUIDE.md # Anti-obsession guide (Crumbforest principles)
β
βββ manifest_59_Ahab_und_der_Wal.md # Crumbforest manifesto #59
βββ manifest_60_ahab_reflex.md # Crumbforest manifesto #60
β
βββ img/ # Project images/assets
β
βββ consume/ # (git-ignored) Hot-folder: drop files here for Paperless ingestion
β # Mounted to webserver:/usr/src/paperless/consume
βββ export/ # (git-ignored) Export folder for Paperless document exports
β # Mounted to webserver:/usr/src/paperless/export
β
βββ .planning/ # GSD planning artifacts (this directory)
βββ codebase/ # Codebase map documents
Docker Volumes (managed by Docker, not in repo)
| Volume | Purpose | Mounted To |
|---|---|---|
data |
Paperless application data | webserver:/usr/src/paperless/data |
media |
Paperless document media/files | webserver:/usr/src/paperless/media |
pgdata |
PostgreSQL database files | db:/var/lib/postgresql |
redisdata |
Redis persistence | broker:/data |
paperless-ai_data |
paperless-ai config/state | /app/data |
Key File Locations
| File | Purpose | Notes |
|---|---|---|
docker-compose.yml |
Service definitions | Primary file to edit for infra changes |
docker-compose.env |
Secrets + Paperless config | Not in git β must exist before up |
.env |
Non-secret vars | Currently only PAPERLESS_AI_PORT |
CLAUDE.md |
AI context + runbook | Always read first for operational commands |
Naming Conventions
- Service names in docker-compose.yml use lowercase with hyphens:
broker,db,webserver,paperless-ai - Container name:
paperless-aihas explicitcontainer_name: paperless-ai; others default to compose-generated names (e.g.paperless-webserver-1) - Volume names: lowercase, no hyphens except
paperless-ai_data(underscore) - Documentation files: UPPERCASE.md for licenses/guides, lowercase_with_underscores.md for manifests
Where to Add New Configuration
| What you're adding | Where it goes |
|---|---|
| New Docker service | docker-compose.yml under services: |
| New secret/credential | docker-compose.env (never commit) |
| New non-secret env var | .env |
| New bind-mount directory | Root of repo (created on host) + mount in docker-compose.yml |
| New documentation | Root of repo as UPPERCASE.md |
| Planning/roadmap artifacts | .planning/ |
Runtime Filesystem (host machine, outside repo)
Ollama runs on the host machine β not in Docker β to access GPU:
- Binary: wherever ollama is installed on the host
- Models: ~/.ollama/models/ (default)
- Accessible to containers via host.docker.internal:11434
Mapped: 2026-04-17