Last updated: Aug 11, 2025, 07:47 AM UTC

Sliplane Container Management Guide

Overview

Sliplane is a managed container hosting platform that simplifies Docker deployments. This guide covers all methods for managing your containers on Sliplane.

Table of Contents

  1. Initial Setup
  2. SSH Access
  3. Container Management Methods
  4. API Usage
  5. Common Operations
  6. Troubleshooting

Initial Setup

Prerequisites

  • Sliplane account (sign up at https://sliplane.io)
  • SSH key pair generated
  • Service deployed on Sliplane

Adding SSH Keys

  1. Log into Sliplane dashboard
  2. Navigate to Settings β†’ SSH Keys
  3. Add your public SSH key
  4. Wait 2-3 minutes for propagation

SSH Access

Connection Formats

Sliplane provides SSH access in two different formats depending on your deployment:

Format 1: Service-based Access

ssh -p 22222 service_<service_id>@<server>.sliplane.app

Example:

ssh -p 22222 service_2aziet132v4b@default-server-jjkn03.sliplane.app

Format 2: App-based Access (Legacy)

ssh root@<your-app-name>.sliplane.app -p 2222

Example:

ssh root@linzoid-sasha-studio.sliplane.app -p 2222

Finding Your SSH Credentials

  1. Log into Sliplane dashboard
  2. Navigate to your service
  3. Look for "SSH Access" or "Terminal" section
  4. Copy the provided SSH command

SSH Options

# Skip host key checking (useful for automation)
ssh -p 22222 service_2aziet132v4b@default-server-jjkn03.sliplane.app \
    -o StrictHostKeyChecking=no \
    -o UserKnownHostsFile=/dev/null

# With specific SSH key
ssh -i ~/.ssh/sliplane_key -p 22222 service_2aziet132v4b@default-server-jjkn03.sliplane.app

SSH Configuration

Add to ~/.ssh/config for easier access:

For Service-based Access:

Host sliplane-sasha
    HostName default-server-jjkn03.sliplane.app
    User service_2aziet132v4b
    Port 22222
    IdentityFile ~/.ssh/sliplane_key
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null

For App-based Access (Legacy):

Host sliplane-myapp
    HostName myapp.sliplane.app
    User root
    Port 2222
    IdentityFile ~/.ssh/sliplane_key

Then connect with:

ssh sliplane-sasha
# or
ssh sliplane-myapp

Container Management Methods

1. Web Dashboard (Primary)

Access at: https://sliplane.io/dashboard

Available Operations:

  • Deploy new versions
  • Manage environment variables
  • View real-time logs
  • Restart containers
  • Monitor health status
  • Configure domains
  • Scale resources

2. SSH Container Management

Once connected via SSH, use Docker commands:

# List all containers
docker ps -a

# View container logs
docker logs <container-id> --tail 100 -f

# Restart container
docker restart <container-id>

# Stop container
docker stop <container-id>

# Start container
docker start <container-id>

# Execute commands in container
docker exec -it <container-id> bash

# Monitor resource usage
docker stats

# Inspect container details
docker inspect <container-id>

# View container processes
docker top <container-id>

3. API Management

Base URL: https://api.sliplane.io


API Usage

Authentication

Each service has:

  • Service ID: Found in dashboard
  • Deploy Secret: Generated per service

Deploy Endpoint

# Trigger deployment
curl -X POST "https://api.sliplane.io/deploy/<service-id>/<deploy-secret>?tag=<tag>"

# Example
curl -X POST "https://api.sliplane.io/deploy/srv-123abc/secret-xyz789?tag=v1.2.3"

GitHub Actions Integration

name: Deploy to Sliplane
on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Deploy
        run: |
          curl -X POST "https://api.sliplane.io/deploy/${{ secrets.SERVICE_ID }}/${{ secrets.DEPLOY_SECRET }}?tag=${{ github.sha }}"

Common Operations

View Logs

# Via SSH
ssh root@myapp.sliplane.app -p 2222
docker logs $(docker ps -q) --tail 100 -f

# Via Dashboard
# Navigate to Services β†’ Your Service β†’ Logs

Restart Container

# Via SSH
ssh root@myapp.sliplane.app -p 2222
docker restart $(docker ps -q)

# Via API (trigger redeploy)
curl -X POST "https://api.sliplane.io/deploy/<service-id>/<deploy-secret>"

Update Environment Variables

# Via Dashboard (Recommended)
# Services β†’ Your Service β†’ Environment β†’ Add/Edit

# Via SSH (temporary, will reset on redeploy)
docker exec <container-id> export NEW_VAR=value

Check Container Health

# Via SSH
ssh root@myapp.sliplane.app -p 2222
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
docker inspect $(docker ps -q) --format='{{.State.Health.Status}}'

Scale Resources

# Via Dashboard
# Services β†’ Your Service β†’ Scale β†’ Adjust resources

# Note: CPU/Memory scaling requires dashboard access

Debug Container Issues

# Connect and investigate
ssh -p 22222 service_2aziet132v4b@default-server-jjkn03.sliplane.app

# Check recent logs
docker logs $(docker ps -aq | head -1) --tail 200

# Access container shell
docker exec -it $(docker ps -q) /bin/bash

# Check processes
docker top $(docker ps -q)

# Inspect configuration
docker inspect $(docker ps -q) | jq '.[0].Config'

Claude CLI Verification

After deploying Sasha Studio with Claude CLI support, verify it's working correctly:

# SSH into container
ssh -p 22222 service_2aziet132v4b@default-server-jjkn03.sliplane.app

# Run verification script
./scripts/verify-claude-deployment.sh

# Or manually check Claude CLI
which claude
claude --version

# Test Claude CLI execution
echo "test" | claude --print "echo hello" --verbose

# Check environment variables
env | grep -E "(CLAUDE|DOCKER|WORKSPACE)"

# Verify workspace symlink (IMPORTANT)
ls -la /home/nodejs/.claude/ | grep projects
# Should show: projects -> /app/workspaces

Workspace Management

The container uses a symlink to consolidate all workspaces in one location:

  • Main workspace directory: /app/workspaces/
  • Claude CLI projects: /home/nodejs/.claude/projects β†’ symlinks to /app/workspaces/
  • Default workspace: /app/workspaces/workspace/

This ensures all Claude CLI operations use the same workspace directory, preventing duplicates.

Fixing Claude CLI Issues

If Claude CLI isn't working properly:

# Run the initialization script
./scripts/docker-init-claude.sh

# Or run the cleanup script to fix workspace issues
./scripts/cleanup-workspaces.sh

# Or manually fix:
# 1. Set environment variables
export RUNNING_IN_DOCKER=true
export USE_DOCKER_WORKSPACE=true
export WORKSPACES_PATH=/app/workspaces
export CLAUDE_PROJECTS_PATH=/app/workspaces

# 2. Create workspace symlink (CRITICAL)
rm -rf /home/nodejs/.claude/projects
ln -s /app/workspaces /home/nodejs/.claude/projects

# 3. Verify Claude CLI
claude --version

# 4. Configure API key (required for operation)
# This should be done through the application settings UI

Known Issues and Solutions

  1. Multiple workspace directories: Fixed by symlinking /home/nodejs/.claude/projects to /app/workspaces
  2. Claude CLI "Invalid API key" error: Configure API key through application settings
  3. Environment variables not set: Check docker-entrypoint.sh is running properly

Troubleshooting

SSH Connection Issues

Problem: Permission denied

# Ensure SSH key is added to Sliplane
# Check key permissions
chmod 600 ~/.ssh/sliplane_key

Problem: Connection timeout

# Verify port 2222 is not blocked
nc -zv myapp.sliplane.app 2222

# Check app status in dashboard

Container Issues

Container keeps restarting:

# Check logs for errors
docker logs $(docker ps -aq | head -1) --tail 100

# Inspect exit codes
docker inspect $(docker ps -aq | head -1) --format='{{.State.ExitCode}}'

Out of memory:

# Check memory usage
docker stats --no-stream

# Scale up via dashboard

Deployment Issues

Deployment not triggering:

# Verify deploy secret
# Check service ID
# Ensure GitHub webhook is configured (for auto-deploy)

Quick Reference

Essential Commands

# SSH connection (service-based)
ssh -p 22222 service_<service_id>@<server>.sliplane.app

# SSH connection (app-based legacy)
ssh root@<app>.sliplane.app -p 2222

# Quick container ID
CONTAINER=$(docker ps -q)

# Logs
docker logs $CONTAINER -f

# Restart
docker restart $CONTAINER

# Shell access
docker exec -it $CONTAINER bash

# Deploy via API
curl -X POST "https://api.sliplane.io/deploy/<id>/<secret>"

# Claude CLI verification
claude --version
./scripts/verify-claude-deployment.sh

Useful Aliases

Add to ~/.bashrc or ~/.zshrc:

# For service-based access
alias sli-ssh='ssh -p 22222 service_2aziet132v4b@default-server-jjkn03.sliplane.app'

# For app-based access (legacy)
# alias sli-ssh='ssh root@myapp.sliplane.app -p 2222'

alias sli-logs='sli-ssh docker logs $(docker ps -q) -f'
alias sli-restart='sli-ssh docker restart $(docker ps -q)'
alias sli-deploy='curl -X POST "https://api.sliplane.io/deploy/$SLIPLANE_ID/$SLIPLANE_SECRET"'
alias sli-claude='sli-ssh claude --version'
alias sli-verify='sli-ssh ./scripts/verify-claude-deployment.sh'

Resources


Security Notes

Important Security Practices:

  • Never commit deploy secrets to version control
  • Rotate deploy secrets regularly
  • Use environment variables for sensitive data
  • Restrict SSH key access
  • Monitor access logs regularly

Last Updated: 2025-01-10