closes board-viewer-cron-deploy Two-service stack at /opt/stacks/board-viewer/ on VDS: - board-viewer-build (node:22-alpine): cron-loop `while true; do node cli.ts; sleep 300`, writes to shared docker volume `dist` - board-viewer-web (nginx:alpine): serves dist read-only, Traefik route Host(`board.kzntsv.site`) → letsEncrypt + basic-auth middleware Files: - deploy/Dockerfile.build — build image (registry.kzntsv.site/board-viewer-build) - deploy/docker-compose.yml — stack with traefik labels (`proxy` network, same as Gitea) - deploy/nginx.conf — static serving with Cache-Control - deploy/auth.toml.example — Gitea token + board_viewer_repos whitelist - deploy/.env.example — BOARD_VIEWER_USERS for basic-auth (with $$ escape note) - deploy/README.md — DNS setup + image build/push + bootstrap + smoke + DR steps Configs are declarative ([skip-tdd: visual]). Acceptance = deploy + curl (see README §4 'Verify'). Both auth.toml and .env are gitignored. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
50 lines
647 B
Plaintext
50 lines
647 B
Plaintext
# Dependencies
|
|
node_modules/
|
|
.venv/
|
|
__pycache__/
|
|
*.pyc
|
|
|
|
# Build outputs
|
|
dist/
|
|
build/
|
|
*.egg-info/
|
|
|
|
# Deploy secrets (committed via *.example files)
|
|
deploy/.env
|
|
deploy/auth.toml
|
|
|
|
# Playwright MCP scratch
|
|
.playwright-mcp/
|
|
board-viewer-*.png
|
|
board-by-project.png
|
|
|
|
# Environment
|
|
.env
|
|
.env.local
|
|
.env.*.local
|
|
|
|
# IDE
|
|
.idea/
|
|
.vscode/
|
|
*.swp
|
|
*.swo
|
|
|
|
# OS
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# Logs
|
|
*.log
|
|
logs/
|
|
|
|
# AI обвеска — слой 2: переопределяем глобальный ~/.config/git/ignore
|
|
# для своих репо (см. global wiki concept meta-out-of-repo)
|
|
!.claude/
|
|
!.tasks/
|
|
!.wiki/
|
|
!.brainstorm/
|
|
!.archive/
|
|
!.mcp/
|
|
!.mcp.json
|
|
!MEMORY.md
|