-
Notifications
You must be signed in to change notification settings - Fork 1
PORT_STANDARDIZATION
Stand: 22. Dezember 2025
Version: v1.3.0
Kategorie: 🚀 Deployment
This document summarizes the port standardization effort for ThemisDB to provide clean port mappings for all optional interfaces.
| Port | Service | Protocol | Status | Build Flag |
|---|---|---|---|---|
| 8080 | HTTP API | HTTP/1.1, HTTP/2, GraphQL | Core | None |
| 18765 | Wire Protocol | Binary, gRPC | Core | None |
| 4318 | Metrics | OpenTelemetry/OTLP | Core | None |
| 1883 | MQTT | MQTT 3.1.1, 5.0 (plain) | Optional | -DTHEMIS_ENABLE_MQTT=ON |
| 8883 | MQTT TLS | MQTT over TLS 1.3 | Optional | -DTHEMIS_ENABLE_MQTT=ON |
| 8083 | MQTT WebSocket | MQTT over WebSocket | Optional | -DTHEMIS_ENABLE_MQTT=ON |
| 5432 | PostgreSQL Wire | PostgreSQL Wire Protocol v3.0 | Optional | -DTHEMIS_ENABLE_POSTGRES_WIRE=ON |
| 3000 | MCP | Model Context Protocol | Optional | -DTHEMIS_ENABLE_MCP=ON |
v1.2.0 and earlier:
- Used port 8765 for HTTP API (some configs)
- No standardized port for wire protocol
- No metrics port
v1.3.0+:
- 8080: HTTP API (standardized across all configs)
- 18765: Wire Protocol (new standard, avoids conflicts)
- 4318: Metrics (OTLP standard port)
For backwards compatibility in benchmarks and tests:
- Internal container port 8765 may still be used
- External port mappings should use the new standard (8080, 18765)
- Examples:
"8080:8765"maps host 8080 to container 8765
Docker:
-
/Dockerfile- EXPOSE statements with documentation -
/docker-compose.yml- Standard port mappings -
/docker-compose-vllm.yml- Updated port comments -
/docker/README.md- Port reference table
Documentation:
-
/docs/deployment/PORT_REFERENCE.md- Comprehensive 500+ line guide -
/docs/apis/OPTIONAL_PROTOCOLS.md- Port overview table -
/README.md- Quick reference to default ports
Examples:
-
/examples/railway/docker-compose.railway.yml- Standardized ports
Benchmarks:
-
/benchmarks/docker-compose.benchmark.yml- Uses 8765 internally (OK) -
/benchmarks/docker-compose.multi-shard-raid.yml- Multi-shard with port ranges (OK) -
/benchmarks/docker-compose.raid-phase1.yml- Custom port ranges for testing (OK) -
/benchmarks/docker-compose.raid-phase2.yml- Custom port ranges for testing (OK)
Rationale: Benchmark and test configurations can use custom port mappings for their specific testing scenarios. The internal container ports don't need to change as long as the documentation clearly states the production standard.
version: '3.8'
services:
themisdb:
image: themisdb:1.3.0
ports:
# Core ports (always enabled)
- "8080:8080" # HTTP API
- "18765:18765" # Wire Protocol
- "4318:4318" # Metrics
# Optional protocol ports (uncomment when enabled)
# - "1883:1883" # MQTT plain
# - "8883:8883" # MQTT TLS
# - "8083:8083" # MQTT WebSocket
# - "5432:5432" # PostgreSQL Wire
# - "3000:3000" # MCPversion: '3.8'
services:
shard-0:
image: themisdb:1.3.0
ports:
- "8080:8080" # HTTP API (shard 0)
- "18765:18765" # Wire Protocol (shard 0)
shard-1:
image: themisdb:1.3.0
ports:
- "8081:8080" # HTTP API (shard 1)
- "18766:18765" # Wire Protocol (shard 1)
shard-2:
image: themisdb:1.3.0
ports:
- "8082:8080" # HTTP API (shard 2)
- "18767:18765" # Wire Protocol (shard 2)version: '3.8'
services:
themisdb-test:
image: themisdb:1.3.0
ports:
- "9000:8765" # Custom mapping for testing (acceptable){
"server": {
"host": "0.0.0.0",
"port": 18765, // Wire protocol port
"http_port": 8080, // HTTP API port
"metrics_port": 4318 // Metrics port
},
"optional_protocols": {
"mqtt": {
"enabled": false,
"port": 1883,
"tls_port": 8883,
"websocket_port": 8083
},
"postgres_wire": {
"enabled": false,
"port": 5432
},
"mcp": {
"enabled": false,
"port": 3000
}
}
}Default (Secure):
- Only core ports exposed (8080, 18765, 4318)
- Minimal attack surface
- Optional protocols require explicit opt-in
Production Hardening:
- Use TLS for all protocols
- Prefer encrypted variants (8883 over 1883 for MQTT)
- Network isolation where possible
- Firewall rules to restrict access
# Allow core ports
ufw allow 8080/tcp # HTTP API
ufw allow 18765/tcp # Wire Protocol
ufw allow 4318/tcp # Metrics
# Block unencrypted protocols
ufw deny 1883/tcp # MQTT plain (use 8883 instead)
# Optional: Allow encrypted protocols
ufw allow 8883/tcp # MQTT TLS (if enabled)
ufw allow 5432/tcp # PostgreSQL Wire (if enabled)Problem: Port already in use
Solution: Use docker-compose port mapping to avoid conflicts
ports:
- "8081:8080" # Map host 8081 to container 8080
- "18766:18765"Check list:
- Container is running:
docker ps - Port is exposed in Dockerfile:
EXPOSE 8080 - Port is mapped in docker-compose:
"8080:8080" - Firewall allows traffic:
ufw status - Service is listening:
netstat -tuln | grep 8080
Problem: Connection refused on optional protocol port
Cause: Protocol not enabled at build time
Solution: Rebuild with appropriate flag:
cmake -B build -S . -DTHEMIS_ENABLE_MQTT=ON
docker build --build-arg ENABLE_MQTT=ON -t themisdb:custom .#!/bin/bash
# test-ports.sh - Verify all core ports are accessible
echo "Testing core ports..."
# HTTP API
curl -f http://localhost:8080/health && echo "✓ HTTP API (8080)" || echo "✗ HTTP API (8080)"
# Wire Protocol (telnet test)
timeout 2 bash -c "echo -n '' | telnet localhost 18765 2>&1 | grep -q Connected" && \
echo "✓ Wire Protocol (18765)" || echo "✗ Wire Protocol (18765)"
# Metrics
curl -f http://localhost:4318/metrics && echo "✓ Metrics (4318)" || echo "✗ Metrics (4318)"healthcheck:
test: |
curl -fsS http://localhost:8080/health || exit 1
interval: 30s
timeout: 5s
retries: 3
start_period: 10s- PORT_REFERENCE.md - Complete port documentation with examples
- OPTIONAL_PROTOCOLS.md - Optional protocol configuration
- docker-compose.yml - Reference configuration
- Dockerfile - Port definitions
- Standardized core ports: 8080 (HTTP), 18765 (Wire), 4318 (Metrics)
- Documented optional protocol ports: 1883/8883/8083 (MQTT), 5432 (PostgreSQL), 3000 (MCP)
- Created comprehensive PORT_REFERENCE.md guide
- Updated all production docker-compose files
- Added port reference to documentation
- Mixed port usage (8765, 8080 in different configs)
- No standardized metrics port
- Limited optional protocol documentation
Questions? Open an issue on GitHub
- Architecture-ACCESS-MODEL-IMPLEMENTATION-SUMMARY
- Architecture-ADR-003-pg-dump-sql-parser
- Architecture-BASEENTITY-PRINCIPLE
- Architecture-CACHE-STORAGE-INTEGRATION
- Architecture-CMAKE-ARCHITECTURE
- Architecture-CMAKE-FLAGS-REFERENCE
- Architecture-CMAKE-MODULAR-ARCHITECTURE
- Architecture-CONCERNS-ARCHITECTURE-DIAGRAM
- Architecture-CONCERNS-IMPLEMENTATION-SUMMARY
- Architecture-CONTENT-MODEL
- Architecture-COPILOT-THEMISDB-GRAPH-RAG-BACKEND-ARCHITECTURE
- Architecture-CRYPTO-AND-KEYS
- Architecture-FEATURE-FLAGS-REFERENCE
- Architecture-GPU-ARCHITECTURE-REVIEW-TEMPLATE
- Architecture-HTTP-SHUTDOWN-HARDENING
- Architecture-MIGRATION-GUIDE-CONCERNS
- Architecture-MIGRATION-GUIDE-v13-v14
- Architecture-MODULARIZATION-GUIDE
- Architecture-MODULAR-ARCHITECTURE-ROADMAP
- Architecture-MODULE-ARCHITECTURE-INDEX
- Architecture-P1D01-ISSMPLUGIN-DESIGN-REVIEW
- Architecture-P1-D01-ISSMPLUGIN-DESIGN-REVIEW
- Architecture-P1-D08-MAMBA-GOVERNANCE-CONTRACT
- Architecture-P1-P2-IMPLEMENTATION-COMPLETION-INDEX
- Architecture-PHASE0-COMPLETION-ASSESSMENT
- Architecture-PHASE3-QUERYENGINE-DI-ARCHITECTURE
- Architecture-PHASE4-INDEX-MANAGER-DI
- Architecture-POSTGRESQL-WIRE-PROTOCOL
- Architecture-QUERYENGINE-IMPLEMENTATION-GUIDE
- Architecture-QUERY-SCHEDULING
- Architecture-RAFT-CONSENSUS-DESIGN
- Architecture-README
- Architecture-README-SSM-HYBRID-IMPLEMENTATION
- Architecture-REFACTORING-SUMMARY
- Architecture-RESOURCE-POOLING
- Architecture-SOURCE-DIRECTORY-GUIDE
- Architecture-THEMIS-CORE-GUIDE
- Architecture-UNIFIED-ACCESS-MODEL
- Architecture-WAL-GRPC-MTLS-CONFIGURATION
- Architecture-WIRE-PROTOCOL-RETRY
- Architecture-boltzmann-observability-draft
- Architecture-experimental-logarithmic-vector-storage
- Architecture-llm-wiki-mvp-adr
- Architecture-rewrite-engine-architecture
- Architecture-rope-api-architecture
- Architecture-ssm-gguf-mamba-status
- Architecture-ssm-hybrid-analysis
- Architecture-ssm-hybrid-rollout-plan
- Architecture-ssm-plugin-interface-design-review
- Architecture-transaction-coordinators
- Architecture-wiki-secondary-index
- Architecture-wire-protocol
- Governance-DISABLED-STUB-POLICY
- Governance-DOCS-PR-POLICY
- Governance-GA-PROMOTION-SIGN-OFF
- Governance-GITHUB-MILESTONES-SETUP
- Governance-MATURITY-CLAIM-VERIFICATION-CHECKLIST
- Governance-MATURITY-EVIDENCE-REGISTRY
- Governance-MERGE-GATE-BOT-CONFIG
- Governance-MERGE-GATE-STATUS-LIVE
- Governance-PHASE3-ENFORCEMENT-RUNBOOK
- Governance-PHASE-1-CLOSURE-REPORT
- Governance-PHASE-CLOSURE-POLICY
- Governance-PHASE-DEPENDENCY-GRAPH
- Governance-PLUGIN-SUBMODULE-ROLLBACK
- Governance-PRODUCTION-READY-2026-DELIVERY-PLAN
- Governance-PR-VERSION-TARGETING
- Governance-PR-VERSION-TARGETING-BACKFILL
- Governance-QUERY-MODULE-STATUS
- Governance-README
- Governance-RELEASE-PROMOTION-GATE-POLICY
- Governance-RELEASE-VALIDATION-CHECKLIST
- Governance-SECURITY-MODULE-5671-EVIDENCE-SUMMARY
- Governance-SHARDING-P6-RESIDUAL-RISK-ACCEPTANCE
- Governance-SOURCECODE-COMPLIANCE-GOVERNANCE
- Governance-UPDATES-DEVELOPMENT-STATUS-SIGN-OFF
- Governance-WAVE-C-IMPLEMENTATION-COMPLETE
- Module-acceleration-Roadmap
- Module-access-model-Roadmap
- Module-ai-Roadmap
- Module-analytics-Roadmap
- Module-api-Roadmap
- Module-aql-Roadmap
- Module-auth-Roadmap
- Module-base-Roadmap
- Module-cache-Roadmap
- Module-cdc-Roadmap
- Module-chaos-Roadmap
- Module-chimera-Roadmap
- Module-config-Roadmap
- Module-content-Roadmap
- Module-core-Roadmap
- Module-distributed-knowledge-Roadmap
- Module-distributed-tensor-Roadmap
- Module-document-Roadmap
- Module-ethics-ai-Roadmap
- Module-evaluation-Roadmap
- Module-execution-Roadmap
- Module-exporters-Roadmap
- Module-failover-Roadmap
- Module-geo-Roadmap
- Module-governance-Roadmap
- Module-gpu-Roadmap
- Module-graph-Roadmap
- Module-image-analysis-Roadmap
- Module-importers-Roadmap
- Module-index-Roadmap
- Module-ingestion-Roadmap
- Module-llama-cpp-Roadmap
- Module-llm-Roadmap
- Module-llm-streaming-Roadmap
- Module-llm-wiki-Roadmap
- Module-maintenance-Roadmap
- Module-metadata-Roadmap
- Module-network-Roadmap
- Module-observability-Roadmap
- Module-onnx-clip-Roadmap
- Module-performance-Roadmap
- Module-plugins-Roadmap
- Module-process-Roadmap
- Module-projects-Roadmap
- Module-prompt-engineering-Roadmap
- Module-query-Roadmap
- Module-rag-Roadmap
- Module-replication-Roadmap
- Module-retrieval-Roadmap
- Module-rpc-grpc-Roadmap
- Module-scheduler-Roadmap
- Module-scraper-Roadmap
- Module-search-Roadmap
- Module-security-Roadmap
- Module-server-Roadmap
- Module-sharding-Roadmap
- Module-stable-diffusion-Roadmap
- Module-storage-Roadmap
- Module-temporal-Roadmap
- Module-tensor-Roadmap
- Module-themis-Roadmap
- Module-timeseries-Roadmap
- Module-toolbox-Roadmap
- Module-training-Roadmap
- Module-transaction-Roadmap
- Module-updates-Roadmap
- Module-user-storage-encrypted-Roadmap
- Module-utils-Roadmap
- Module-vector-search-Roadmap
- Module-voice-Roadmap
- Module-whisper-Roadmap