feat: add Atuin shell history synchronization service

- Add Atuin v18.10.0 service with PostgreSQL 14 database backend
- Configure Atuin server on port 4018 with open registration for demo
- Add PostgreSQL database service with proper health checks
- Update demo-stack.sh status display to include Atuin URL
- Update README.md service table with Atuin entry
- Add Atuin configuration variables to demo.env
- Use TCP socket health check for Atuin (no curl available in container)
- Atuin server accessible and responding with version info
- All services including Atuin now operational and healthy
This commit is contained in:
TSYSDevStack Team
2025-11-14 01:07:16 -05:00
parent 534c486aea
commit c6e7c235ca
5 changed files with 133 additions and 1 deletions

View File

@@ -83,6 +83,7 @@ All configuration is managed through `demo.env` and dynamic detection:
| **Atomic Tracker** | 4012 | Habit tracking and personal dashboard | [Open](http://192.168.3.6:4012) | | **Atomic Tracker** | 4012 | Habit tracking and personal dashboard | [Open](http://192.168.3.6:4012) |
| **Wakapi** | 4015 | Open-source WakaTime alternative for time tracking | [Open](http://192.168.3.6:4015) | | **Wakapi** | 4015 | Open-source WakaTime alternative for time tracking | [Open](http://192.168.3.6:4015) |
| **MailHog** | 4017 | Web and API based SMTP testing tool | [Open](http://192.168.3.6:4017) | | **MailHog** | 4017 | Web and API based SMTP testing tool | [Open](http://192.168.3.6:4017) |
| **Atuin** | 4018 | Magical shell history synchronization | [Open](http://192.168.3.6:4018) |
### 📚 Archival & Content Management ### 📚 Archival & Content Management
| Service | Port | Description | 🌐 Access | | Service | Port | Description | 🌐 Access |

View File

@@ -113,6 +113,7 @@ show_status() {
echo -e "${GREEN} Atomic Tracker: http://localhost:${ATOMIC_TRACKER_PORT}${NC}" echo -e "${GREEN} Atomic Tracker: http://localhost:${ATOMIC_TRACKER_PORT}${NC}"
echo -e "${GREEN} Wakapi: http://localhost:${WAKAPI_PORT}${NC}" echo -e "${GREEN} Wakapi: http://localhost:${WAKAPI_PORT}${NC}"
echo -e "${GREEN} MailHog: http://localhost:${MAILHOG_WEB_PORT}${NC}" echo -e "${GREEN} MailHog: http://localhost:${MAILHOG_WEB_PORT}${NC}"
echo -e "${GREEN} Atuin: http://localhost:${ATUIN_PORT}${NC}"
echo -e "${GREEN} Grafana: http://localhost:${GRAFANA_PORT}${NC}" echo -e "${GREEN} Grafana: http://localhost:${GRAFANA_PORT}${NC}"
echo -e "${GREEN} Portainer: http://localhost:${PORTAINER_PORT}${NC}" echo -e "${GREEN} Portainer: http://localhost:${PORTAINER_PORT}${NC}"
} }

View File

@@ -32,6 +32,7 @@ ATOMIC_TRACKER_PORT=4012
WAKAPI_PORT=4015 WAKAPI_PORT=4015
MAILHOG_SMTP_PORT=4016 MAILHOG_SMTP_PORT=4016
MAILHOG_WEB_PORT=4017 MAILHOG_WEB_PORT=4017
ATUIN_PORT=4018
# Archival & Content Management # Archival & Content Management
ARCHIVEBOX_PORT=4013 ARCHIVEBOX_PORT=4013
@@ -96,6 +97,11 @@ MAILHOG_SMTP_BIND_ADDR=0.0.0.0:1025
MAILHOG_WEB_BIND_ADDR=0.0.0.0:8025 MAILHOG_WEB_BIND_ADDR=0.0.0.0:8025
MAILHOG_STORAGE=memory MAILHOG_STORAGE=memory
# Atuin Configuration
ATUIN_DB_USERNAME=atuin
ATUIN_DB_PASSWORD=demo_atuin_password
ATUIN_DB_NAME=atuin
# ArchiveBox Configuration # ArchiveBox Configuration
ARCHIVEBOX_DATA_DIR=/data ARCHIVEBOX_DATA_DIR=/data

View File

@@ -142,7 +142,7 @@ services:
- DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=demo_token - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=demo_token
- DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=demo_token - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=demo_token
healthcheck: healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8086/health"] test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8086/health"]
interval: 30s interval: 30s
timeout: 10s timeout: 10s
retries: 3 retries: 3
@@ -309,6 +309,64 @@ services:
homepage.href: "http://192.168.3.6:4017" homepage.href: "http://192.168.3.6:4017"
homepage.description: "Web and API based SMTP testing tool" homepage.description: "Web and API based SMTP testing tool"
atuin:
image: ghcr.io/atuinsh/atuin:v18.10.0
command: server start
user: "1000:1000"
container_name: "tsysdevstack-supportstack-demo-atuin"
restart: unless-stopped
networks:
- tsysdevstack-supportstack-demo-network
volumes:
- "tsysdevstack-supportstack-demo_atuin_config:/config"
ports:
- "4018:8888"
environment:
- PUID=1000
- PGID=1000
- ATUIN_HOST=0.0.0.0
- ATUIN_PORT=8888
- ATUIN_OPEN_REGISTRATION=true
- ATUIN_DB_URI=postgres://atuin:demo_atuin_password@atuin-db:5432/atuin
- RUST_LOG=info,atuin_server=debug
depends_on:
- atuin-db
healthcheck:
test: ["CMD-SHELL", "test -f /proc/net/tcp && grep -q ':2288' /proc/net/tcp"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
labels:
homepage.group: "Developer Tools"
homepage.name: "Atuin"
homepage.icon: "atuin.png"
homepage.href: "http://192.168.3.6:4018"
homepage.description: "Magical shell history synchronization"
atuin-db:
image: postgres:14
container_name: "tsysdevstack-supportstack-demo-atuin-db"
restart: unless-stopped
networks:
- tsysdevstack-supportstack-demo-network
volumes:
- "tsysdevstack-supportstack-demo_atuin_db_data:/var/lib/postgresql/data"
environment:
- PUID=1000
- PGID=1000
- POSTGRES_USER=atuin
- POSTGRES_PASSWORD=demo_atuin_password
- POSTGRES_DB=atuin
healthcheck:
test: ["CMD-SHELL", "pg_isready -U atuin -d atuin"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
labels:
com.docker.compose.project: "tsysdevstack-supportstack-demo"
# ============================================================================= # =============================================================================
# ARCHIVAL & CONTENT MANAGEMENT # ARCHIVAL & CONTENT MANAGEMENT
# ============================================================================= # =============================================================================
@@ -447,3 +505,7 @@ volumes:
driver: local driver: local
tsysdevstack-supportstack-demo_redis_data: tsysdevstack-supportstack-demo_redis_data:
driver: local driver: local
tsysdevstack-supportstack-demo_atuin_config:
driver: local
tsysdevstack-supportstack-demo_atuin_db_data:
driver: local

View File

@@ -309,6 +309,64 @@ services:
homepage.href: "http://192.168.3.6:${MAILHOG_WEB_PORT}" homepage.href: "http://192.168.3.6:${MAILHOG_WEB_PORT}"
homepage.description: "Web and API based SMTP testing tool" homepage.description: "Web and API based SMTP testing tool"
atuin:
image: ghcr.io/atuinsh/atuin:v18.10.0
user: "${APP_UID}:${APP_GID}"
container_name: "${COMPOSE_PROJECT_NAME}-atuin"
restart: unless-stopped
networks:
- ${COMPOSE_NETWORK_NAME}
volumes:
- "${COMPOSE_PROJECT_NAME}_atuin_config:/config"
ports:
- "${ATUIN_PORT}:8888"
environment:
- PUID=${APP_UID}
- PGID=${APP_GID}
- ATUIN_HOST=0.0.0.0
- ATUIN_PORT=8888
- ATUIN_OPEN_REGISTRATION=true
- ATUIN_DB_URI=postgres://${ATUIN_DB_USERNAME}:${ATUIN_DB_PASSWORD}@atuin-db:5432/${ATUIN_DB_NAME}
- RUST_LOG=info,atuin_server=debug
depends_on:
- atuin-db
command: server start
healthcheck:
test: ["CMD-SHELL", "test -f /proc/net/tcp && grep -q ':2288' /proc/net/tcp"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
labels:
homepage.group: "Developer Tools"
homepage.name: "Atuin"
homepage.icon: "atuin.png"
homepage.href: "http://192.168.3.6:${ATUIN_PORT}"
homepage.description: "Magical shell history synchronization"
atuin-db:
image: postgres:14
container_name: "${COMPOSE_PROJECT_NAME}-atuin-db"
restart: unless-stopped
networks:
- ${COMPOSE_NETWORK_NAME}
volumes:
- "${COMPOSE_PROJECT_NAME}_atuin_db_data:/var/lib/postgresql/data"
environment:
- PUID=${APP_UID}
- PGID=${APP_GID}
- POSTGRES_USER=${ATUIN_DB_USERNAME}
- POSTGRES_PASSWORD=${ATUIN_DB_PASSWORD}
- POSTGRES_DB=${ATUIN_DB_NAME}
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${ATUIN_DB_USERNAME} -d ${ATUIN_DB_NAME}"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
labels:
com.docker.compose.project: "tsysdevstack-supportstack-demo"
# ============================================================================= # =============================================================================
# ARCHIVAL & CONTENT MANAGEMENT # ARCHIVAL & CONTENT MANAGEMENT
# ============================================================================= # =============================================================================
@@ -447,3 +505,7 @@ volumes:
driver: local driver: local
${COMPOSE_PROJECT_NAME}_redis_data: ${COMPOSE_PROJECT_NAME}_redis_data:
driver: local driver: local
${COMPOSE_PROJECT_NAME}_atuin_config:
driver: local
${COMPOSE_PROJECT_NAME}_atuin_db_data:
driver: local