← Back to appsmith

How to Deploy & Use appsmith

Appsmith Deployment and Usage Guide

1. Prerequisites

Before installing Appsmith, ensure you have:

  • Docker (Recommended) - Version 20.10.0 or higher
  • Docker Compose - Version 1.29.0 or higher (for Docker installation)
  • Node.js - Version 16 or higher (for development)
  • Git - For cloning the repository
  • Kubernetes cluster (Optional) - For Kubernetes deployment
  • AWS account (Optional) - For AWS AMI deployment
  • PostgreSQL - Version 11 or higher (required for persistent storage)
  • Redis - Version 6 or higher (required for session management)
  • MongoDB - Version 4.4 or higher (required for metadata storage)

For development:

  • TypeScript - Version 4.9+
  • Yarn - Package manager (preferred over npm)
  • Java 11+ - For backend services

2. Installation

Docker (Recommended)

# Create a directory for Appsmith
mkdir appsmith
cd appsmith

# Download the Docker Compose file
curl -L https://bit.ly/32jBNin -o docker-compose.yml

# Pull and start Appsmith
docker-compose pull
docker-compose up -d

Appsmith will be available at http://localhost (or your server IP).

Kubernetes

# Clone the deployment repository
git clone https://github.com/appsmithorg/appsmith.git
cd appsmith/deploy/k8s

# Deploy using Helm
helm install appsmith ./helm --namespace appsmith --create-namespace

AWS AMI

  • Launch the Appsmith AMI from AWS Marketplace
  • Configure security groups to allow ports 80 (HTTP) and 443 (HTTPS)
  • Access via the EC2 instance public IP

Manual Installation

# Clone the repository
git clone https://github.com/appsmithorg/appsmith.git
cd appsmith

3. Configuration

Environment Variables

Create a .env file in your installation directory:

# Database Configuration
APPSMITH_MONGODB_URI=mongodb://localhost:27017/appsmith
APPSMITH_REDIS_URL=redis://localhost:6379
APPSMITH_DB_URL=postgresql://appsmith:password@localhost:5432/appsmith

# Encryption
APPSMITH_ENCRYPTION_PASSWORD=your-encryption-password
APPSMITH_ENCRYPTION_SALT=your-encryption-salt

# Email (for user invitations)
APPSMITH_MAIL_ENABLED=false
APPSMITH_MAIL_HOST=
APPSMITH_MAIL_PORT=
APPSMITH_MAIL_USERNAME=
APPSMITH_MAIL_PASSWORD=

# Authentication
APPSMITH_SIGNUP_DISABLED=false
APPSMITH_ADMIN_EMAILS=admin@example.com

# Git Sync (for version control)
APPSMITH_GIT_ROOT=/appsmith-stacks/git-storage

Configuration Files

Key configuration files in the source code:

  • app/client/src/configs/* - Frontend configuration
  • app/server/appsmith-server/src/main/resources/* - Backend configuration
  • deploy/docker/conf/* - Docker deployment configuration

API Keys and Integrations

Appsmith supports 25+ databases and APIs. Configure datasources via:

  1. Navigate to your Appsmith instance
  2. Click "Datasources" in the left pane
  3. Click "+ New Datasource"
  4. Select your database/API type
  5. Provide connection parameters:
    • REST API: Base URL, headers, authentication
    • Database: Host, port, database name, credentials
    • Google Sheets: OAuth2 credentials
    • AWS S3: Access keys and region

4. Build & Run

Development Environment

# Install dependencies
cd appsmith
yarn install

# Set up environment variables for development
cp .env.example .env
# Edit .env with your local configuration

# Start backend services (requires Java 11+)
cd app/server
./scripts/start-dev-server.sh

# In another terminal, start frontend
cd app/client
yarn start

The development server will be available at http://localhost:3000.

Production Build

# Build the entire project
cd appsmith
./scripts/build.sh

# Or build individually
cd app/client
yarn build:prod

cd ../server
./build.sh

Running Tests

# Run frontend tests
cd app/client
yarn test

# Run backend tests
cd app/server
./gradlew test

5. Deployment

Docker Deployment (Production)

# Using the provided production Dockerfile
docker build -t appsmith/appsmith-ce:latest .

# Run with persistent volumes
docker run -d \
  --name appsmith \
  -p 80:80 \
  -p 443:443 \
  -v /appsmith-stacks:/appsmith-stacks \
  -e APPSMITH_ENCRYPTION_PASSWORD=your-password \
  -e APPSMITH_ENCRYPTION_SALT=your-salt \
  appsmith/appsmith-ce:latest

Kubernetes (Production)

# Example production values.yaml for Helm
replicaCount: 3
resources:
  limits:
    memory: 2Gi
    cpu: 1000m
  requests:
    memory: 1Gi
    cpu: 500m

persistence:
  enabled: true
  storageClass: "standard"
  size: 20Gi

ingress:
  enabled: true
  hosts:
    - host: appsmith.yourdomain.com
      paths:
        - path: /
          pathType: Prefix

Cloud Platforms

Recommended deployment platforms:

  • AWS: Use ECS/EKS with RDS (PostgreSQL), ElastiCache (Redis), DocumentDB (MongoDB)
  • Google Cloud: GKE with Cloud SQL, Memorystore, MongoDB Atlas
  • Azure: AKS with Azure Database for PostgreSQL, Azure Cache for Redis
  • DigitalOcean: Kubernetes with Managed Databases
  • Heroku: Custom buildpack deployment (requires configuration)

Scaling Considerations

  1. Horizontal Scaling: Deploy multiple Appsmith instances behind a load balancer
  2. Database: Use managed database services for PostgreSQL and MongoDB
  3. Caching: Configure Redis cluster for session management
  4. Storage: Use cloud storage (S3, GCS) for file uploads
  5. Monitoring: Set up Prometheus/Grafana for metrics

6. Troubleshooting

Common Issues

1. Appsmith fails to start with database errors

# Check database connectivity
docker logs appsmith | grep -i "database\|connection"

# Verify all services are running
docker-compose ps

# Ensure PostgreSQL is accessible
psql -h localhost -U appsmith -d appsmith

2. "Invalid dynamic binding" errors in widgets

  • Check your JavaScript expressions in widget properties
  • Verify datasource queries return expected data structure
  • Use the debugger in Appsmith to inspect data

3. Git sync failures

# Check Git configuration
docker exec appsmith cat /appsmith-stacks/configuration/git-config

# Verify SSH keys are properly configured
docker exec appsmith ls -la /appsmith-stacks/ssh

4. Performance issues with large datasets

  • Implement pagination in queries
  • Use server-side pagination for table widgets
  • Optimize database queries with indexes
  • Increase Java heap size for backend:
    JAVA_OPTS=-Xmx2g -Xms512m
    

5. Widget property validation errors Reference the property validation functions from source:

// Example from propertyUtils.ts
export function totalRecordsCountValidation(
  value: unknown,
  props: TableWidgetProps,
) {
  // Validation logic
}

6. Autocomplete not working in JavaScript fields

  • Check the CodemirrorTernService configuration
  • Ensure datasources are properly configured
  • Verify the AST parser is functioning (refer to actionCreator/index.ts)

Logs and Debugging

# View all logs
docker-compose logs -f

# View specific service logs
docker-compose logs appsmith

# Check application logs
docker exec appsmith tail -f /appsmith-stacks/logs/backend.log

# Monitor resource usage
docker stats appsmith

Getting Help

Reset Procedures

Reset admin password:

docker exec appsmith node /opt/appsmith/tools/reset-password.js <new-email> <new-password>

Clear Redis cache:

docker exec redis redis-cli FLUSHALL

Rebuild application:

docker-compose down
docker-compose build --no-cache
docker-compose up -d