Deployment Architecture
graph TB
subgraph "Development Environment"
DevMachine[Developer Machine]
LocalVenv[Virtual Environment]
LocalFiles[Local File System]
DevTools[Development ToolsIDE, Git, Testing]
end
subgraph "Production Environment"
ProdServer[Production Server]
ProdVenv[Production Virtual Environment]
subgraph "File Storage"
NewsDir[../News/ Directory]
CapcatsDir[../Capcats/ Directory]
LogDir[Log Files]
ConfigDir[Configuration Files]
end
subgraph "Process Management"
CronJobs[Cron Jobs]
SystemdService[Systemd Service]
ProcessMonitor[Process Monitoring]
end
end
subgraph "Docker Environment"
DockerContainer[Capcat Container]
VolumeMount[Volume Mounts]
NetworkConfig[Network Configuration]
HealthChecks[Health Checks]
end
subgraph "CI/CD Pipeline"
GitRepo[Git Repository]
GithubActions[GitHub Actions]
subgraph "Build Pipeline"
LintCheck[Code Linting]
UnitTests[Unit Tests]
IntegrationTests[Integration Tests]
DocGeneration[Documentation Generation]
PackageBuilding[Package Building]
end
subgraph "Deploy Pipeline"
Staging[Staging Environment]
ProductionDeploy[Production Deployment]
HealthValidation[Health Validation]
Rollback[Rollback Capability]
end
end
subgraph "External Dependencies"
NewsSourcesExt[News Sources APIs]
NetworkExt[Internet Access]
DNSExt[DNS Resolution]
end
%% Development flow
DevMachine --> LocalVenv
LocalVenv --> LocalFiles
DevMachine --> DevTools
%% Production deployment
ProdServer --> ProdVenv
ProdVenv --> NewsDir
ProdVenv --> CapcatsDir
ProdVenv --> LogDir
ProdVenv --> ConfigDir
ProdServer --> CronJobs
ProdServer --> SystemdService
ProdServer --> ProcessMonitor
%% Docker deployment
DockerContainer --> VolumeMount
DockerContainer --> NetworkConfig
DockerContainer --> HealthChecks
VolumeMount --> NewsDir
VolumeMount --> CapcatsDir
%% CI/CD flow
GitRepo --> GithubActions
GithubActions --> LintCheck
LintCheck --> UnitTests
UnitTests --> IntegrationTests
IntegrationTests --> DocGeneration
DocGeneration --> PackageBuilding
PackageBuilding --> Staging
Staging --> ProductionDeploy
ProductionDeploy --> HealthValidation
HealthValidation --> Rollback
%% External dependencies
ProdVenv --> NewsSourcesExt
DockerContainer --> NewsSourcesExt
ProdServer --> NetworkExt
DockerContainer --> NetworkExt
NetworkExt --> DNSExt
%% Styling
classDef dev fill:#e3f2fd
classDef prod fill:#e8f5e8
classDef docker fill:#fff3e0
classDef cicd fill:#f3e5f5
classDef external fill:#fce4ec
class DevMachine,LocalVenv,LocalFiles,DevTools dev
class ProdServer,ProdVenv,NewsDir,CapcatsDir,LogDir,ConfigDir,CronJobs,SystemdService,ProcessMonitor prod
class DockerContainer,VolumeMount,NetworkConfig,HealthChecks docker
class GitRepo,GithubActions,LintCheck,UnitTests,IntegrationTests,DocGeneration,PackageBuilding,Staging,ProductionDeploy,HealthValidation,Rollback cicd
class NewsSourcesExt,NetworkExt,DNSExt external
Use the free software Draw.io to clearly visualize the mermaid diagrams.
Copy the mermaid code and from the drop-down menu select
Arrange → Insert → Advanced → Mermaid
.
Deployment Options
1. Direct Installation
# System-wide installation
sudo pip install capcat
capcat bundle tech --count 10
# User installation
pip install --user capcat
~/.local/bin/capcat bundle tech --count 10
2. Virtual Environment
# Development setup
python3 -m venv capcat-env
source capcat-env/bin/activate
pip install -r requirements.txt
./capcat bundle tech --count 10
3. Docker Deployment
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
RUN chmod +x capcat
VOLUME ["/app/output"]
CMD ["./capcat", "bundle", "tech", "--count", "10"]
4. Systemd Service
[Unit]
Description=Capcat News Archiver
After=network.target
[Service]
Type=oneshot
User=capcat
WorkingDirectory=/opt/capcat
ExecStart=/opt/capcat/venv/bin/python capcat.py bundle tech --count 30
Environment=CAPCAT_OUTPUT_DIR=/var/lib/capcat/news
[Install]
WantedBy=multi-user.target
5. Cron Job
# Daily news archiving at 6 AM
0 6 * * * /opt/capcat/venv/bin/python /opt/capcat/capcat.py bundle tech --count 30
Security Considerations
File Permissions
Restrict write access to output directories
Network Access
Firewall rules for external connections
User Isolation
Run under dedicated service account
Log Security
Secure log file access and rotation
Dependency Management
Regular security updates