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
Initial Setup
Prerequisites
- Sliplane account (sign up at https://sliplane.io)
- SSH key pair generated
- Service deployed on Sliplane
Adding SSH Keys
- Log into Sliplane dashboard
- Navigate to Settings β SSH Keys
- Add your public SSH key
- 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
- Log into Sliplane dashboard
- Navigate to your service
- Look for "SSH Access" or "Terminal" section
- 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
- Multiple workspace directories: Fixed by symlinking
/home/nodejs/.claude/projectsto/app/workspaces - Claude CLI "Invalid API key" error: Configure API key through application settings
- 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
- Dashboard: https://sliplane.io/dashboard
- Documentation: https://docs.sliplane.io
- API Reference: https://ctrl.sliplane.io
- Support: support@sliplane.io
- Status Page: https://status.sliplane.io
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