Mark Phase 5 (app deploy) complete for CT 114 — app confirmed healthy via docker compose ps + curl -sv, fixed misleading verify command, documented deprecation log spam and chown-NFS as known-harmless

This commit is contained in:
Spendlik 2026-08-11 09:22:50 +00:00
parent fc7b053a68
commit 1b571abddd

View File

@ -1,6 +1,6 @@
# 114 — Koillection Deployment Guide # 114 — Koillection Deployment Guide
> Status: **IN PROGRESS** — CT created 2026-08-11, base setup + Docker + NAS mount done, app deploy pending (Phase 5+) > Status: **IN PROGRESS** — CT created 2026-08-11, app stack deployed and running, nginx/SSL/DNS/Authelia pending (Phase 6+)
> CT ID: 114 · IP: 192.168.1.114 > CT ID: 114 · IP: 192.168.1.114
> Domain: `collections.spendlik.sk` > Domain: `collections.spendlik.sk`
> Last updated: 2026-08-11 > Last updated: 2026-08-11
@ -18,7 +18,7 @@ Koillection is a self-hosted collection manager for tracking physical collection
- 📚 Comics (title, issue, publisher, language, condition) - 📚 Comics (title, issue, publisher, language, condition)
- 📄 Paper Models (designer, scale, subject, format — physical printed copies) - 📄 Paper Models (designer, scale, subject, format — physical printed copies)
Stack: `koillection/koillection` (PHP/Symfony + Vue.js) + PostgreSQL 16. Uploads (item photos) bind-mounted to NAS for data safety. Stack: `koillection/koillection` (PHP/Symfony + Vue.js, served via FrankenPHP/Caddy) + PostgreSQL 16. Uploads (item photos) bind-mounted to NAS for data safety.
--- ---
@ -142,7 +142,7 @@ Confirmed: `/uploads` mounted, `777 nobody:nogroup`, empty — ready for the app
--- ---
## Phase 5 — Deploy Koillection ## Phase 5 — Deploy Koillection ✅ DONE (2026-08-11)
```bash ```bash
mkdir -p /opt/koillection mkdir -p /opt/koillection
@ -217,12 +217,17 @@ docker compose up -d
docker compose logs -f docker compose logs -f
``` ```
Wait until the koillection container logs settle (Symfony app startup). Then verify locally: Wait until the koillection container logs settle (Symfony/FrankenPHP startup — you'll see deprecation.INFO notices about API Platform `#[ApiResource]` shortName deduplication; these are harmless upstream framework warnings on this image version, not errors). Then verify with a proper status check, **not** a text grep against the homepage (the homepage is just a redirect, so grepping for "koillection" in it will always come back empty and looks like a false failure):
```bash ```bash
curl -s http://localhost:8080 | grep -i koillection docker compose ps
curl -sv http://localhost:8080
``` ```
Expect both containers `healthy`, and the curl to show `HTTP/1.1 302 Found` with `Location: /first-connection` — that's Koillection's normal first-run redirect, confirming the app is up and reachable.
> `chown: Invalid argument` lines for `/uploads` in the startup logs are expected and harmless — same NAS-bind-mount ownership limitation already known from Paperless. Doesn't affect functionality.
--- ---
## Phase 6 — nginx Reverse Proxy (CT 101) ## Phase 6 — nginx Reverse Proxy (CT 101)
@ -434,3 +439,5 @@ mkdir -p /opt/koillection/backups
| DNS record type | Use CNAME → `spendlik.sk`, never a per-subdomain A record (see Phase 8) | | DNS record type | Use CNAME → `spendlik.sk`, never a per-subdomain A record (see Phase 8) |
| Wrong template filename | Verify exact template string with `pveam list local` before `pct create` — versions bump periodically | | Wrong template filename | Verify exact template string with `pveam list local` before `pct create` — versions bump periodically |
| Wrong NAS host mount path | Storage ID is `spendlik-nas`, mounted at `/mnt/pve/spendlik-nas` — verify with `ls /mnt/pve/` before trusting any guide's hardcoded path | | Wrong NAS host mount path | Storage ID is `spendlik-nas`, mounted at `/mnt/pve/spendlik-nas` — verify with `ls /mnt/pve/` before trusting any guide's hardcoded path |
| `curl \| grep koillection` shows nothing | Not a failure — the app root just 302-redirects to `/first-connection`, whose HTML doesn't contain the word "koillection". Use `docker compose ps` (expect `healthy`) and `curl -sv` (expect `302` + `Location: /first-connection`) instead |
| `deprecation.INFO` API Platform log spam on startup | Harmless upstream framework warnings (duplicate `#[ApiResource]` shortName), not errors — ignore |