ROADMAP — OhnePapier v0.1
Project: OhnePapier v0.1 — Debian 13 GPU Stack
Granularity: Coarse
Total v1 Requirements: 12
Coverage: 12/12 (100%)
Phases
- [ ] Phase 1: Core Stack — Full 6-service Docker Compose stack running on Debian 13 with Ollama containerized and GPU passthrough
- [ ] Phase 2: AI Providers — Switchable AI provider layer (Ollama / Anthropic / OpenRouter) with per-document token cost logging
- [ ] Phase 3: Install & Verify Scripts — Bash scripts to install prerequisites, generate config, and verify the live stack
Phase Details
Phase 1: Core Stack
Goal: The complete 6-service stack starts healthy on Debian 13 with a single command and no host-side dependencies
Depends on: Nothing (first phase)
Requirements: STACK-01, STACK-02, STACK-03, STACK-04, STACK-05
Success Criteria (what must be TRUE):
1. docker compose up -d on a fresh Debian 13 machine starts all 6 services (Paperless-ngx, PostgreSQL, Redis, paperless-ai, Ollama, Gitea) and all report healthy
2. Ollama responds to curl http://localhost:11434 from inside the Docker network using GPU (nvidia-smi visible inside the container)
3. Gitea is reachable on its mapped port; Paperless-ngx UI loads on port 8000 — no service requires anything running on the host outside Docker
Plans: 2 plans
Plans:
- [ ] 01-01-PLAN.md — Ollama (GPU-Passthrough) + Gitea als neue Dienste in docker-compose.yml
- [ ] 01-02-PLAN.md — Explizites Netz, Healthchecks, Sicherheitshaertung, docker-compose.env.template
Phase 2: AI Providers
Goal: Switching between local Ollama and cloud LLM providers is a single env-var change, and every cloud call logs its token cost
Depends on: Phase 1
Requirements: AI-01, AI-02, AI-03, AI-04
Success Criteria (what must be TRUE):
1. Setting AI_PROVIDER=anthropic (or openrouter) in docker-compose.env and restarting paperless-ai causes documents to be processed via that provider — no config file edits required
2. A document processed via Anthropic or OpenRouter produces a log entry recording model name, tokens in, tokens out, and estimated cost in USD
3. Default configuration (AI_PROVIDER=ollama) uses no external network calls and no API keys are required
Plans: TBD
Phase 3: Install & Verify Scripts
Goal: A developer or sysadmin can go from a bare Debian 13 machine to a running, verified stack using only the provided bash scripts
Depends on: Phase 1, Phase 2
Requirements: SCRIPT-01, SCRIPT-02, SCRIPT-03
Success Criteria (what must be TRUE):
1. Running ./setup.sh on a fresh Debian 13 machine installs Docker, nvidia-container-toolkit, and clones/starts the stack — or exits early with a clear error if a prerequisite is missing
2. Running ./verify.sh against a live stack reports pass/fail for each service (containers healthy, Ollama GPU accessible, Paperless API responding, Gitea reachable) and exits non-zero on any failure
3. Running ./setup.sh --init-config generates a valid docker-compose.env from the template by prompting for secrets, with safe defaults pre-filled for non-secret values
Plans: TBD
Progress Table
| Phase | Plans Complete | Status | Completed |
|---|---|---|---|
| 1. Core Stack | 0/2 | Planned | - |
| 2. AI Providers | 0/? | Not started | - |
| 3. Install & Verify Scripts | 0/? | Not started | - |
Coverage Map
| Requirement | Phase | Description |
|---|---|---|
| STACK-01 | Phase 1 | docker compose up runs full stack on Debian 13 |
| STACK-02 | Phase 1 | Ollama containerized with NVIDIA GPU passthrough |
| STACK-03 | Phase 1 | Gitea container in Compose network |
| STACK-04 | Phase 1 | Existing services (Paperless, PostgreSQL, Redis, paperless-ai) retained |
| STACK-05 | Phase 1 | All services communicate via Docker internal network |
| AI-01 | Phase 2 | AI provider switchable via env var |
| AI-02 | Phase 2 | Anthropic API as drop-in alternative |
| AI-03 | Phase 2 | OpenRouter API as drop-in alternative |
| AI-04 | Phase 2 | Token usage logged per document for cloud providers |
| SCRIPT-01 | Phase 3 | setup.sh checks prerequisites and installs stack |
| SCRIPT-02 | Phase 3 | verify.sh tests live stack health |
| SCRIPT-03 | Phase 3 | setup.sh generates docker-compose.env from template |