Skip to content

Production Deployment

Project: ai-plans Date: 2026-02-08 Status: draft

Context

Deploy ai-plans MkDocs site to production server with domain plans.balabanovich.ru. Enable automatic updates when plans are published via MCP server.

Goals

  • Deploy MkDocs site to production server
  • Configure domain plans.balabanovich.ru
  • Enable auto-pull on git push
  • Add authentication for access control
  • Enable auto-push from MCP server

Requirements

Functional

  • Setup GitHub repository (if not already done)
  • Configure server with Docker
  • Setup domain DNS
  • Configure reverse proxy (Traefik/Nginx)
  • Add Basic Auth or OAuth
  • Enable auto-pull on push (webhook or cron)
  • Update MCP server config for auto-push
  • Test end-to-end workflow

Non-functional

  • HTTPS with valid certificate
  • Fast page load times
  • Reliable auto-updates
  • Secure authentication

Technical Approach

  1. GitHub Setup:
  2. Push to GitHub (if not already)
  3. Configure as private or public repo
  4. Setup webhook for auto-deploy (optional)

  5. Server Setup:

  6. Install Docker and Docker Compose
  7. Clone repository
  8. Run docker compose up -d mkdocs
  9. Configure auto-pull (webhook or cron)

  10. Domain & Proxy:

  11. Point plans.balabanovich.ru to server IP
  12. Configure Traefik/Nginx with HTTPS
  13. Add Basic Auth middleware
  14. Forward to localhost:8100

  15. MCP Server Config:

  16. Set GIT_AUTO_PUSH=true in Kiro config
  17. Test that commits are pushed automatically
  18. Verify server pulls and rebuilds

  19. Auto-Update Options:

  20. Option A (Simple): Cron job git pull every minute
  21. Option B (Webhook): GitHub webhook → script → git pull
  22. Option C (CI/CD): GitHub Actions rebuild on push

Constraints and Risks

  • Need server access and Docker installed
  • DNS propagation may take time
  • Need to secure credentials (Basic Auth password)
  • Auto-pull may have race conditions with concurrent pushes

Open Questions

  • Which server to use? (Coolify, VPS, other?)
  • Public or private repository?
  • Which auth method? (Basic Auth, OAuth, IP whitelist?)
  • Auto-update method preference?