Skip to content

Deploying DockSTARTer

DockSTARTer revolutionizes how you manage Docker containers by providing an intuitive command-line interface that simplifies the entire Docker experience—from installation to ongoing management. Created by the GhostWriters team, this powerful tool eliminates the steep learning curve typically associated with Docker, making container orchestration accessible to everyone from homelab enthusiasts to seasoned system administrators. Instead of wrestling with complex Docker commands and configuration files, DockSTARTer presents you with a clean, menu-driven interface where you can select from over 100 pre-configured applications including media servers like Plex and Jellyfin, download managers like Sonarr and Radarr, home automation platforms like Home Assistant, and productivity tools like Nextcloud and GitLab.

What makes DockSTARTer particularly valuable is its intelligent approach to Docker management. The tool handles all the tedious aspects of container deployment—generating proper environment variables, configuring volume mounts, setting up networking, managing dependencies between containers, and ensuring containers restart automatically after system reboots. It even includes built-in conflict detection to prevent port collisions and provides sensible defaults for each application while still allowing full customization through environment variables. Whether you’re building a complete media server stack, setting up a development environment, or deploying monitoring tools, DockSTARTer streamlines the process from hours of configuration down to minutes of point-and-click selection. The tool’s active community maintains up-to-date application definitions, ensuring compatibility with the latest versions and best practices.

Why Deploy DockSTARTer on Klutch.sh?

Deploying DockSTARTer on Klutch.sh combines the simplicity of automated Docker management with enterprise-grade infrastructure:

  • Simplified Docker Management: Use DockSTARTer’s menu-driven interface to manage complex container deployments without memorizing Docker commands
  • Pre-Configured Applications: Access over 100 ready-to-deploy applications with optimal settings for media servers, home automation, development tools, and more
  • Automatic Configuration: Let DockSTARTer handle environment variables, volume mounts, networking, and container dependencies automatically
  • Always-On Availability: Keep your Docker management interface accessible 24/7 from anywhere with automatic SSL certificates
  • Persistent Storage: Ensure all container configurations, application data, and Docker volumes persist across deployments and restarts
  • Conflict Detection: Built-in port conflict detection prevents deployment issues before they occur
  • Community Support: Benefit from active community-maintained application templates and regular updates
  • Backup Integration: Easily backup and restore entire container stacks with DockSTARTer’s built-in backup functionality

Prerequisites

Before deploying DockSTARTer to Klutch.sh, ensure you have:

  • A Klutch.sh account (sign up here)
  • A GitHub account with a repository for your DockSTARTer deployment
  • Basic understanding of Docker containers and containerization concepts
  • Familiarity with Linux command-line operations
  • Git installed on your local development machine
  • Understanding of persistent storage for Docker volumes
  • Basic knowledge of networking and port configuration

Understanding DockSTARTer Architecture

DockSTARTer operates as a sophisticated Docker management layer with several key components:

Core Components:

  • Main Script (main.sh): The primary entry point that launches the interactive menu system
  • Configuration Manager: Handles .env files and application-specific variables
  • Compose Generator: Dynamically generates Docker Compose configurations based on selected apps
  • Application Library: Pre-configured templates for 100+ popular Docker applications
  • Dependency Manager: Automatically handles inter-container dependencies and service ordering
  • Update System: Keeps application definitions and DockSTARTer itself up to date

Supported Application Categories:

  • Media Servers: Plex, Jellyfin, Emby for video streaming
  • Download Managers: Sonarr, Radarr, Lidarr, Bazarr for automated content management
  • Torrent/Usenet Clients: qBittorrent, Transmission, SABnzbd, NZBGet
  • Home Automation: Home Assistant, Node-RED, Mosquitto MQTT
  • Monitoring & Analytics: Grafana, Prometheus, Netdata, Portainer
  • Productivity Tools: Nextcloud, BookStack, Calibre-Web, Gitea
  • Reverse Proxies: Traefik, SWAG (Nginx with Let’s Encrypt)
  • Database Systems: MariaDB, PostgreSQL, InfluxDB
  • Backup Solutions: Duplicati, Duplicacy, Resilio Sync

Configuration Approach: DockSTARTer uses a centralized .env file to store all configuration variables, making it easy to backup, version control, and restore entire container stacks. Each application has its own set of environment variables that control behavior, exposed ports, volume mounts, and resource limits.

Step 1: Prepare Your Repository

Let’s set up a GitHub repository for DockSTARTer with a production-ready Dockerfile.

    Create a new directory for your project:

    Terminal window
    mkdir dockstarter-app
    cd dockstarter-app
    git init

    Create a production-optimized Dockerfile:

    FROM ubuntu:22.04
    # Avoid interactive prompts during package installation
    ENV DEBIAN_FRONTEND=noninteractive
    # Install system dependencies
    RUN apt-get update && apt-get install -y \
    bash \
    curl \
    git \
    sudo \
    ca-certificates \
    gnupg \
    lsb-release \
    && rm -rf /var/lib/apt/lists/*
    # Install Docker (required by DockSTARTer)
    RUN install -m 0755 -d /etc/apt/keyrings && \
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \
    chmod a+r /etc/apt/keyrings/docker.gpg && \
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && \
    apt-get update && \
    apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin && \
    rm -rf /var/lib/apt/lists/*
    # Create application user
    RUN useradd -m -s /bin/bash dockstarter && \
    usermod -aG docker dockstarter && \
    echo "dockstarter ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
    # Set working directory
    WORKDIR /home/dockstarter
    # Install DockSTARTer
    RUN curl -fsSL https://get.dockstarter.com | bash
    # Create necessary directories
    RUN mkdir -p /home/dockstarter/.docker/compose \
    /home/dockstarter/.config/dockstarter && \
    chown -R dockstarter:dockstarter /home/dockstarter
    # Switch to dockstarter user
    USER dockstarter
    # Expose port for web interface (if using web UI extension)
    EXPOSE 8080
    # Set environment variables
    ENV DS_DIR=/home/dockstarter/.docker
    ENV PATH="/home/dockstarter/.local/bin:${PATH}"
    # Health check
    HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
    CMD docker ps -q > /dev/null || exit 1
    # Start DockSTARTer in daemon mode
    CMD ["/bin/bash", "-c", "sudo dockerd & sleep 5 && /home/dockstarter/.docker/main.sh -c"]

    Create a .env.example file with configuration options:

    # DockSTARTer Configuration
    PUID=1000
    PGID=1000
    TZ=America/New_York
    # Docker Configuration
    DOCKER_HOST=unix:///var/run/docker.sock
    # Application Port (if using web UI)
    WEB_UI_PORT=8080
    # DockSTARTer Settings
    DS_AUTOUPDATE=true
    DS_BACKUP_ENABLED=true
    DS_BACKUP_PATH=/home/dockstarter/backups
    # Default Application Paths
    DS_APPDATA=/home/dockstarter/.config
    DS_DOWNLOADS=/home/dockstarter/downloads
    DS_MEDIA=/home/dockstarter/media
    DS_STORAGE=/home/dockstarter/storage
    # Resource Limits (optional)
    DS_MEM_LIMIT=2g
    DS_CPU_LIMIT=2
    # Logging
    LOG_LEVEL=INFO
    LOG_FILE=/home/dockstarter/logs/dockstarter.log

    Create a .dockerignore file:

    .git
    .github
    *.md
    !README.md
    .env
    .env.*
    !.env.example
    node_modules/
    tmp/
    *.log
    .DS_Store

    Create a README.md with setup instructions:

    # DockSTARTer Deployment on Klutch.sh
    Docker management and automation platform for simplified container orchestration.
    ## Features
    - Interactive menu-driven Docker management
    - 100+ pre-configured application templates
    - Automatic dependency management
    - Environment variable configuration
    - Volume and network management
    - Backup and restore functionality
    - Conflict detection and resolution
    - Community-maintained app library
    ## Local Development
    ### Build the Container
    \`\`\`bash
    docker build -t dockstarter-local .
    \`\`\`
    ### Run Locally
    \`\`\`bash
    docker run -it --privileged \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v dockstarter-config:/home/dockstarter/.config \
    -p 8080:8080 \
    dockstarter-local
    \`\`\`
    ### Access DockSTARTer
    Inside the container:
    \`\`\`bash
    ds
    \`\`\`
    ## Deployment
    This application is configured for deployment on Klutch.sh. See the deployment guide for details.
    ## Configuration
    Copy `.env.example` to `.env` and customize:
    - Set your timezone (TZ)
    - Configure storage paths
    - Enable auto-updates
    - Set resource limits
    ## Available Applications
    DockSTARTer supports 100+ applications including:
    - Media: Plex, Jellyfin, Emby
    - Downloads: Sonarr, Radarr, Lidarr
    - Torrent: qBittorrent, Transmission
    - Automation: Home Assistant, Node-RED
    - Monitoring: Grafana, Portainer
    - Productivity: Nextcloud, Gitea
    - And many more...
    ## Commands
    - `ds` - Launch DockSTARTer menu
    - `ds -c` - Configuration menu
    - `ds -u` - Update DockSTARTer
    - `ds -b` - Backup configuration
    - `ds -r` - Restore configuration
    ## License
    MIT License - See LICENSE file for details.

    Create a docker-compose.yml for local development:

    version: '3.8'
    services:
    dockstarter:
    build: .
    container_name: dockstarter
    privileged: true
    restart: unless-stopped
    ports:
    - "8080:8080"
    volumes:
    - /var/run/docker.sock:/var/run/docker.sock
    - dockstarter-config:/home/dockstarter/.config
    - dockstarter-compose:/home/dockstarter/.docker/compose
    - dockstarter-data:/home/dockstarter/.local/share
    - downloads:/home/dockstarter/downloads
    - media:/home/dockstarter/media
    environment:
    - PUID=1000
    - PGID=1000
    - TZ=America/New_York
    - DS_AUTOUPDATE=true
    networks:
    - dockstarter-network
    volumes:
    dockstarter-config:
    dockstarter-compose:
    dockstarter-data:
    downloads:
    media:
    networks:
    dockstarter-network:
    driver: bridge

    Initialize Git and push to GitHub:

    Terminal window
    git add .
    git commit -m "Initial DockSTARTer setup for Klutch.sh deployment"
    git branch -M main
    git remote add origin https://github.com/YOUR_USERNAME/dockstarter-app.git
    git push -u origin main

Step 2: Deploy to Klutch.sh

Now let’s deploy DockSTARTer to Klutch.sh.

    Log in to your Klutch.sh dashboard at klutch.sh/app.

    Click Create New App and fill in the details:

    • App Name: dockstarter
    • Git Source: Select GitHub
    • Repository: Choose your dockstarter-app repository
    • Branch: main

    Klutch.sh will automatically detect your Dockerfile and use it for deployment.

    Configure the traffic settings:

    • Traffic Type: Select HTTP
    • Internal Port: 8080

    Add persistent storage volumes:

    Volume 1 - Configuration:

    • Mount Path: /home/dockstarter/.config
    • Size: 10GB

    Volume 2 - Docker Compose Files:

    • Mount Path: /home/dockstarter/.docker/compose
    • Size: 5GB

    Volume 3 - Application Data:

    • Mount Path: /home/dockstarter/.local/share
    • Size: 20GB

    Volume 4 - Downloads:

    • Mount Path: /home/dockstarter/downloads
    • Size: 100GB

    Volume 5 - Media Storage:

    • Mount Path: /home/dockstarter/media
    • Size: 500GB

    Add environment variables:

    PUID=1000
    PGID=1000
    TZ=America/New_York
    DS_AUTOUPDATE=true
    DS_BACKUP_ENABLED=true
    DS_APPDATA=/home/dockstarter/.config
    DS_DOWNLOADS=/home/dockstarter/downloads
    DS_MEDIA=/home/dockstarter/media
    LOG_LEVEL=INFO

    Click Deploy to start the deployment process.

    Wait for the deployment to complete. Klutch.sh will:

    • Clone your repository
    • Build the Docker image with DockSTARTer pre-installed
    • Start the container with Docker daemon
    • Configure networking and persistent storage
    • Assign a URL like dockstarter.klutch.sh

    Access your DockSTARTer instance at dockstarter.klutch.sh.

    Note: Since DockSTARTer is primarily a command-line tool, you’ll need to access it via SSH or container shell. For a web-based interface, consider installing applications like Portainer through DockSTARTer.

Step 3: Initial DockSTARTer Configuration

After deployment, configure DockSTARTer for your needs.

    Access the container shell through Klutch.sh dashboard or SSH.

    Run the DockSTARTer command:

    Terminal window
    ds

    You’ll see the main menu with these options:

    • Configuration: Set up applications and environment variables
    • Install/Update: Install or update selected applications
    • Backup/Restore: Backup or restore your configuration
    • System: Perform system maintenance tasks
    • Updates: Check for DockSTARTer updates
    • Exit: Close the menu

    Select Configuration > Full Setup to start the guided setup.

    Choose applications you want to deploy. Use arrow keys to navigate and space bar to select/deselect:

    Popular Media Server Stack:

    • Plex or Jellyfin (media server)
    • Sonarr (TV show management)
    • Radarr (movie management)
    • Lidarr (music management)
    • Bazarr (subtitle management)
    • qBittorrent or Transmission (torrent client)
    • Jackett or Prowlarr (indexer)
    • Overseerr (media request management)

    Home Automation Stack:

    • Home Assistant (home automation hub)
    • Node-RED (automation flows)
    • Mosquitto (MQTT broker)
    • Zigbee2MQTT (Zigbee integration)
    • Grafana (visualization)

    Productivity Stack:

    • Nextcloud (file sync and collaboration)
    • Gitea (Git hosting)
    • BookStack (documentation)
    • Calibre-Web (ebook library)
    • Portainer (Docker management UI)

    After selecting applications, DockSTARTer will prompt you to configure environment variables for each selected app. Common variables include:

    • PUID/PGID: User and group IDs for file permissions (typically 1000)
    • TZ: Timezone (e.g., America/New_York)
    • Port Numbers: Exposed ports for each application
    • API Keys: Authentication tokens for external services
    • Storage Paths: Volume mount locations

    Review the generated configuration. DockSTARTer shows you all selected apps and their settings.

    Confirm and deploy. DockSTARTer will:

    • Generate Docker Compose files
    • Pull required Docker images
    • Create necessary volumes and networks
    • Start all containers in the correct order
    • Configure inter-container dependencies

    Monitor the deployment progress. DockSTARTer displays real-time logs as containers start.

Step 4: Managing Applications with DockSTARTer

Learn how to manage your deployed applications effectively.

    View Running Containers:

    Terminal window
    ds
    # Select: System > View Containers

    This displays all running containers managed by DockSTARTer with their status, ports, and resource usage.

    Update Applications:

    Terminal window
    ds
    # Select: Install/Update > Update Containers

    DockSTARTer will:

    • Check for new Docker image versions
    • Pull updated images
    • Recreate containers with new versions
    • Preserve all configuration and data

    Add New Applications:

    Terminal window
    ds
    # Select: Configuration > Select Apps
    # Choose additional apps to install
    # Configure their variables
    # Install/Update

    Configure Application Settings:

    Terminal window
    ds
    # Select: Configuration > Edit Variables
    # Choose the application to configure
    # Modify environment variables, ports, or paths

    Backup Configuration:

    Terminal window
    ds
    # Select: Backup/Restore > Backup

    This creates a complete backup including:

    • All .env files
    • Docker Compose configurations
    • Application-specific settings
    • Volume mount configurations

    Restore Configuration:

    Terminal window
    ds
    # Select: Backup/Restore > Restore
    # Choose backup timestamp
    # Confirm restoration

    Remove Applications:

    Terminal window
    ds
    # Select: Configuration > Select Apps
    # Deselect apps to remove
    # Save changes
    # System > Prune (to remove unused images/volumes)

    View Logs:

    Terminal window
    # View DockSTARTer logs
    cat ~/logs/dockstarter.log
    # View specific container logs
    docker logs <container_name>
    # Follow logs in real-time
    docker logs -f <container_name>

    Troubleshooting Commands:

    Terminal window
    # Check Docker status
    docker ps -a
    # Restart a specific container
    docker restart <container_name>
    # Rebuild a container
    ds
    # Select: System > Compose Down
    # Then: Install/Update
    # Check port conflicts
    ds
    # Select: System > Port Check

Configure common application stacks with DockSTARTer.

    Media Server Stack Configuration:

    Install Plex Media Server:

    Terminal window
    ds
    # Configuration > Select Apps > Plex
    # Set PLEX_CLAIM (get from plex.tv/claim)
    # Set timezone
    # Configure media paths

    Add Download Managers:

    Terminal window
    # Select: Sonarr, Radarr, Lidarr
    # Configure:
    SONARR_PORT=8989
    RADARR_PORT=7878
    LIDARR_PORT=8686
    # Set download paths to /home/dockstarter/downloads
    # Set media paths to /home/dockstarter/media

    Install Torrent Client:

    Terminal window
    # Select: qBittorrent
    # Configure:
    QBITTORRENT_PORT=8080
    QBITTORRENT_CONNECTION_PORT=6881
    # Set download path

    Add Indexer Manager:

    Terminal window
    # Select: Prowlarr or Jackett
    # Configure:
    PROWLARR_PORT=9696
    # Link to download managers via API

    Home Automation Stack:

    Install Home Assistant:

    Terminal window
    # Select: Home Assistant
    # Configure:
    HOMEASSISTANT_PORT=8123
    TZ=America/New_York
    # Mount config directory

    Add MQTT Broker:

    Terminal window
    # Select: Mosquitto
    # Configure:
    MOSQUITTO_PORT=1883
    MOSQUITTO_WS_PORT=9001
    # Set authentication credentials

    Install Visualization:

    Terminal window
    # Select: Grafana
    # Configure:
    GRAFANA_PORT=3000
    # Set admin password
    # Configure data sources

    Reverse Proxy Setup:

    Install Traefik:

    Terminal window
    # Select: Traefik
    # Configure:
    TRAEFIK_HTTP_PORT=80
    TRAEFIK_HTTPS_PORT=443
    TRAEFIK_DASHBOARD_PORT=8080
    # Set domain name
    # Configure Let's Encrypt email

    Or SWAG (Nginx):

    Terminal window
    # Select: SWAG
    # Configure:
    SWAG_PORT=443
    SWAG_HTTP_PORT=80
    SWAG_URL=yourdomain.com
    SWAG_EMAIL=admin@yourdomain.com

    Database Services:

    Install MariaDB:

    Terminal window
    # Select: MariaDB
    # Configure:
    MARIADB_PORT=3306
    MARIADB_ROOT_PASSWORD=secure_password
    MARIADB_DATABASE=app_db
    MARIADB_USER=app_user
    MARIADB_PASSWORD=user_password

    Add PostgreSQL:

    Terminal window
    # Select: PostgreSQL
    # Configure:
    POSTGRES_PORT=5432
    POSTGRES_USER=postgres
    POSTGRES_PASSWORD=secure_password
    POSTGRES_DB=app_db

    Monitoring Stack:

    Install Netdata:

    Terminal window
    # Select: Netdata
    # Configure:
    NETDATA_PORT=19999
    # Enable container monitoring

    Add Portainer:

    Terminal window
    # Select: Portainer
    # Configure:
    PORTAINER_PORT=9000
    # Set admin password on first login

Step 6: Advanced Configuration

Customize DockSTARTer for advanced use cases.

    Custom Application Overrides:

    DockSTARTer supports custom application definitions for apps not in the default library.

    Create override directory:

    Terminal window
    mkdir -p ~/.docker/compose/.apps
    cd ~/.docker/compose/.apps

    Create custom app definition (example for a custom app):

    custom-app.yml
    version: '3.8'
    services:
    custom-app:
    image: custom/app:latest
    container_name: custom-app
    restart: unless-stopped
    ports:
    - "${CUSTOM_APP_PORT}:8080"
    environment:
    - PUID=${PUID}
    - PGID=${PGID}
    - TZ=${TZ}
    volumes:
    - ${DS_APPDATA}/custom-app:/config
    networks:
    - dockstarter

    Add environment variables to .env:

    Terminal window
    echo "CUSTOM_APP_PORT=9999" >> ~/.docker/compose/.env

    Include in DockSTARTer:

    Terminal window
    # The custom app will appear in the app selection menu
    ds
    # Configuration > Select Apps > custom-app

    Resource Limits:

    Configure CPU and memory limits for containers:

    Edit .env file:

    Terminal window
    # Add to application-specific variables
    PLEX_MEM_LIMIT=4g
    PLEX_CPU_LIMIT=2
    SONARR_MEM_LIMIT=1g
    RADARR_MEM_LIMIT=1g

    Or use Docker Compose overrides:

    ~/.docker/compose/docker-compose.override.yml
    version: '3.8'
    services:
    plex:
    mem_limit: 4g
    cpus: 2
    sonarr:
    mem_limit: 1g
    cpus: 0.5

    Network Configuration:

    Create custom networks for application isolation:

    ~/.docker/compose/docker-compose.override.yml
    networks:
    media:
    driver: bridge
    automation:
    driver: bridge
    databases:
    driver: bridge
    services:
    plex:
    networks:
    - media
    sonarr:
    networks:
    - media
    homeassistant:
    networks:
    - automation
    mariadb:
    networks:
    - databases
    - media

    Scheduled Backups:

    Configure automatic backups using cron:

    # Create backup script
    cat > ~/backup-dockstarter.sh << 'EOF'
    #!/bin/bash
    BACKUP_DIR="/home/dockstarter/backups"
    TIMESTAMP=$(date +%Y%m%d_%H%M%S)
    # Run DockSTARTer backup
    /home/dockstarter/.docker/main.sh -b
    # Compress backup
    tar -czf "${BACKUP_DIR}/dockstarter-${TIMESTAMP}.tar.gz" \
    ~/.docker/compose/.env \
    ~/.docker/compose/docker-compose.yml \
    ~/.config
    # Cleanup old backups (keep last 7 days)
    find "${BACKUP_DIR}" -name "dockstarter-*.tar.gz" -mtime +7 -delete
    echo "Backup completed: ${TIMESTAMP}"
    EOF
    chmod +x ~/backup-dockstarter.sh
    # Add to crontab (daily at 2 AM)
    (crontab -l 2>/dev/null; echo "0 2 * * * /home/dockstarter/backup-dockstarter.sh") | crontab -

    Health Monitoring:

    Add health checks to critical containers:

    ~/.docker/compose/docker-compose.override.yml
    services:
    plex:
    healthcheck:
    test: ["CMD", "curl", "-f", "http://localhost:32400/web"]
    interval: 30s
    timeout: 10s
    retries: 3
    homeassistant:
    healthcheck:
    test: ["CMD", "curl", "-f", "http://localhost:8123"]
    interval: 30s
    timeout: 10s
    retries: 3

    Log Rotation:

    Configure log rotation to prevent disk space issues:

    Terminal window
    # Create logrotate config
    sudo tee /etc/logrotate.d/dockstarter << EOF
    /home/dockstarter/logs/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 0644 dockstarter dockstarter
    }
    EOF

Common Use Cases

DockSTARTer excels in various scenarios:

Complete Home Media Server

Full Stack Setup:
- Plex/Jellyfin for streaming
- Sonarr for TV shows
- Radarr for movies
- Lidarr for music
- Bazarr for subtitles
- qBittorrent for downloads
- Prowlarr for indexing
- Overseerr for requests
- Tautulli for analytics

Home Automation Hub

Smart Home Stack:
- Home Assistant core
- Node-RED for automation flows
- Mosquitto MQTT broker
- Zigbee2MQTT for device integration
- Grafana for monitoring
- InfluxDB for time-series data
- ESPHome for ESP devices

Development Environment

Dev Tools:
- Gitea for Git hosting
- Drone CI for automation
- Code-Server (VS Code in browser)
- PostgreSQL database
- Redis cache
- Portainer for management
- Traefik reverse proxy

Self-Hosted Productivity Suite

Productivity Apps:
- Nextcloud for files and calendar
- Bitwarden for password management
- BookStack for documentation
- Calibre-Web for ebooks
- Paperless-ngx for documents
- Kanboard for task management

Troubleshooting

DockSTARTer Menu Not Launching

Problem: Running ds command shows command not found

Solution:

Terminal window
# Verify installation
ls -la ~/.docker/main.sh
# Reinstall if missing
bash -c "$(curl -fsSL https://get.dockstarter.com)"
# Add to PATH
echo 'export PATH="$HOME/.docker:$PATH"' >> ~/.bashrc
source ~/.bashrc

Containers Not Starting

Problem: Applications fail to start or immediately exit

Solution:

Terminal window
# Check Docker daemon
sudo systemctl status docker
# View container logs
docker logs <container_name>
# Check for port conflicts
ds
# System > Port Check
# Verify permissions
sudo chown -R dockstarter:dockstarter /home/dockstarter/.config

Port Conflicts

Problem: Application won’t start due to port already in use

Solution:

Terminal window
# Find conflicting process
sudo netstat -tulpn | grep <port_number>
# Change port in DockSTARTer
ds
# Configuration > Edit Variables > Select App
# Change PORT variable to unused port
# Or kill conflicting process
sudo kill <process_id>

Permission Issues

Problem: Containers can’t access mounted volumes

Solution:

Terminal window
# Fix ownership
sudo chown -R 1000:1000 /home/dockstarter/media
sudo chown -R 1000:1000 /home/dockstarter/downloads
# Verify PUID/PGID
ds
# Configuration > Edit Variables
# Set PUID=1000 and PGID=1000

Update Failures

Problem: DockSTARTer update fails or containers don’t update

Solution:

Terminal window
# Update DockSTARTer
cd ~/.docker
git pull origin main
# Force container recreation
ds
# System > Compose Down
# Install/Update > Update Containers
# Prune old images
docker image prune -a

High Resource Usage

Problem: Containers consuming excessive CPU or memory

Solution:

Terminal window
# Check resource usage
docker stats
# Add resource limits in .env
echo "PLEX_MEM_LIMIT=4g" >> ~/.docker/compose/.env
echo "PLEX_CPU_LIMIT=2" >> ~/.docker/compose/.env
# Recreate containers
ds
# System > Compose Down
# Install/Update

Backup/Restore Issues

Problem: Backup creation fails or restore doesn’t work

Solution:

Terminal window
# Check backup directory permissions
ls -la ~/backups
# Manual backup
cp -r ~/.docker/compose ~/.docker/compose.backup
cp ~/.docker/compose/.env ~/.docker/compose/.env.backup
# Restore manually
cp ~/.docker/compose.backup/.env ~/.docker/compose/.env
cp -r ~/.docker/compose.backup/* ~/.docker/compose/

Network Connectivity Problems

Problem: Containers can’t communicate with each other

Solution:

Terminal window
# Check Docker networks
docker network ls
# Inspect DockSTARTer network
docker network inspect dockstarter
# Recreate network
ds
# System > Compose Down
# System > Compose Up
# Verify DNS resolution
docker exec <container_name> ping <other_container_name>

Advanced Configuration

Custom Domain Integration

Configure DockSTARTer applications with custom domains:

Terminal window
# Install reverse proxy (Traefik or SWAG)
ds
# Select: Traefik
# Configure domain in .env
echo "TRAEFIK_DOMAIN=yourdomain.com" >> ~/.docker/compose/.env
echo "TRAEFIK_EMAIL=admin@yourdomain.com" >> ~/.docker/compose/.env
# Add application labels for automatic routing
# Edit docker-compose.override.yml

Example Traefik labels:

services:
sonarr:
labels:
- "traefik.enable=true"
- "traefik.http.routers.sonarr.rule=Host(`sonarr.yourdomain.com`)"
- "traefik.http.routers.sonarr.entrypoints=websecure"
- "traefik.http.routers.sonarr.tls.certresolver=letsencrypt"

VPN Integration

Route specific containers through VPN:

Terminal window
# Install VPN container
ds
# Select: Gluetun (recommended) or DelugeVPN/TransmissionVPN
# Configure VPN
GLUETUN_VPN_SERVICE_PROVIDER=nordvpn
GLUETUN_VPN_TYPE=openvpn
GLUETUN_OPENVPN_USER=your_username
GLUETUN_OPENVPN_PASSWORD=your_password
GLUETUN_SERVER_COUNTRIES=United States
# Route other containers through VPN
# In docker-compose.override.yml:
services:
qbittorrent:
network_mode: "service:gluetun"
depends_on:
- gluetun

Remote Access Configuration

Set up secure remote access:

Terminal window
# Option 1: Using Traefik with Let's Encrypt
ds
# Select: Traefik
# Configure domain and email
# Traefik will automatically obtain SSL certificates
# Option 2: Using WireGuard VPN
ds
# Select: Wireguard
# Configure:
WIREGUARD_PEERS=5
WIREGUARD_SERVERURL=your-server-ip
WIREGUARD_SERVERPORT=51820
# Generate client configs
# Option 3: Using Tailscale
docker run -d \
--name=tailscale \
--network=host \
--cap-add=NET_ADMIN \
--cap-add=NET_RAW \
-v /var/lib/tailscale:/var/lib/tailscale \
tailscale/tailscale

Notification Setup

Configure notifications for container events:

Terminal window
# Install Apprise for notifications
ds
# Select: Apprise
# Configure notification services
APPRISE_DISCORD_WEBHOOK=your_webhook_url
APPRISE_TELEGRAM_BOT_TOKEN=your_token
APPRISE_TELEGRAM_CHAT_ID=your_chat_id
APPRISE_EMAIL_SMTP=smtp.gmail.com:587
APPRISE_EMAIL_USER=your_email
APPRISE_EMAIL_PASSWORD=your_password
# Create notification script
cat > ~/notify-container-status.sh << 'EOF'
#!/bin/bash
CONTAINER_NAME=$1
STATUS=$(docker inspect -f '{{.State.Status}}' $CONTAINER_NAME 2>/dev/null)
if [ "$STATUS" != "running" ]; then
curl -X POST "http://localhost:8000/notify" \
-H "Content-Type: application/json" \
-d "{\"body\": \"Container $CONTAINER_NAME is $STATUS\"}"
fi
EOF

Production Best Practices

Security Hardening

Terminal window
# Use strong passwords in .env
PLEX_PASSWORD=$(openssl rand -base64 32)
MARIADB_ROOT_PASSWORD=$(openssl rand -base64 32)
# Enable container security scanning
docker scan <image_name>
# Use secrets instead of environment variables
# Create secrets directory
mkdir -p ~/.docker/secrets
# Store sensitive data
echo "your_api_key" > ~/.docker/secrets/api_key
chmod 600 ~/.docker/secrets/api_key
# Reference in compose:
# secrets:
# api_key:
# file: /home/dockstarter/.docker/secrets/api_key

Performance Optimization

Terminal window
# Enable Docker BuildKit
echo "DOCKER_BUILDKIT=1" >> ~/.bashrc
# Configure log driver to prevent disk space issues
# In docker-compose.override.yml:
x-logging: &default-logging
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
services:
plex:
logging: *default-logging
# Use tmpfs for temporary data
# In docker-compose.override.yml:
services:
plex:
tmpfs:
- /tmp:size=2G,mode=1777

Monitoring and Alerting

Terminal window
# Install monitoring stack
ds
# Select: Prometheus, Grafana, Node Exporter
# Configure Prometheus
cat > ~/.config/prometheus/prometheus.yml << EOF
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'docker'
static_configs:
- targets: ['node-exporter:9100']
- job_name: 'containers'
static_configs:
- targets: ['cadvisor:8080']
EOF
# Import Grafana dashboards
# Dashboard ID 1860 for Node Exporter
# Dashboard ID 893 for Docker containers

Disaster Recovery

# Create comprehensive backup script
cat > ~/full-backup.sh << 'EOF'
#!/bin/bash
BACKUP_DIR="/home/dockstarter/backups"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/full-backup-${TIMESTAMP}.tar.gz"
# Stop containers
docker-compose -f ~/.docker/compose/docker-compose.yml down
# Backup everything
tar -czf "${BACKUP_FILE}" \
~/.docker/compose \
~/.config \
~/downloads \
~/media
# Restart containers
docker-compose -f ~/.docker/compose/docker-compose.yml up -d
# Upload to cloud storage (example: AWS S3)
# aws s3 cp "${BACKUP_FILE}" s3://your-bucket/backups/
# Cleanup old backups (keep last 30 days)
find "${BACKUP_DIR}" -name "full-backup-*.tar.gz" -mtime +30 -delete
echo "Backup completed: ${BACKUP_FILE}"
EOF
chmod +x ~/full-backup.sh
# Schedule weekly full backup
(crontab -l; echo "0 3 * * 0 /home/dockstarter/full-backup.sh") | crontab -

Scaling Considerations

For deployments managing many containers:

  1. Separate Storage: Use dedicated volumes for different application types
  2. Network Segmentation: Create isolated networks for application groups
  3. Resource Allocation: Set CPU and memory limits to prevent resource starvation
  4. Load Distribution: Use multiple instances behind load balancer for high-traffic apps
  5. Centralized Logging: Aggregate logs to external system (ELK stack, Loki)
  6. Health Monitoring: Implement comprehensive health checks and alerting

Conclusion

You’ve successfully deployed DockSTARTer on Klutch.sh, creating a powerful Docker management platform that simplifies container orchestration. Your setup includes:

  • ✅ Interactive menu-driven Docker management interface
  • ✅ Access to 100+ pre-configured application templates
  • ✅ Automatic dependency management and configuration
  • ✅ Persistent storage for all container data and configurations
  • ✅ Backup and restore functionality for disaster recovery
  • ✅ Conflict detection and resource management
  • ✅ Community-maintained application library with regular updates

DockSTARTer transforms Docker management from a complex command-line challenge into an intuitive, menu-driven experience. Whether you’re deploying a complete media server stack, setting up home automation, or building a development environment, DockSTARTer handles the technical complexity while giving you full control over your containerized applications.

For more information about DockSTARTer features and supported applications, visit the official documentation and join the Discord community.

Additional Resources