Docker Self-Hosted Product - Implementation Plan
Goal
Offer a supported Docker-based self-hosted deployment so customers can run the Accessible stack inside their own infrastructure without adopting our hosted SaaS environment.
Relationship To Existing Docs
This implementation plan complements:
docs/admin/on-prem-deployment.md
That document describes a broad on-prem strategy. This document narrows it into the concrete work needed to ship a supportable Docker-based product.
Product Promise
A customer should be able to:
- obtain our container images
- configure required secrets and environment values
- start the stack with a supported compose package or installer
- operate, update, and troubleshoot the system without custom engineering from us
Recommended Product Shape
Phase 1 should ship one supported self-hosted package:
- Docker Compose based
- Linux x86_64
- one-node deployment
- packaged reverse proxy
- packaged database, storage, queue, API, workers, and monitoring
Kubernetes and VM appliance support can stay future scope.
Main Workstreams
- Container packaging
- Install and configuration experience
- Runtime operations
- Secrets management
- Upgrade and support model
Technical Plan
Phase 1 - Freeze the Self-Hosted Architecture
Decide the first supported bundle and do not over-generalize.
Recommended services:
- reverse proxy
- frontend
- API
- worker
- PostgreSQL
- MinIO
- Redis
- optional monitoring stack
Questions to resolve:
- do we bundle auth locally or require external auth
- do we bundle local AI components or require external AI providers
- do we separate community/dev compose from supported customer compose
Phase 2 - Produce Supportable Images
Every service needs a production-grade image with:
- pinned base image
- health check
- predictable startup command
- non-root user where practical
- documented environment variables
We also need a release strategy:
- semantic version tags
- signed image manifests if possible
- image registry policy
Phase 3 - Build the Installer Experience
Customers should not need to hand-edit raw compose files beyond a small config surface.
Recommended artifacts:
docker-compose.customer.yml.env.customer.example- install script
- preflight checker for ports, disk, memory, and Docker version
Optional but valuable:
- management CLI for init, start, stop, upgrade, backup, restore
Phase 4 - Secrets and Configuration
Decide how self-hosted customers provide:
- app secrets
- auth secrets
- SMTP or email config if needed
- AI provider keys
- license token
Recommended defaults:
- secrets mounted from files or Docker secrets when available
- non-secret config via env file
We should avoid putting raw secrets directly in compose checked into source control.
Phase 5 - Persistent Data Model
Define volumes and backup expectations for:
- PostgreSQL data
- MinIO object storage
- Redis persistence if needed
- logs and monitoring retention
Need documented backup and restore commands before GA.
Phase 6 - Upgrade Strategy
Self-hosted products fail when upgrades are vague.
We need a defined upgrade path:
- version compatibility matrix
- migration ordering
- image pull and restart process
- rollback procedure
If the management CLI exists, this becomes:
accessible-server upgradeaccessible-server rollback
Phase 7 - Supportability
We need operator-facing commands or tooling for:
- health checks
- logs
- disk usage
- queue backlog
- storage health
- provider health
We also need a diagnostic bundle export that excludes document content but includes:
- service versions
- env shape with secrets redacted
- container health
- recent logs
Phase 8 - Documentation
Required docs:
- system requirements
- installation
- first login / bootstrap admin
- AI provider setup
- storage locations and backups
- upgrades and rollback
- troubleshooting guide
MVP Constraints
To keep scope realistic, MVP should require:
- customer-provided AI provider keys
- a Linux server with Docker Compose
- one supported topology
- no multi-node clustering
Deliverables
- production Docker images for the full supported stack
- supported customer compose package
- example env and secret templates
- install and upgrade documentation
- operator troubleshooting guide
Acceptance Criteria
- A clean Linux host can install and run the stack using only documented steps.
- The stack survives restart and preserves data correctly.
- Upgrades and rollbacks work on a test environment.
- Support can request a redacted diagnostic bundle without accessing customer content.
Estimated Effort
- image hardening and packaging: 4-6 days
- installer/config experience: 3-5 days
- operations and backup tooling: 4-6 days
- docs and QA: 3-5 days
- Total MVP: 14-22 days