Last updated: Aug 12, 2025, 01:09 PM UTC

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

graph TB subgraph "Sliplane Platform" GH[GitHub Repository] SL[Sliplane Builder] SR[Sliplane Runner] end subgraph "Container & Storage" DC[Docker Container] PV[Persistent Volumes] DB[(SQLite DB)] FS[File Storage] end subgraph "Access" SSL[SSL/HTTPS] DOM[Custom Domain] USR[Users] end GH -->|Push| SL SL -->|Build| DC DC -->|Deploy| SR SR -->|Mount| PV PV --> DB PV --> FS USR -->|HTTPS| SSL SSL --> DOM DOM --> SR

🚦 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

  1. Sign up at sliplane.io using GitHub OAuth
  2. Click "Create Server"
  3. Choose server size (€9/month starter is sufficient)
  4. Select region (EU recommended)

3. Connect Your Container Source

Option A: GitHub Repository (Sliplane builds)

  1. In Sliplane dashboard, click "Add Service"
  2. Connect your GitHub repository
  3. Select branch (usually main)
  4. Set Dockerfile path: Dockerfile.sliplane

Option B: GitHub Container Registry (Recommended)

  1. Set up GitHub Actions to build (see GitHub Container Registry Setup)
  2. In Sliplane, select "Docker Hub" as source
  3. Enter image: ghcr.io/YOUR_USERNAME/YOUR_REPO:latest
  4. 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:

  1. Pull your code from GitHub
  2. Build the Docker image
  3. Deploy the container
  4. Mount persistent volumes
  5. 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:

  1. Go to your service
  2. Click "Logs" tab
  3. View real-time or historical logs

Backups

Sliplane automatically backs up volumes daily. To create manual backup:

  1. Go to Volumes section
  2. Select volume
  3. Click "Create Backup"

Restoration

To restore from backup:

  1. Go to Backups section
  2. Select backup to restore
  3. Creates new volume with backup data
  4. 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:

  1. Go to your service
  2. Click "Rebuild & Deploy"
  3. Watch deployment progress

Rollback

To rollback to previous version:

  1. Go to Deployments history
  2. Select previous successful deployment
  3. Click "Rollback"

Security Best Practices

1. Secrets Management

  • Never commit .env.sliplane.production to 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

  1. Use existing docker-compose.yml as reference
  2. Create volumes in Sliplane matching compose volumes
  3. Copy environment variables
  4. Deploy using Dockerfile.sliplane

From Cloud Platform

  1. Export data from current platform
  2. Create Sliplane volumes
  3. Upload data to volumes
  4. 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

  1. Regular Backups: Download backups monthly
  2. Monitor Logs: Check for errors weekly
  3. Update Regularly: Keep dependencies current
  4. Test Locally: Use docker-compose for testing
  5. 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