# ๐ TSYS Developer Support Stack
[](https://www.docker.com/)
[](https://gethomepage.dev/)
[](https://wakapi.dev/)
[](https://archivebox.io/)
[](https://github.com/mailhog/MailHog)
> **A comprehensive developer support services stack with automatic service discovery**
---
## ๐ Table of Contents
- [๐ Overview](#-overview)
- [๐๏ธ Architecture](#๏ธ-architecture)
- [โก Quick Start](#-quick-start)
- [๐ง Services](#-services)
- [๐ Service Access](#-service-access)
- [๐ ๏ธ Configuration](#๏ธ-configuration)
- [๐ Health Checks](#-health-checks)
- [๐ Development](#-development)
- [๐จ Important Notes](#-important-notes)
---
## ๐ Overview
The TSYS Developer Support Stack provides a comprehensive suite of developer tools designed to enhance productivity and streamline development workflows. This demo-ready stack includes:
- **๐ Homepage** - A beautiful, customizable dashboard with automatic service discovery
- **โฑ๏ธ Wakapi** - Self-hosted time tracking for developers
- **๐๏ธ ArchiveBox** - Web archiving solution for saving web content
- **๐ง MailHog** - Email testing service for development
- **๐ณ Docker Socket Proxy** - Secure Docker API access
- **๐๏ธ PostgreSQL** - Reliable database backend (ready for additional services)
- **๐ก๏ธ Pi-hole** - DNS-based ad blocking and network monitoring
- **๐ Portainer** - Web-based Docker container management
- **๐ InfluxDB** - Time series database for metrics storage
- **๐ Grafana** - Analytics and visualization platform
- **๐จ Draw.io** - Web-based diagramming and flowchart application
- **๐ Kroki** - Service for converting text diagrams to images
---
## ๐๏ธ Architecture
```mermaid
graph TB
subgraph "TSYS Developer Support Stack"
A[Homepage Dashboard
Port: 4000]
C[Wakapi Time Tracking
Port: 4002]
D[ArchiveBox
Port: 4003]
F[MailHog
Port: 4005]
G[Docker Socket Proxy
Port: 2375]
H[PostgreSQL
Internal]
I[Pi-hole
Port: 4006]
J[Portainer
Port: 4007]
K[InfluxDB
Port: 4008]
L[Grafana
Port: 4009]
M[Draw.io
Port: 4010]
N[Kroki
Port: 4011]
end
A --> C
A --> D
A --> F
A --> G
A --> I
A --> J
A --> K
A --> L
A --> M
A --> N
subgraph "External Access"
O[Developer Browser
192.168.3.6]
end
O --> A
O --> C
O --> D
O --> F
O --> I
O --> J
O --> K
O --> L
O --> M
O --> N
```
---
## โก Quick Start
### ๐ฏ Prerequisites
- [Docker](https://www.docker.com/) 20.10+
- [Docker Compose](https://docs.docker.com/compose/) 2.0+
- Git
### ๐ One-Command Deployment
```bash
# Clone the repository
git clone
cd TSYSDevStack/Support
# Start all services
docker compose -f docker-compose-simple.yml up -d
# Wait for services to be healthy (optional)
docker compose -f docker-compose-simple.yml ps
```
That's it! ๐ All services will be available within 60 seconds.
---
## ๐ง Services
| Service | Description | Port | Health Check | Status |
|---------|-------------|------|--------------|--------|
| **Homepage** | Developer dashboard with service discovery | `4000` | โ
HTTP Check | ๐ข Active |
| **Atuin** | Synced shell history database | `4001` | โ
HTTP Check | ๐ข Active |
| **Wakapi** | Time tracking for developers | `4002` | โ
HTTP Check | ๐ข Active |
| **ArchiveBox** | Web archiving solution | `4003` | โ
HTTP Check | ๐ข Active |
| | **Tube Archivist** | YouTube media archiving | `4004` | โ
HTTP Check | ๐ก Starting |
| | **MailHog** | Email testing service | `4005` | โ
HTTP Check | ๐ข Active |
| | **Docker Socket Proxy** | Secure Docker API access | `2375` | โ
HTTP Check | ๐ก Starting |
| | **PostgreSQL** | Database for Atuin | `5432` | โ
DB Check | ๐ข Active |
| | **Elasticsearch** | Search engine for Tube Archivist | `9200` | โ
HTTP Check | ๐ข Active |
| | **Pi-hole** | DNS management and network monitoring | `4006` | โ
HTTP Check | ๐ข Active |
| | **Portainer** | Web-based Docker container management | `4007` | โ
HTTP Check | ๐ข Active |
| | **InfluxDB** | Time series database for metrics | `4008` | โ
HTTP Check | ๐ข Active |
| | **Grafana** | Analytics and visualization platform | `4009` | โ
HTTP Check | ๐ข Active |
| | **Draw.io** | Web-based diagramming application | `4010` | โ
HTTP Check | ๐ข Active |
| | **Kroki** | Diagrams as a service | `4011` | โ
HTTP Check | ๐ข Active |
---
## ๐ Service Access
### ๐ Homepage Dashboard
```
http://192.168.3.6:4000
```
- **Features**: Service discovery, system monitoring, quick links
- **Auto-discovery**: All services automatically detected via Docker labels
- **Widgets**: Resource monitoring, search, datetime
### โฑ๏ธ Wakapi Time Tracking
```
http://192.168.3.6:4002
```
### ๐๏ธ ArchiveBox Web Archiving
```
http://192.168.3.6:4003
```
- **Features**: Save web pages, full-text search, tag organization
- **Demo Mode**: Open access for testing web archiving
- **Storage**: File-based archive with SQLite metadata
### ๐ง MailHog Email Testing
```
http://192.168.3.6:4005
```
- **Features**: Web interface for email testing, SMTP capture
- **SMTP Port**: 1025 for application testing
- **Demo**: Open access for email development
### ๐ก๏ธ Pi-hole DNS Management
```
http://192.168.3.6:4006/admin/index.php
```
- **Features**: DNS-based ad blocking and network monitoring
- **Demo Credentials**: admin / demo_password
- **DNS Ports**: 53 (TCP/UDP) for DNS resolution
### ๐ Portainer Container Management
```
http://192.168.3.6:4007
```
- **Features**: Web-based Docker container management
- **Demo Credentials**: admin / demo_password
- **Capabilities**: Container lifecycle, image management, volumes
### ๐ InfluxDB Time Series Database
```
http://192.168.3.6:4008
```
- **Features**: High-performance time series data storage
- **Demo Credentials**: admin / demo_password
- **Organization**: tsysdemo, Bucket: demo_metrics
### ๐ Grafana Analytics Platform
```
http://192.168.3.6:4009
```
- **Features**: Analytics and visualization for time series data
- **Demo Credentials**: admin / demo_password
- **Data Source**: Pre-configured InfluxDB connection
### ๐จ Draw.io Diagramming
```
http://192.168.3.6:4010
```
- **Features**: Web-based diagramming and flowchart creation
- **Export Options**: PNG, SVG, PDF, and more
- **Demo Mode**: No authentication required
### ๐ Kroki Diagrams as a Service
```
http://192.168.3.6:4011
```
- **Features**: Convert text diagrams to images
- **Supported Formats**: PlantUML, Mermaid, GraphViz, and more
- **API**: RESTful interface for diagram generation
---
## ๐ ๏ธ Configuration
### ๐ Directory Structure
```
Support/
โโโ docker-compose-simple.yml # Simplified orchestration file
โโโ demo.env # Environment configuration file (rename from demo.env if needed)
โโโ start-stack.sh # Startup script
โโโ test-stack.sh # Test suite
โโโ homepage/
โ โโโ config/
โ โโโ settings.yaml # Homepage configuration
โ โโโ docker.yaml # Docker integration
โ โโโ bookmarks.yaml # Quick links
โโโ README.md # This file
```
### ๐งช Environment Configuration
The stack uses the `demo.env` file for configuration. To customize settings:
1. Review the default settings in `demo.env`
2. Make changes as needed (especially PUID, PGID, and passwords)
3. The startup scripts will use this file directly
### ๐ Demo Credentials
> โ ๏ธ **WARNING**: These are demo credentials only. Do not use in production!
| Service | Username | Password | Database |
|---------|----------|----------|----------|
| PostgreSQL | `atuin` | `demo_password` | `atuin` |
| Pi-hole | `admin` | `demo_password` | - |
| Portainer | `admin` | `demo_password` | - |
| InfluxDB | `admin` | `demo_password` | tsysdemo/demo_metrics |
| Grafana | `admin` | `demo_password` | - |
| Wakapi | - | - | SQLite |
| ArchiveBox | - | - | SQLite |
| Draw.io | - | - | - |
| Kroki | - | - | - |
---
## ๐ Health Checks
All services include comprehensive health checks:
### ๐ Check Service Status
```bash
# View all services and their health
docker-compose ps
# Check logs for any service
docker-compose logs
# Monitor health in real-time
watch docker-compose ps
```
### ๐ฉบ Health Check Details
| Service | Check Type | Interval | Timeout | Retries |
|---------|------------|----------|---------|---------|
| Homepage | HTTP GET `/` | 30s | 10s | 3 |
| Wakapi | HTTP GET `/` | 30s | 10s | 3 |
| ArchiveBox | HTTP GET `/` | 30s | 10s | 3 |
| MailHog | HTTP GET `/` | 30s | 10s | 3 |
| Pi-hole | HTTP GET `/admin/index.php` | 30s | 10s | 3 |
| Portainer | HTTP GET `/` | 30s | 10s | 3 |
| InfluxDB | HTTP GET `/ping` | 30s | 10s | 3 |
| Grafana | HTTP GET `/api/health` | 30s | 10s | 3 |
| Draw.io | HTTP GET `/` | 30s | 10s | 3 |
| Kroki | HTTP GET `/health` | 30s | 10s | 3 |
| Docker Socket Proxy | HTTP GET `/` | 30s | 10s | 3 |
| PostgreSQL | `pg_isready` | 30s | 10s | 3 |
---
## ๐ Development
### ๐ง Customization
#### Adding New Services
1. Add service to `docker-compose.yml`
2. Add Homepage labels for auto-discovery
3. Update `homepage/config/docker.yaml`
4. Include health checks
#### Modifying Homepage
Edit files in `homepage/config/`:
- `settings.yaml` - Main configuration
- `docker.yaml` - Container monitoring
- `bookmarks.yaml` - Quick links
### ๐ Common Commands
```bash
# Start all services
docker compose -f docker-compose-simple.yml up -d
# Stop all services
docker compose -f docker-compose-simple.yml down
# View logs
docker compose -f docker-compose-simple.yml logs -f
# Rebuild services
docker compose -f docker-compose-simple.yml up -d --build
# Clean up volumes (โ ๏ธ destroys data)
docker compose -f docker-compose-simple.yml down -v
```
---
## ๐จ Important Notes
### โ ๏ธ Demo Environment
- **Purpose**: Demonstration and testing only
- **Data Persistence**: None! All data is stored in ephemeral Docker volumes that are destroyed when the stack is removed
- **Security**: Hardcoded credentials, no encryption, bind mounts removed for security
- **Network**: All services exposed to localhost only
### ๐ Production Considerations
For production deployment, consider:
- ๐ Secure credential management
- ๐ HTTPS/TLS encryption
- ๐ก๏ธ Network isolation
- ๐พ Persistent storage solutions
- ๐ Monitoring and alerting
- ๐ High availability
- ๐๏ธ Backup strategies for important data
### ๐ Troubleshooting
| Issue | Solution |
|-------|----------|
| Services not starting | Check Docker daemon, verify ports |
| Health checks failing | Review logs, check resource availability |
| Cannot access services | Verify firewall, check port binding |
| Data not persisting | Ensure volumes are properly mounted |
---
## ๐ Support
For issues and questions:
1. Check service logs: `docker-compose logs `
2. Verify health status: `docker-compose ps`
3. Review configuration files
4. Check port availability
---
**๐ Happy Developing! ๐**
*Built with โค๏ธ for the TSYS Development Team*
---
[](https://github.com/your-org/TSYSDevStack)