Deploying a Convos App
Introduction
Convos is a modern chat application built from the ground up to help teams communicate effectively. It brings real-time messaging, team collaboration, and conversation management into a single, elegant platform that works across devices and scales with your team.
What sets Convos apart is its focus on simplicity without sacrificing power. Whether you’re a small team just getting started with internal communication or a larger organization managing multiple channels and thousands of conversations, Convos provides the infrastructure you need without unnecessary complexity.
Core Strengths of Convos:
Intuitive Interface: Clean, modern design that requires zero training. Your team starts chatting immediately without learning a steep interface.
Real-Time Messaging: Messages deliver instantly to all connected users. See who’s typing, reactions to messages, and conversation updates as they happen.
Team Channels: Organize conversations by topic, project, or team. Create public channels everyone can join or private channels for sensitive discussions.
Persistent History: Never lose a message. Full chat history searchable by content, date, or participant. Archive important conversations.
Mobile Ready: Web-based application works perfectly on phones and tablets. No native app installation required—just visit your Convos domain.
Self-Hosted Control: Keep conversations within your infrastructure. Full control over data, compliance, and retention policies.
User Management: Simple user administration. Invite team members, manage roles, and control access to channels.
Integration Ready: Built to integrate with other tools. Webhooks and APIs let you connect Convos to your existing workflow.
Lightweight and Fast: Built with modern technologies that keep the application lean and responsive. Handles thousands of concurrent users.
Convos is perfect for organizations that want reliable team communication without vendor lock-in or monthly per-user fees. Deploy it once on Klutch.sh and it scales with your team.
This guide walks you through deploying Convos on Klutch.sh using Docker. You’ll learn how to set up the application with persistent storage for chat history, configure real-time messaging infrastructure, implement security best practices, optimize performance for concurrent users, and troubleshoot common issues in production environments.
Prerequisites
Before deploying Convos to Klutch.sh, ensure you have:
- A Klutch.sh account with dashboard access
- A GitHub account for repository hosting
- Docker installed locally for testing (optional but recommended)
- Basic understanding of chat applications and real-time communication
- Familiarity with HTTP and WebSocket protocols
- A domain name for your Convos deployment (recommended)
- Understanding of user authentication and session management
Understanding Convos Architecture
Technology Stack
Convos is built on proven, scalable technologies:
Core Platform:
- Perl backend with Mojolicious framework
- Node.js or Perl event loop for real-time communication
- WebSocket support for instant messaging
- SQLite or PostgreSQL for data persistence
- Redis for session management and caching (optional)
Frontend:
- Modern JavaScript for responsive interface
- WebSocket client for real-time updates
- Mobile-optimized responsive design
- Progressive web app capabilities
Messaging:
- In-app direct messages between users
- Channel-based group conversations
- Message notifications and indicators
- Thread support for organized discussions
Data Storage:
- Persistent database for users, channels, and messages
- Session storage for active connections
- Optional Redis for distributed caching
- File upload support for sharing documents
Real-Time Infrastructure:
- WebSocket connections for instant updates
- User presence indicators
- Typing notifications
- Read receipts and message status
Core Components
Web Server: HTTP and WebSocket server handling API requests and real-time connections
Authentication: User login system with session management
Message Store: Database storing all messages, channels, and user data
Notification System: Real-time updates to connected clients
File Storage: Handling uploaded files and attachments
User Management: Administration interface for managing team members
Channel Management: Creating and managing team spaces
Search: Finding messages and conversations by content
Installation and Setup
Step 1: Create Your Project Directory
Start with a dedicated directory for your Convos deployment:
mkdir convos-deploymentcd convos-deploymentgit initStep 2: Create Directory Structure
Set up the necessary directories for a production-ready deployment:
mkdir -p data logs configYour project structure will look like:
convos-deployment/├── Dockerfile├── docker-entrypoint.sh├── .env.example├── .dockerignore├── .gitignore├── config/│ └── (configuration files)├── data/│ └── (database and application data)└── logs/ └── (application logs)Step 3: Create the Dockerfile
Create a Dockerfile for a production-ready Convos deployment:
# Use official Convos image as baseFROM convos/convos:latest
# Install additional utilitiesRUN apk add --no-cache \ curl \ dumb-init \ postgresql-client
# Create app userRUN addgroup -g 1000 convos && \ adduser -D -u 1000 -G convos convos
# Set working directoryWORKDIR /app
# Create necessary directoriesRUN mkdir -p /app/data /app/logs /app/config && \ chown -R convos:convos /app
# Set permissionsRUN chown -R convos:convos /var/cache/convos
# Switch to non-root userUSER convos
# Expose portEXPOSE 3000
# Health checkHEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \ CMD curl -f http://localhost:3000/ || exit 1
# Use dumb-init to handle signals properlyENTRYPOINT ["dumb-init", "--"]
# Start ConvosCMD ["convos", "daemon", "-l", "http://*:3000"]Step 4: Create Environment Configuration
Create .env.example for Convos configuration:
# Server configurationPORT=3000LOG_LEVEL=infoNODE_ENV=production
# Application settingsAPP_TITLE=Convos Team ChatAPP_DESCRIPTION=Real-time team communication platformSECRET=your-secret-key-here-change-in-production
# Database configuration# For SQLite (default)CONVOS_HOME=/app/data
# For PostgreSQL (optional, uncomment to use)# DATABASE_URL=postgresql://convos:password@localhost:5432/convos# CONVOS_DB_URL=postgresql://convos:password@localhost:5432/convos
# Redis configuration (optional)REDIS_URL=redis://redis:6379/0
# AuthenticationCONVOS_SECURITY_DISABLE_FORM_LOGIN=0CONVOS_SECURE_COOKIES=1
# Email configurationCONVOS_SMTP_HOST=smtp.example.comCONVOS_SMTP_PORT=587CONVOS_SMTP_FROM=noreply@example.comCONVOS_SMTP_USERNAME=your-email@example.comCONVOS_SMTP_PASSWORD=your-password
# Message settingsCONVOS_MAX_MESSAGE_SIZE=10000CONVOS_HISTORY_LIMIT=1000
# File upload settingsCONVOS_MAX_UPLOAD_SIZE=52428800UPLOAD_DIR=/app/data/uploads
# WebSocket configurationCONVOS_WEBSOCKET_HEARTBEAT=30
# Additional settingsCONVOS_BACKEND_EVENTS_ENABLED=1Step 5: Create Application Configuration
Create config/convos.conf for application settings:
# Convos Configuration File
# Basic application settingsapp_title = Convos Team Chatapp_description = Real-time team communication platform
# Database settings# Default SQLite locationconvos_home = /app/data
# For PostgreSQL, use database_url instead# database_url = postgresql://convos:password@localhost:5432/convos
# Server settingslisten = http://*:3000
# Logginglog_level = info
# Authenticationsecure_cookies = 1disable_form_login = 0
# Upload settingsmax_upload_size = 52428800upload_dir = /app/data/uploads
# Message settingsmax_message_size = 10000history_limit = 1000
# WebSocketwebsocket_heartbeat = 30
# Email notificationssmtp_host = smtp.example.comsmtp_port = 587smtp_from = noreply@example.comsmtp_tls = 1
# Featuresbackend_events_enabled = 1Step 6: Create Docker Entry Script
Create docker-entrypoint.sh for container initialization:
#!/bin/sh
set -e
# Wait for database if using PostgreSQLif [ ! -z "$DATABASE_URL" ]; then echo "Waiting for database..." until pg_isready -h ${DATABASE_URL#postgresql://} -U convos -d convos 2>/dev/null; do printf '.' sleep 1 done echo "Database ready!"fi
# Wait for Redis if configuredif [ ! -z "$REDIS_URL" ]; then echo "Waiting for Redis..." REDIS_HOST=$(echo $REDIS_URL | sed 's/.*@//; s/:.*//;') until redis-cli -h $REDIS_HOST ping > /dev/null 2>&1; do printf '.' sleep 1 done echo "Redis ready!"fi
# Create necessary directoriesmkdir -p /app/data /app/logs /app/config
# Start Convosexec "$@"Make it executable:
chmod +x docker-entrypoint.shStep 7: Create package.json
Create package.json for dependency management:
{ "name": "convos-deployment", "version": "1.0.0", "description": "Convos team chat application deployment on Klutch.sh", "main": "index.js", "scripts": { "start": "convos daemon -l http://*:3000", "dev": "convos daemon -l http://*:3000", "build": "echo 'Build complete'" }, "keywords": ["chat", "messaging", "team-communication", "convos"], "author": "Your Team", "license": "MIT", "engines": { "node": ">=14.0.0" }}Step 8: Create .dockerignore
Create .dockerignore:
.git.gitignore.env.env.local.env.*.local.DS_Storenode_modulesnpm-debug.logyarn-error.logdata/*logs/*.vscode.ideaREADME.mddocs/tests/coverage/.eslintrc.githubStep 9: Create .gitignore
Create .gitignore:
# Environment.env.env.local.env.*.local
# Applicationnode_modules/package-lock.jsonyarn.lock
# Data and logsdata/logs/*.lognpm-debug.log*yarn-error.log*
# Runtimetmp/.cache/*.pid
# IDE.vscode/.idea/*.swp*.swo
# OS.DS_StoreThumbs.db
# Testingcoverage/.nyc_outputStep 10: Commit to GitHub
Push your Convos configuration to GitHub:
git add Dockerfile docker-entrypoint.sh .env.example config/ package.json .dockerignore .gitignoregit commit -m "Add Convos chat application Docker configuration for Klutch.sh deployment"git branch -M maingit remote add origin https://github.com/yourusername/convos-deployment.gitgit push -u origin mainDeploying to Klutch.sh
Now let’s deploy Convos to Klutch.sh with proper configuration and persistent storage for chat history.
Deployment Steps
-
Access Klutch.sh Dashboard
Navigate to klutch.sh/app and sign in with your GitHub account. This is where you’ll manage your Convos deployment.
-
Create a New Project
In the Projects section, click “Create Project” and name it something descriptive like “Team Chat Platform” or “Internal Communications”.
-
Create a New App
Within your project, click “Create App” to start configuring your Convos deployment.
-
Connect Your Repository
- Select GitHub as your Git source
- Choose the repository where you pushed your Convos Dockerfile
- Select the branch to deploy (typically
main)
Klutch.sh will automatically detect the Dockerfile in your repository root.
-
Configure Traffic Settings
- Traffic Type: Select HTTP (Convos is a web application)
- Internal Port: Set to
3000(Convos default port)
This allows users to access Convos through their browser via HTTPS.
-
Configure Environment Variables
Add the following environment variables to configure your Convos instance:
Server Configuration:
PORT=3000LOG_LEVEL=infoNODE_ENV=productionApplication Settings:
APP_TITLE=Your Team ChatAPP_DESCRIPTION=Internal team communicationSECRET=generate-a-strong-random-secret-hereDatabase Configuration (choose one):
For SQLite (built-in, no additional setup):
CONVOS_HOME=/app/dataFor PostgreSQL (if you have a database):
DATABASE_URL=postgresql://username:password@hostname:5432/convosCONVOS_DB_URL=postgresql://username:password@hostname:5432/convosAuthentication and Security:
CONVOS_SECURE_COOKIES=1CONVOS_SECURITY_DISABLE_FORM_LOGIN=0Email Configuration (for notifications):
CONVOS_SMTP_HOST=smtp.gmail.comCONVOS_SMTP_PORT=587CONVOS_SMTP_FROM=noreply@example.comCONVOS_SMTP_USERNAME=your-email@gmail.comCONVOS_SMTP_PASSWORD=your-app-passwordMessage and Upload Settings:
CONVOS_MAX_MESSAGE_SIZE=10000CONVOS_HISTORY_LIMIT=1000CONVOS_MAX_UPLOAD_SIZE=52428800UPLOAD_DIR=/app/data/uploadsOptional: Redis for Caching (improves performance):
REDIS_URL=redis://your-redis-server:6379/0Security Notes:
- Generate a strong SECRET using a random string generator
- Use HTTPS-only cookies in production (SECURE_COOKIES=1)
- Rotate API keys and secrets regularly
- Restrict file upload size based on infrastructure
- Monitor email quota if using SMTP notifications
-
Configure Persistent Storage
Convos needs persistent storage to maintain chat history, user data, and uploaded files:
Volume 1 - Application Data:
- Mount Path:
/app/data - Size: 10-50 GB (depends on expected users and message volume)
Guidelines for volume sizes:
- Small team (< 50 users, < 100K messages): 10 GB
- Medium team (50-200 users, 100K-1M messages): 25 GB
- Large team (200-1000 users, 1M+ messages): 50+ GB
Data stored:
- SQLite database (if not using PostgreSQL)
- User accounts and authentication
- Channel definitions and settings
- All messages and chat history
- Uploaded files and attachments
- Session data
Critical: Without persistent storage, all chat history and user data is lost on container restart. This is essential for any production deployment.
- Mount Path:
-
Configure Compute Resources
Choose appropriate resources based on expected team size and usage:
Small Team (< 50 users):
- CPU: 1 core
- RAM: 1 GB
- Suitable for: Small teams, internal projects
Medium Team (50-500 users):
- CPU: 2 cores
- RAM: 2 GB
- Suitable for: Growing teams, moderate message volume
Large Team (500-2000 users):
- CPU: 4 cores
- RAM: 4 GB
- Suitable for: Enterprise deployments, high-volume communication
Very Large Team (2000+ users):
- CPU: 8+ cores
- RAM: 8+ GB
- Suitable for: Large organizations, heavy concurrent usage
Note: Real-time messaging is CPU-bound. More cores handle more concurrent WebSocket connections. Monitor metrics and scale accordingly.
-
Deploy the Application
Click “Create” to start the deployment. Klutch.sh will:
- Clone your repository from GitHub
- Build the Docker image with Convos and dependencies
- Configure all environment variables
- Set up persistent storage volumes
- Start the Convos application
- Assign a public URL (e.g.,
chat.klutch.sh) - Configure automatic HTTPS with SSL certificates
Initial deployment typically takes 5-10 minutes. The application will be ready once the status shows “Running”.
-
Monitor Deployment Progress
Track your deployment:
- Go to the Deployments tab
- View real-time build logs
- Wait for status to show “Running”
- Verify environment variables are correctly set
- Check that persistent storage is mounted
Ensure the Convos service starts without errors.
-
Test Your Deployment
After deployment, verify Convos is working:
-
Access the Application: Open your browser and navigate to your deployment URL (e.g.,
https://example-app.klutch.sh) -
Create Admin User:
- First access opens admin user creation page
- Create your admin account
- Set a strong password
-
Access Dashboard:
- Log in with admin account
- You’re now in the Convos dashboard
- Create channels and add users
-
Test Real-Time Messaging:
- Open multiple browser windows
- Send messages in a channel
- Verify messages appear instantly across windows
- Test typing indicators
-
Check Logs:
- View application logs in Klutch.sh dashboard
- Look for any warnings or errors
- Verify WebSocket connections are established
-
-
Configure Your Domain
Add your custom domain for professional chat access:
- In Klutch.sh dashboard, go to Domains
- Click “Add Custom Domain”
- Enter your domain (e.g.,
chat.example.com) - Update DNS with CNAME record pointing to
example-app.klutch.sh - Wait for DNS propagation and SSL certificate provisioning
Update Convos Configuration:
- Add domain to environment variables if needed
- Update any webhook URLs or integrations
- Test access from your custom domain
-
Complete Initial Setup
After first deployment, complete these setup steps:
-
Create Channels:
- General for team-wide discussions
- Project-specific channels
- Department or skill-based channels
- Social or off-topic channel
-
Invite Team Members:
- Go to Settings → Users
- Invite team members via email
- Set appropriate roles and permissions
-
Configure Notifications:
- Set up email notifications
- Configure notification preferences
- Test notification delivery
-
Set Up Integrations (if needed):
- Connect external tools via webhooks
- Configure API access for applications
-
Establish Guidelines:
- Create pinned messages with team guidelines
- Document channel purposes
- Share security best practices
-
Getting Started with Convos
Creating Your First Channels
After deploying Convos, create channels for different teams or topics:
General├── Announcements├── Random└── Help
Engineering├── Backend├── Frontend├── DevOps└── QA
Projects├── Project Alpha├── Project Beta└── Project GammaUser Management
Add team members through the admin interface:
- Navigate to Settings → Users
- Click “Add User”
- Enter email address
- Select user role (Member or Admin)
- Send invitation
Users receive email invitations with signup links.
Integration Examples
Connect Convos with external tools:
GitHub Integration:
Create a webhook in GitHub repository:Payload URL: https://chat.example.com/api/hooks/githubContent type: application/jsonEvents: Issues, Pull Requests, PushesCustom Webhooks:
// Send message to Convos channelconst axios = require('axios');
axios.post('https://chat.example.com/api/messages', { channel: 'general', message: 'Build completed successfully', from: 'CI System'});Performance Optimization
Connection Management
Optimize Convos for concurrent users:
# Increase connection limitsCONVOS_WEBSOCKET_HEARTBEAT=30
# Message queue settingsCONVOS_BACKEND_EVENTS_ENABLED=1Database Optimization
For SQLite (built-in):
- Regular database maintenance
- Archive old messages periodically
- Monitor database file size
For PostgreSQL (larger deployments):
- Better concurrency handling
- Easier backup and recovery
- Horizontal scaling options
Caching Strategy
Use Redis for improved performance:
REDIS_URL=redis://hostname:6379/0Caches:
- Session data
- Frequently accessed channels
- User presence information
- Message metadata
Memory Management
Monitor and optimize memory usage:
# Limit history returned per requestCONVOS_HISTORY_LIMIT=1000
# Monitor WebSocket connectionsConnection pooling: Enabled by defaultSecurity Best Practices
Authentication
User Access:
- Enforce strong passwords
- Implement account lockout after failed attempts
- Regularly audit user access
Admin Protection:
- Limit admin user count
- Use separate admin account for administration
- Rotate admin credentials regularly
Data Security
Message Encryption:
- All connections use HTTPS/WSS
- Messages in transit are encrypted
- Consider message encryption at rest
User Privacy:
- Clear privacy policies
- Regular security audits
- Compliance with regulations (GDPR, etc.)
Access Control
Channel Permissions:
- Public channels: Team can view and join
- Private channels: Invite-only access
- Archived channels: Read-only history
File Security:
- Restrict upload types (prevent executable files)
- Limit file sizes
- Regular virus scanning
Regular Maintenance
Update Schedule:
- Monitor Convos releases for security patches
- Test updates in staging environment
- Deploy to production with clear communication
Audit Logs:
- Enable audit logging for admin actions
- Monitor user login patterns
- Review file access and downloads
Troubleshooting
Issue 1: Users Unable to Connect
Symptoms: Browser shows connection error, WebSocket fails
Solutions:
-
Check Application Status:
- Verify app is running in Klutch.sh dashboard
- Check deployment logs for startup errors
- Confirm health check is passing
-
Verify Network Settings:
- Ensure HTTP/HTTPS traffic is allowed
- Check firewall rules are not blocking connections
- Verify domain DNS is resolving correctly
-
Test Connectivity:
Terminal window # Test basic HTTP accesscurl -I https://example-app.klutch.sh# Check WebSocket connectivitywscat -c wss://example-app.klutch.sh/ws -
Browser Issues:
- Clear browser cache and cookies
- Try different browser to isolate issues
- Check browser console for JavaScript errors
Issue 2: Message History Not Persistent
Symptoms: Messages disappear after restart, chat history lost
Solutions:
-
Verify Persistent Volume:
- Confirm volume is mounted at
/app/data - Check volume has sufficient space
- Verify mount path in deployment settings
- Confirm volume is mounted at
-
Check Database:
- Confirm SQLite file exists in
/app/data - For PostgreSQL, verify connection string is correct
- Test database connectivity
- Confirm SQLite file exists in
-
Review Logs:
- Check for database errors in application logs
- Look for permission issues on data directory
- Verify SQLite database isn’t corrupted
-
Restore from Backup:
- If using PostgreSQL, restore from backup
- For SQLite, restore database file from backup
- Test message retrieval after restore
Issue 3: Slow Message Delivery
Symptoms: Messages take seconds to appear, lag between users
Solutions:
-
Check Resource Usage:
- Monitor CPU utilization during peak usage
- Check memory consumption
- Review network latency
-
Optimize Database:
- For SQLite, reduce history limit
- Archive old messages to separate storage
- Consider PostgreSQL for better performance
-
Enable Caching:
- Configure Redis for session caching
- Cache frequently accessed channels
- Reduce database queries
-
Monitor Connections:
- Check number of concurrent WebSocket connections
- Upgrade resources if near capacity
- Review slow query logs
Issue 4: High Memory Usage
Symptoms: Application becomes sluggish, memory warnings
Solutions:
-
Increase Compute Resources:
- Upgrade Klutch.sh allocation
- Add more RAM for large deployments
- Monitor metrics to determine optimal size
-
Optimize Settings:
- Reduce message history limit
- Enable connection pooling
- Configure garbage collection tuning
-
Profile Memory Usage:
- Monitor connection count
- Track message queue depth
- Review cache hit rates
Issue 5: File Upload Issues
Symptoms: Upload fails, files not saved, storage errors
Solutions:
-
Check Storage:
- Verify upload directory has sufficient space
- Confirm
/app/data/uploadsdirectory exists - Check file permissions
-
Verify Settings:
- Check
CONVOS_MAX_UPLOAD_SIZEis appropriate - Confirm
UPLOAD_DIRpoints to persistent volume - Review upload file type restrictions
- Check
-
Monitor Space:
- Track persistent volume usage
- Implement automatic cleanup of old files
- Archive or compress large uploads
Issue 6: Email Notifications Not Working
Symptoms: Users don’t receive invitation or notification emails
Solutions:
-
Verify SMTP Settings:
- Check
CONVOS_SMTP_HOSTis correct - Verify port (
CONVOS_SMTP_PORT) is 587 or 465 - Confirm username and password are correct
- Check
-
Test Email:
Terminal window # Test SMTP connectivitytelnet smtp.example.com 587 -
Check Logs:
- Review email sending logs
- Look for SMTP error messages
- Verify sender address is authorized
-
Provider Issues:
- Gmail requires app passwords, not regular password
- Check if SMTP provider allows external connections
- Verify sender email is whitelisted
Custom Domain Setup
Using a custom domain makes Convos feel like a core part of your infrastructure.
Step 1: Add Domain in Klutch.sh
- Go to your Convos app in Klutch.sh dashboard
- Navigate to Domains
- Click “Add Custom Domain”
- Enter your domain (e.g.,
chat.example.com) - Save
Step 2: Update DNS
Update your domain provider’s DNS records:
Type: CNAMEName: chatValue: example-app.klutch.shTTL: 3600Step 3: Verify SSL Certificate
Klutch.sh automatically provisions SSL certificates:
-
Wait for DNS propagation (up to 1 hour)
-
Test HTTPS access:
Terminal window curl -I https://chat.example.com -
Certificate is automatically renewed (no action needed)
Step 4: Update Convos Configuration
Update any application settings that reference your domain:
- Email addresses in notifications
- Webhook URLs in integrations
- Any hardcoded domain references
Production Best Practices
Backup Strategy
What to Back Up:
- SQLite database file (
/app/data/convos.db) - Uploaded files (
/app/data/uploads) - Application configuration
For PostgreSQL:
pg_dump postgresql://username:password@host/convos | gzip > /backup/convos-$(date +%Y%m%d).sql.gzFor SQLite:
tar -czf /backup/convos-data-$(date +%Y%m%d).tar.gz /app/dataBackup Schedule:
- Daily: Automated backups
- Weekly: Full backup verification
- Monthly: Restore test from backup
Backup Location:
- Store off-server (cloud storage, NAS)
- Encrypted backups for security
- Document recovery procedures
Monitoring Strategy
Key Metrics:
- Number of active connections
- Average response time
- CPU and memory usage
- Persistent volume utilization
- Message throughput
- Error rates
Alerts:
- Alert if CPU > 80% sustained
- Alert if memory > 90% capacity
- Alert if volume nearing full
- Alert if response time > 2 seconds
- Alert if error rate > 1%
Tools:
- Klutch.sh dashboard metrics
- Prometheus for detailed monitoring
- Grafana for visualization
Scaling Strategy
Vertical Scaling (larger server):
- Increase CPU cores for more concurrent connections
- Add RAM for larger caches and buffers
- Use faster storage for better I/O
Horizontal Scaling (multiple servers):
- Run multiple Convos instances behind load balancer
- Use PostgreSQL for shared database
- Use Redis for shared session store
- Use object storage for file uploads
When to Scale:
- CPU consistently > 70%
- Memory consistently > 80%
- Response times degrading during peak hours
- Connection limit being approached
User Administration
Regular Tasks:
- Review active users monthly
- Archive inactive accounts
- Update permission levels as needed
- Remove terminated user accounts
Access Review:
- Quarterly audit of admin users
- Review channel access for sensitive teams
- Verify no user has elevated access without reason
Conclusion
You now have a production-ready Convos deployment running on Klutch.sh. Your team has a reliable, self-hosted chat platform for real-time collaboration and communication.
Convos brings the simplicity of modern chat with the control of self-hosting. Your messages, your data, your infrastructure—no monthly fees per user, no vendor lock-in, just solid team communication.
The deployment you’ve built handles the complexity of real-time messaging, persistent storage, and concurrent user management. Scale it up as your team grows, backup your data regularly, and monitor performance to keep everything running smoothly.
Whether it’s a small team getting started with internal communication or a larger organization managing complex team dynamics, Convos provides the foundation for effective collaboration. Focus on building great products while Convos keeps your team connected.
For additional help, check out the Convos documentation, explore advanced configuration options, and join the community for support and ideas.
Happy chatting!