Sliplane Deployment Guide for Sasha Studio
Generated: 2025-08-09 UTC
Platform: Sliplane.io (Container Hosting)
Infrastructure: Hetzner Cloud (Germany)
Architecture: Docker with Persistent Volumes
Overview
Sliplane provides a simple, cost-effective container hosting solution perfect for Sasha Studio. It offers persistent storage through Docker volumes, making it ideal for SQLite databases and file storage without the complexity of cloud-native solutions.
Why Sliplane for Sasha Studio?
SQLite-Friendly: Direct filesystem access, no network storage issues
Persistent Volumes: Data survives deployments and container restarts
Simple Deployment: GitHub integration with automatic builds
Cost-Effective: β¬9/month (~$10) includes everything
Daily Backups: Automatic backups included
SSL Included: Automatic HTTPS certificates
Architecture
π¦ Quick Start
Prerequisites
- GitHub account (for repository connection)
- Sliplane account (sign up at sliplane.io)
- β¬9/month for hosting
1. Prepare for Deployment
# Run the preparation script
./scripts/prepare-sliplane.sh
# This will:
# - Generate secure secrets
# - Create environment configuration
# - Test Docker build locally (optional)
# - Create volume configuration guide
2. Create Sliplane Server
- Sign up at sliplane.io using GitHub OAuth
- Click "Create Server"
- Choose server size (β¬9/month starter is sufficient)
- Select region (EU recommended)
3. Connect Your Container Source
Option A: GitHub Repository (Sliplane builds)
- In Sliplane dashboard, click "Add Service"
- Connect your GitHub repository
- Select branch (usually
main) - Set Dockerfile path:
Dockerfile.sliplane
Option B: GitHub Container Registry (Recommended)
- Set up GitHub Actions to build (see GitHub Container Registry Setup)
- In Sliplane, select "Docker Hub" as source
- Enter image:
ghcr.io/YOUR_USERNAME/YOUR_REPO:latest - Configure credentials if private
4. Configure Volumes
Create these volumes in Sliplane dashboard:
| Volume Name | Mount Path | Purpose | Recommended Size |
|---|---|---|---|
sasha-data |
/app/data |
SQLite database | 1GB |
sasha-docs |
/app/docs |
Documentation | 5GB |
sasha-uploads |
/app/uploads |
User uploads | 10GB |
sasha-config |
/app/config |
Configuration | 100MB |
sasha-workspaces |
/app/workspaces |
Claude workspaces | 5GB |
5. Set Environment Variables
Copy from .env.sliplane.production to Sliplane's environment variables:
NODE_ENV=production
PORT=3005
HOST=0.0.0.0
SESSION_SECRET=<generated-secret>
JWT_SECRET=<generated-secret>
DB_PATH=/app/data/sasha.db
DOCS_PATH=/app/docs
CONFIG_DIR=/app/config
UPLOAD_FOLDER=/app/uploads
WORKSPACES_PATH=/app/workspaces
6. Deploy
Click "Deploy" in Sliplane dashboard. The platform will:
- Pull your code from GitHub
- Build the Docker image
- Deploy the container
- Mount persistent volumes
- Configure SSL certificate
Configuration Details
Dockerfile Optimization
The Dockerfile.sliplane is optimized for:
- Multi-stage builds: Smaller final image
- Non-root user: Security best practice
- Health checks: Automatic monitoring
- Volume declarations: Persistent storage
Environment Variables
Required Secrets
# Generate secure secrets with:
openssl rand -base64 32
SESSION_SECRET=<32+ character random string>
JWT_SECRET=<32+ character random string>
Configuration
# Database (SQLite in persistent volume)
DB_PATH=/app/data/sasha.db
# Persistent directories
DOCS_PATH=/app/docs
CONFIG_DIR=/app/config
UPLOAD_FOLDER=/app/uploads
WORKSPACES_PATH=/app/workspaces
# Claude CLI
CLAUDE_HOME=/home/nodejs/.claude
CLAUDE_PROJECTS_PATH=/app/workspaces
Volume Persistence
All volumes are:
- Persistent across deployments
- Backed up daily automatically
- Shareable between containers
- Restorable from backups
Monitoring & Maintenance
Health Checks
The application exposes /api/health:
{
"status": "healthy",
"timestamp": "2025-08-09T10:00:00Z",
"platform": "sliplane",
"database": "healthy",
"uptime": 3600
}
Logs
Access logs in Sliplane dashboard:
- Go to your service
- Click "Logs" tab
- View real-time or historical logs
Backups
Sliplane automatically backs up volumes daily. To create manual backup:
- Go to Volumes section
- Select volume
- Click "Create Backup"
Restoration
To restore from backup:
- Go to Backups section
- Select backup to restore
- Creates new volume with backup data
- Update service to use new volume
Deployment Workflows
Automatic Deployment (CI/CD)
With GitHub Actions + Container Registry (Recommended)
git add .
git commit -m "Update feature"
git push origin main
# GitHub Actions automatically:
# 1. Builds Docker image
# 2. Pushes to ghcr.io
# 3. Sliplane pulls and deploys (via webhook or manual)
Benefits:
- Faster deployments (pre-built images)
- Version control with tags
- Security scanning included
- Build once, deploy anywhere
With Sliplane Direct Build
git add .
git commit -m "Update feature"
git push origin main
# Sliplane automatically builds and deploys
Benefits:
- Simpler setup
- No additional configuration
- Works out of the box
Manual Deployment
In Sliplane dashboard:
- Go to your service
- Click "Rebuild & Deploy"
- Watch deployment progress
Rollback
To rollback to previous version:
- Go to Deployments history
- Select previous successful deployment
- Click "Rollback"
Security Best Practices
1. Secrets Management
- Never commit
.env.sliplane.productionto Git - Rotate secrets regularly
- Use strong, random secrets (32+ characters)
2. Access Control
- Enable 2FA on Sliplane account
- Use GitHub branch protection
- Limit repository access
3. SSL/HTTPS
- Always use HTTPS (automatic in Sliplane)
- Redirect HTTP to HTTPS
- Use secure cookies
4. Application Security
// Enabled by default in production
HELMET_ENABLED=true // Security headers
RATE_LIMIT_ENABLED=true // Rate limiting
MAX_FILE_SIZE=52428800 // 50MB upload limit
Cost Analysis
Sliplane Pricing
- Server: β¬9/month (~$10)
- Storage: Included in server price
- Bandwidth: Generous allowance included
- SSL: Free
- Backups: Free daily backups
Comparison
| Platform | Monthly Cost | Persistent Storage | Setup Complexity |
|---|---|---|---|
| Sliplane | β¬9 (~$10) | Native volumes | Simple |
| Cloud Run + GCS | $15-35 | Complex mounting | Complex |
| Compute Engine | $25+ | Local disk | Medium |
| Heroku | $25+ | Ephemeral | Simple |
Troubleshooting
Common Issues
Container Won't Start
# Check logs in Sliplane dashboard
# Common causes:
- Missing environment variables
- Port conflict (ensure PORT=3005)
- Volume mount issues
Database Locked
# SQLite lock issues
# Solution: Ensure single container instance
# Check: No multiple containers accessing same volume
Upload Issues
# Check volume permissions
# Ensure /app/uploads volume is mounted
# Verify MAX_FILE_SIZE environment variable
Debug Commands
Access container shell (if enabled):
# In Sliplane dashboard
# Go to service β Terminal
# Or use SSH if configured
Check volume contents:
ls -la /app/data # Database
ls -la /app/docs # Documents
ls -la /app/uploads # Uploads
Migration
From Docker Compose
- Use existing
docker-compose.ymlas reference - Create volumes in Sliplane matching compose volumes
- Copy environment variables
- Deploy using
Dockerfile.sliplane
From Cloud Platform
- Export data from current platform
- Create Sliplane volumes
- Upload data to volumes
- Update DNS to point to Sliplane
Data Migration
# Export SQLite database
sqlite3 sasha.db .dump > backup.sql
# Upload to Sliplane volume
# Use Sliplane file manager or SCP
Scaling
Vertical Scaling
- Upgrade server size in Sliplane dashboard
- No downtime required
- Automatic migration
Horizontal Scaling
- SQLite limitation: Single writer only
- For read scaling: Use read replicas
- For full scaling: Migrate to PostgreSQL
Best Practices
- Regular Backups: Download backups monthly
- Monitor Logs: Check for errors weekly
- Update Regularly: Keep dependencies current
- Test Locally: Use
docker-composefor testing - Document Changes: Update deployment docs
Resources
Deployment Checklist
Before going live:
- Generated secure secrets
- Created all required volumes
- Configured environment variables
- Tested Docker build locally
- Connected GitHub repository
- Configured custom domain (optional)
- Tested health endpoint
- Verified backups are running
- Documented admin procedures
- Tested rollback procedure
Last Updated: 2025-08-09
Maintained By: Sasha Studio Team
Deployment Platform: Sliplane.io