From c6e7c235caa75f8477b162143610101aca7f05b1 Mon Sep 17 00:00:00 2001 From: TSYSDevStack Team Date: Fri, 14 Nov 2025 01:07:16 -0500 Subject: [PATCH] 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 --- SupportStack/demo/README.md | 1 + SupportStack/demo/demo-stack.sh | 1 + SupportStack/demo/demo.env | 6 ++ SupportStack/demo/docker-compose.yml | 64 ++++++++++++++++++- SupportStack/demo/docker-compose.yml.template | 62 ++++++++++++++++++ 5 files changed, 133 insertions(+), 1 deletion(-) diff --git a/SupportStack/demo/README.md b/SupportStack/demo/README.md index 0704f73..e4c811f 100644 --- a/SupportStack/demo/README.md +++ b/SupportStack/demo/README.md @@ -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) | | **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) | +| **Atuin** | 4018 | Magical shell history synchronization | [Open](http://192.168.3.6:4018) | ### 📚 Archival & Content Management | Service | Port | Description | 🌐 Access | diff --git a/SupportStack/demo/demo-stack.sh b/SupportStack/demo/demo-stack.sh index e7a5c39..c3fdb26 100755 --- a/SupportStack/demo/demo-stack.sh +++ b/SupportStack/demo/demo-stack.sh @@ -113,6 +113,7 @@ show_status() { echo -e "${GREEN} Atomic Tracker: http://localhost:${ATOMIC_TRACKER_PORT}${NC}" echo -e "${GREEN} Wakapi: http://localhost:${WAKAPI_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} Portainer: http://localhost:${PORTAINER_PORT}${NC}" } diff --git a/SupportStack/demo/demo.env b/SupportStack/demo/demo.env index 8e79019..bb510d3 100644 --- a/SupportStack/demo/demo.env +++ b/SupportStack/demo/demo.env @@ -32,6 +32,7 @@ ATOMIC_TRACKER_PORT=4012 WAKAPI_PORT=4015 MAILHOG_SMTP_PORT=4016 MAILHOG_WEB_PORT=4017 +ATUIN_PORT=4018 # Archival & Content Management 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_STORAGE=memory +# Atuin Configuration +ATUIN_DB_USERNAME=atuin +ATUIN_DB_PASSWORD=demo_atuin_password +ATUIN_DB_NAME=atuin + # ArchiveBox Configuration ARCHIVEBOX_DATA_DIR=/data diff --git a/SupportStack/demo/docker-compose.yml b/SupportStack/demo/docker-compose.yml index 0f6ce29..94d3a06 100644 --- a/SupportStack/demo/docker-compose.yml +++ b/SupportStack/demo/docker-compose.yml @@ -142,7 +142,7 @@ services: - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=demo_token - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=demo_token healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8086/health"] + test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8086/health"] interval: 30s timeout: 10s retries: 3 @@ -309,6 +309,64 @@ services: homepage.href: "http://192.168.3.6:4017" 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 # ============================================================================= @@ -447,3 +505,7 @@ volumes: driver: local tsysdevstack-supportstack-demo_redis_data: driver: local + tsysdevstack-supportstack-demo_atuin_config: + driver: local + tsysdevstack-supportstack-demo_atuin_db_data: + driver: local diff --git a/SupportStack/demo/docker-compose.yml.template b/SupportStack/demo/docker-compose.yml.template index 696ee89..7f00464 100644 --- a/SupportStack/demo/docker-compose.yml.template +++ b/SupportStack/demo/docker-compose.yml.template @@ -309,6 +309,64 @@ services: homepage.href: "http://192.168.3.6:${MAILHOG_WEB_PORT}" 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 # ============================================================================= @@ -447,3 +505,7 @@ volumes: driver: local ${COMPOSE_PROJECT_NAME}_redis_data: driver: local + ${COMPOSE_PROJECT_NAME}_atuin_config: + driver: local + ${COMPOSE_PROJECT_NAME}_atuin_db_data: + driver: local