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 configurationapp/server/appsmith-server/src/main/resources/*- Backend configurationdeploy/docker/conf/*- Docker deployment configuration
API Keys and Integrations
Appsmith supports 25+ databases and APIs. Configure datasources via:
- Navigate to your Appsmith instance
- Click "Datasources" in the left pane
- Click "+ New Datasource"
- Select your database/API type
- 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
- Horizontal Scaling: Deploy multiple Appsmith instances behind a load balancer
- Database: Use managed database services for PostgreSQL and MongoDB
- Caching: Configure Redis cluster for session management
- Storage: Use cloud storage (S3, GCS) for file uploads
- 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
- Community Support: Discord
- Documentation: docs.appsmith.com
- GitHub Issues: github.com/appsmithorg/appsmith/issues
- Email Support: support@appsmith.com
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