Prerequisites
Before starting, ensure you have:
Server Requirements
- • RamNode VPS (2GB+ RAM, 4GB recommended)
- • 20GB+ storage
- • Ubuntu 20.04 LTS or newer
- • Root or sudo access
Additional Requirements
- • Domain name (optional but recommended)
- • SSH client
- • Basic command line knowledge
Initial Server Setup
Connect to your RamNode VPS and secure the server:
ssh root@your-server-ip# Update package repositories
apt update && apt upgrade -y
# Install essential packages
apt install -y curl wget git ufw fail2banConfigure firewall:
# Configure basic firewall
ufw default deny incoming
ufw default allow outgoing
ufw allow ssh
ufw allow 80
ufw allow 443
ufw enableCreate a non-root user (recommended):
# Create new user
adduser appsmith
# Add to sudo group
usermod -aG sudo appsmith
# Switch to new user
su - appsmithInstall Docker and Docker Compose
Appsmith runs in Docker containers for easy management:
# Install Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# Add user to docker group
sudo usermod -aG docker $USERsudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-composedocker --version
docker-compose --version🔄 Log out and back in for group changes to take effect.
Deploy Appsmith
Choose your deployment method:
Option A: Quick Start (Development/Testing)
# Create appsmith directory
mkdir ~/appsmith && cd ~/appsmith
# Run Appsmith container
docker run -d --name appsmith \
-p 80:80 -p 443:443 \
-v appsmith-data:/appsmith-stacks \
--restart unless-stopped \
appsmith/appsmith-ceAccess at: http://your-server-ip
Option B: Production Deployment with Docker Compose
# Create project directory
mkdir ~/appsmith-production && cd ~/appsmith-production
# Download docker-compose.yml
curl -L https://bit.ly/appsmith-docker-compose -o docker-compose.ymlCreate environment configuration:
# MongoDB Configuration
APPSMITH_MONGODB_URI=mongodb://localhost:27017/appsmith
# Encryption keys (generate your own)
APPSMITH_ENCRYPTION_PASSWORD=your-encryption-password
APPSMITH_ENCRYPTION_SALT=your-encryption-salt
# Mail configuration (optional)
APPSMITH_MAIL_ENABLED=false
# OAuth configuration (optional)
APPSMITH_OAUTH2_GOOGLE_CLIENT_ID=
APPSMITH_OAUTH2_GOOGLE_CLIENT_SECRET=
# Redis configuration
APPSMITH_REDIS_URL=redis://redis:6379
# Custom domain (replace with your domain)
APPSMITH_CUSTOM_DOMAIN=your-domain.comdocker-compose up -dConfigure NGINX Reverse Proxy (Optional)
For production with custom domains, set up NGINX:
sudo apt install nginxsudo tee /etc/nginx/sites-available/appsmith << 'EOF'
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
proxy_read_timeout 300;
}
}
EOFsudo ln -s /etc/nginx/sites-available/appsmith /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginxRun Appsmith on port 8080 when using NGINX:
docker run -d --name appsmith \
-p 8080:80 \
-v appsmith-data:/appsmith-stacks \
--restart unless-stopped \
appsmith/appsmith-ceSSL Certificate Setup
Secure your Appsmith deployment with Let's Encrypt:
sudo apt install certbot python3-certbot-nginxsudo certbot --nginx -d your-domain.comsudo certbot renew --dry-run✅ Certbot will automatically configure NGINX for HTTPS and set up auto-renewal.
Initial Appsmith Configuration
Complete the initial setup through the web interface:
1. Access Your Installation
Navigate to your server's IP address or domain in a web browser. You'll see the Appsmith setup wizard.
2. Create Admin Account
- • Click "Get Started" on the welcome screen
- • Fill in administrator details: Name, Email, Password
- • Choose your use case (team size, organization type)
- • Complete the setup wizard
3. Basic Configuration
- • Organization Settings: Set name, logo, and info under Settings → General
- • User Management: Invite team members via Settings → Users & Groups
- • Email Configuration: Set up SMTP for invitations under Settings → Email
Performance Optimization
Optimize your Appsmith deployment:
Monitor resource usage:
# Check container resource usage
docker stats appsmith
# Optimize Docker container limits
docker update --memory="2g" --cpus="2" appsmith
# Monitor system resources
htopExternal database for production:
docker run -d --name appsmith \
-p 80:80 -p 443:443 \
-e APPSMITH_MONGODB_URI="mongodb://your-external-mongodb:27017/appsmith" \
-v appsmith-data:/appsmith-stacks \
--restart unless-stopped \
appsmith/appsmith-ceBackup Strategy
Implement regular backups for your Appsmith data:
cat > ~/backup-appsmith.sh << 'EOF'
#!/bin/bash
BACKUP_DIR="/home/appsmith/backups"
DATE=$(date +%Y%m%d_%H%M%S)
# Create backup directory
mkdir -p $BACKUP_DIR
# Backup Docker volumes
docker run --rm -v appsmith-data:/data -v $BACKUP_DIR:/backup alpine tar czf /backup/appsmith-backup-$DATE.tar.gz -C /data .
# Keep only last 7 backups
find $BACKUP_DIR -name "appsmith-backup-*.tar.gz" -mtime +7 -delete
EOF
chmod +x ~/backup-appsmith.sh(crontab -l 2>/dev/null; echo "0 2 * * * /home/appsmith/backup-appsmith.sh") | crontab -💾 Backups will run daily at 2:00 AM, keeping the last 7 days of backups.
Monitoring and Maintenance
Keep your Appsmith installation healthy:
Health monitoring:
# Check container health
docker ps
docker logs appsmith
# Monitor disk usage
df -h
# Check memory usage
free -h
# Monitor network connections
netstat -tulnp | grep :80Update Appsmith:
# Pull latest image
docker pull appsmith/appsmith-ce:latest
# Stop current container
docker stop appsmith
# Remove old container
docker rm appsmith
# Start new container with updated image
docker run -d --name appsmith \
-p 80:80 -p 443:443 \
-v appsmith-data:/appsmith-stacks \
--restart unless-stopped \
appsmith/appsmith-ce:latestLog management:
# Configure Docker logging
sudo tee /etc/docker/daemon.json << 'EOF'
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
EOF
sudo systemctl restart dockerSecurity Best Practices
Implement additional security measures:
Server hardening:
# Configure fail2ban for SSH protection
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# Disable root SSH login
sudo sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sudo systemctl restart ssh
# Set up automatic security updates
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgradesNetwork security:
# Restrict database access
ufw deny 27017
# Limit SSH access to specific IPs (optional)
ufw allow from YOUR_IP_ADDRESS to any port ssh
# Enable DDoS protection
echo "net.netfilter.nf_conntrack_max = 2000000" >> /etc/sysctl.conf
sysctl -pAppsmith Security Checklist
- • Enable two-factor authentication for admin accounts
- • Use strong encryption passwords
- • Regularly review user permissions
- • Enable audit logging
- • Configure session timeouts
Troubleshooting
Common issues and their solutions:
Container Won't Start
# Check container logs
docker logs appsmith
# Check system resources
free -h
df -h
# Verify port availability
sudo netstat -tulnp | grep :80Performance Issues
docker update --memory="4g" appsmith
docker exec -it appsmith mongo --eval "db.stats()"
htopSSL Certificate Problems
sudo certbot certificates
sudo certbot renew
sudo nginx -t🎉 Congratulations!
You now have a fully functional Appsmith installation on your RamNode VPS! Start building amazing internal tools and dashboards for your team with this powerful low-code platform.
Next Steps
- • Connect your databases and APIs to Appsmith
- • Explore the widget library and pre-built templates
- • Invite team members and configure role-based access
- • Build your first dashboard or admin panel
- • Set up monitoring for usage and performance
- • Configure email notifications and alerts
- • Consider scaling options as your team grows
