Deploying a DocuSeal App
Introduction
DocuSeal is a powerful open-source document signing and form-filling platform that provides an alternative to commercial solutions like DocuSign. Built with Ruby on Rails, DocuSeal enables you to create, send, and sign documents electronically with a clean and intuitive interface. This comprehensive guide will walk you through deploying DocuSeal on Klutch.sh using Docker, covering everything from basic setup to production-ready configurations with PostgreSQL, persistent storage, custom domains, and security best practices.
Whether you’re setting up DocuSeal for personal use, for your organization, or as a service for your customers, this guide provides step-by-step instructions for a reliable and scalable deployment.
Prerequisites
Before you begin deploying DocuSeal on Klutch.sh, ensure you have:
- A Klutch.sh account with access to the dashboard at klutch.sh/app
- A GitHub repository for your DocuSeal project (can be a minimal repository with just a Dockerfile)
- Basic understanding of Docker and environment variables
- (Optional but recommended for production) A PostgreSQL database instance
- (Optional) A custom domain for accessing your DocuSeal instance
Project Structure
A minimal repository structure for deploying DocuSeal:
docuseal-deploy/├── Dockerfile├── docker-entrypoint.sh (optional)├── .dockerignore└── README.mdThis lightweight structure is all you need to get started, as DocuSeal’s official Docker image handles most of the setup.
Understanding DocuSeal
DocuSeal is a Rails application that:
- Runs on port 3000 by default
- Supports both SQLite (for testing) and PostgreSQL (for production)
- Requires persistent storage for uploaded documents, signatures, and database files
- Uses environment variables for configuration
- Provides a web-based UI for document management and signing workflows
1. Quick Start Dockerfile (SQLite for Testing)
This minimal Dockerfile uses the official DocuSeal image and SQLite for quick testing and development:
FROM docusealco/docuseal:latest
# Expose the default portEXPOSE 3000
# The official image already has the correct entrypointCMD ["bin/rails", "server", "-b", "0.0.0.0"]Notes:
- This configuration uses SQLite, which stores the database as a file
- Perfect for testing and low-traffic scenarios
- For production deployments, PostgreSQL is strongly recommended
- Ensure you attach a persistent volume to preserve data
2. Production Dockerfile with Custom Configuration
For production deployments with more control, use this enhanced Dockerfile:
FROM docusealco/docuseal:latest
# Install additional dependencies if neededRUN apt-get update && apt-get install -y \ postgresql-client \ && rm -rf /var/lib/apt/lists/*
# Set working directoryWORKDIR /app
# Copy custom entrypoint script if you have one# COPY docker-entrypoint.sh /usr/local/bin/# RUN chmod +x /usr/local/bin/docker-entrypoint.sh
# Set production environmentENV RAILS_ENV=productionENV NODE_ENV=production
# Expose portEXPOSE 3000
# Health checkHEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \ CMD curl -f http://localhost:3000/health || exit 1
# Start the applicationCMD ["bin/rails", "server", "-b", "0.0.0.0"]Key features:
- Includes PostgreSQL client for database operations
- Sets production environment variables
- Adds health check endpoint monitoring
- Configures the server to bind to all interfaces (0.0.0.0)
3. Essential Environment Variables
Configure these environment variables in the Klutch.sh dashboard to customize your DocuSeal deployment:
Basic Configuration
RAILS_ENV=productionSECRET_KEY_BASE=your-very-long-random-secret-key-min-128-charactersHOST=https://docuseal.example.comDatabase Configuration (SQLite - Testing Only)
DATABASE_URL=sqlite3:data/production.sqlite3Database Configuration (PostgreSQL - Production)
DATABASE_URL=postgresql://username:password@postgres-host:5432/docuseal_productionStorage Configuration
STORAGE_TYPE=local# Or for cloud storage:# STORAGE_TYPE=s3# AWS_ACCESS_KEY_ID=your-access-key# AWS_SECRET_ACCESS_KEY=your-secret-key# AWS_REGION=us-east-1# AWS_BUCKET=your-bucket-nameEmail Configuration (SMTP)
SMTP_ADDRESS=smtp.gmail.comSMTP_PORT=587SMTP_USERNAME=your-email@example.comSMTP_PASSWORD=your-smtp-passwordSMTP_AUTHENTICATION=plainSMTP_ENABLE_STARTTLS_AUTO=trueSMTP_FROM=noreply@example.comOptional Configuration
# Encryption key for sensitive data (generate with: openssl rand -hex 32)ENCRYPTION_KEY=your-64-character-hex-string
# File size limitsMAX_FILE_SIZE=10485760
# Session timeout (in seconds)SESSION_TIMEOUT=28800
# Enable/disable user registrationDISABLE_REGISTRATION=falseImportant: Never commit secrets like SECRET_KEY_BASE or DATABASE_URL to your repository. Always use Klutch.sh’s environment variable management to store sensitive values securely.
Generating SECRET_KEY_BASE:
You can generate a secure secret key using:
openssl rand -hex 64This will produce a 128-character random string suitable for SECRET_KEY_BASE.
4. Persistent Storage with Volumes
DocuSeal requires persistent storage for several critical directories:
- Database files (if using SQLite):
/app/data - Uploaded documents and attachments:
/app/storage - User-uploaded assets:
/app/public/uploads(if applicable) - Navigate to the Volumes section
- Add persistent volumes with these mount paths:
- Mount Path:
/app/storage - Size: Start with 10GB, increase based on usage
- Mount Path:
/app/data - Size: 5GB minimum
- Mount Path:
/app/public/uploads - Size: 5GB minimum
Step 1: Identify Required Volumes
DocuSeal needs persistent storage for:
Step 2: Configure Volumes in Klutch.sh
In the Klutch.sh dashboard when creating or editing your app:
Primary Volume (Required):
Data Volume (Required if using SQLite):
Uploads Volume (Optional but recommended):
Step 3: Verify Permissions
Ensure the DocuSeal application has write permissions to these directories. The official Docker image typically handles this, but if you encounter permission issues, you may need to adjust ownership in a custom entrypoint script.
Important: Without persistent volumes, all uploaded documents, signatures, and database data will be lost when the container restarts.
5. Database Setup
SQLite (Development/Testing)
For quick testing and low-traffic deployments:
- Set
DATABASE_URL=sqlite3:data/production.sqlite3 - Ensure
/app/datais mounted to a persistent volume - The database file will be created automatically on first run
Limitations:
- Not suitable for concurrent users or high traffic
- Limited query performance compared to PostgreSQL
- No built-in backup/replication features
PostgreSQL (Production - Recommended)
For production deployments, use PostgreSQL:
- Deploy PostgreSQL as a separate app on Klutch.sh
- Use a managed PostgreSQL service (AWS RDS, DigitalOcean, etc.)
- Use Klutch.sh’s database offerings if available
docuseal_userwith your database usernamesecure-passwordwith your database passwordpostgres-hostwith your PostgreSQL host address5432with your PostgreSQL port (if different)docuseal_productionwith your database name
Step 1: Provision PostgreSQL
Set up a PostgreSQL database using one of these options:
Step 2: Create Database
Connect to your PostgreSQL instance and create a database:
CREATE DATABASE docuseal_production;CREATE USER docuseal_user WITH PASSWORD 'secure-password';GRANT ALL PRIVILEGES ON DATABASE docuseal_production TO docuseal_user;Step 3: Configure Connection
Set the DATABASE_URL environment variable:
DATABASE_URL=postgresql://docuseal_user:secure-password@postgres-host:5432/docuseal_productionReplace:
Step 4: Run Migrations
The first time DocuSeal starts with a PostgreSQL database, it will automatically run migrations to set up the schema. Monitor the logs to ensure this completes successfully.
PostgreSQL Benefits:
- Handles concurrent users efficiently
- Better performance for complex queries
- Built-in backup and replication support
- Industry-standard for production Rails applications
6. Deploying to Klutch.sh - Step by Step
Follow these detailed steps to deploy DocuSeal on Klutch.sh:
- Create a new GitHub repository or use an existing one
- Add your
Dockerfileto the repository root - Commit and push your changes
- Log in to the Klutch.sh dashboard
- Navigate to your project or create a new one
- Click “Create New App” or “Deploy”
- Select GitHub as your Git source
- Choose your repository containing the Dockerfile
- Verify the detected Dockerfile path
- If your Dockerfile is in a subdirectory, ensure the build context is set correctly
- In the app settings, set Internal Port to
3000 - This tells Klutch.sh to route traffic to port 3000 in your container
- Select HTTP traffic type in the Klutch.sh dashboard
- Klutch.sh will route external traffic to your app’s internal port 3000
- Navigate to the Volumes section
- Click “Add Volume”
- Configure the primary storage volume:
- Mount Path:
/app/storage - Size: 10GB (adjust based on expected usage)
- Mount Path:
- If using SQLite, add a data volume:
- Mount Path:
/app/data - Size: 5GB
- Mount Path:
- Navigate to the Environment Variables section
- Add all required variables (see Section 3):
- Mark sensitive values (passwords, keys) as secret if the option is available
- Review all settings
- Click “Create” or “Deploy”
- Klutch.sh will:
- Pull your repository
- Build the Docker image
- Create persistent volumes
- Start the container
- Route traffic to your app
- Watch the build logs in the dashboard
- Look for successful database migrations
- Verify the application starts without errors
- The build should complete in 2-5 minutes depending on image size
- Once deployed, Klutch.sh provides a URL like
https://example-app.klutch.sh - Open this URL in your browser
- You should see the DocuSeal login/registration page
- Create your first admin user account
Step 1: Prepare Your Repository
git initgit add Dockerfilegit commit -m "Add Dockerfile for DocuSeal"git remote add origin https://github.com/yourusername/docuseal-deploy.gitgit push -u origin mainStep 2: Create a New App in Klutch.sh
Step 3: Configure Build Settings
Klutch.sh will automatically detect your Dockerfile in the root directory:
Step 4: Set the Internal Port
Since DocuSeal runs on port 3000:
Step 5: Configure Traffic Type
DocuSeal is a web application that uses HTTP:
Step 6: Attach Persistent Volumes
Step 7: Set Environment Variables
Required:
RAILS_ENV=productionSECRET_KEY_BASE=<your-generated-secret>HOST=https://your-app.klutch.shDatabase (choose one):
SQLite:
DATABASE_URL=sqlite3:data/production.sqlite3PostgreSQL:
DATABASE_URL=postgresql://user:password@host:5432/databaseOptional but recommended:
SMTP_ADDRESS=smtp.gmail.comSMTP_PORT=587SMTP_USERNAME=your-email@example.comSMTP_PASSWORD=your-passwordSMTP_FROM=noreply@example.comENCRYPTION_KEY=<your-encryption-key>Step 8: Deploy the App
Step 9: Monitor the Build
Step 10: Access Your DocuSeal Instance
First-time Setup:
When you first access DocuSeal:
- You’ll be prompted to create an admin account
- Enter your email and password
- Configure organization settings
- Start creating document templates
7. Custom Domain Configuration
To use your own domain with DocuSeal:
- In your app settings, navigate to Domains
- Click “Add Custom Domain”
- Enter your domain (e.g.,
docuseal.yourdomain.com)
Step 1: Add Domain in Klutch.sh
Step 2: Configure DNS
Add a DNS record pointing to your Klutch.sh app:
Option A: CNAME Record (Recommended)
Type: CNAMEName: docusealValue: <provided-by-klutch>TTL: 3600Option B: A Record
Type: AName: docusealValue: <ip-provided-by-klutch>TTL: 3600Step 3: Update Environment Variables
Update the HOST environment variable to match your custom domain:
HOST=https://docuseal.yourdomain.comStep 4: Wait for DNS Propagation
DNS changes can take 5 minutes to 48 hours to propagate globally. Check propagation status using online tools like WhatsMyDNS.net.
Step 5: Verify TLS Certificate
Klutch.sh automatically provisions TLS certificates for custom domains. Once DNS is configured and propagated, your site will be accessible over HTTPS.
Important: Always ensure the HOST environment variable matches your actual domain to prevent CORS issues and broken links in emails.
8. Email Configuration for Notifications
DocuSeal sends emails for various activities (document signing requests, notifications, etc.). Configure SMTP to enable email functionality:
Gmail Example
SMTP_ADDRESS=smtp.gmail.comSMTP_PORT=587SMTP_USERNAME=your-email@gmail.comSMTP_PASSWORD=your-app-specific-passwordSMTP_AUTHENTICATION=plainSMTP_ENABLE_STARTTLS_AUTO=trueSMTP_FROM=noreply@yourdomain.comNote: For Gmail, you’ll need to create an app-specific password if you have 2FA enabled.
SendGrid Example
SMTP_ADDRESS=smtp.sendgrid.netSMTP_PORT=587SMTP_USERNAME=apikeySMTP_PASSWORD=<your-sendgrid-api-key>SMTP_AUTHENTICATION=plainSMTP_ENABLE_STARTTLS_AUTO=trueSMTP_FROM=noreply@yourdomain.comMailgun Example
SMTP_ADDRESS=smtp.mailgun.orgSMTP_PORT=587SMTP_USERNAME=postmaster@mg.yourdomain.comSMTP_PASSWORD=<your-mailgun-password>SMTP_AUTHENTICATION=plainSMTP_ENABLE_STARTTLS_AUTO=trueSMTP_FROM=noreply@yourdomain.comTesting Email Configuration
After deploying with email configuration:
- Log in to DocuSeal
- Create a test document template
- Send a signing request to yourself
- Verify you receive the email
- Check spam folder if email doesn’t arrive
Troubleshooting Email Issues:
- Verify SMTP credentials are correct
- Check SMTP server allows connections from Klutch.sh
- Review application logs for SMTP errors
- Test SMTP settings using a tool like MXToolbox
9. Getting Started with DocuSeal
Once your DocuSeal instance is running, here’s how to get started:
- Navigate to your DocuSeal URL
- Click “Sign Up” or you’ll be prompted to create an account
- Enter your email and a strong password
- Complete the registration process
- Click “Templates” in the navigation
- Click “New Template”
- Upload a PDF document or create a new one
- Add form fields:
- Signature fields
- Text fields
- Date fields
- Checkboxes
- Initials
- Save your template
- Click “Send” from the template
- Enter recipient email addresses
- Assign fields to recipients
- Add a custom message (optional)
- Click “Send”
- Recipients receive an email with a signing link
- Navigate to “Submissions” or “Documents”
- View the status of all sent documents:
- Pending
- Viewed
- Completed
- Declined
- Download completed documents with signatures
- Click on your profile/settings
- Configure:
- Organization name and branding
- User permissions
- Signature appearance
- Notification preferences
- API keys (if using the API)
Step 1: Create Your First Admin Account
Step 2: Create a Document Template
Step 3: Send Your First Document for Signing
Step 4: Track Document Status
Step 5: Configure Organization Settings
Tips for Success:
- Start with simple templates and add complexity gradually
- Test the signing process from the recipient’s perspective
- Set up email notifications to track document progress
- Use folders or tags to organize templates and submissions
10. Production Best Practices
Follow these best practices for a secure and reliable DocuSeal deployment:
Security
SECRET_KEY_BASE(minimum 128 characters)ENCRYPTION_KEY(64 hex characters)- Database passwords
- Set
HOSTto anhttps://URL - Klutch.sh provides automatic TLS certificate management
- Never accept unencrypted HTTP traffic for document signing
- Use strong password policies
- Enable two-factor authentication if supported
- Regularly review user access and permissions
- Disable public registration if not needed (
DISABLE_REGISTRATION=true) - Monitor the DocuSeal GitHub repository for security updates
- Update your Docker image tag regularly
- Test updates in a staging environment before production
Use Strong Secrets
Generate cryptographically secure values for:
# Generate SECRET_KEY_BASEopenssl rand -hex 64
# Generate ENCRYPTION_KEYopenssl rand -hex 32Enable HTTPS Only
Always use HTTPS in production:
Implement Access Controls
Regular Security Updates
Performance and Scalability
- Switch to PostgreSQL for better performance
- Configure connection pooling
- Use a managed database service for automatic backups
- Memory consumption
- CPU usage
- Disk space (especially
/app/storage) - Database size and query performance
- Start with 10GB and monitor usage
- Increase volume size as needed
- Consider object storage (S3) for cost-effective scaling
- Regular database maintenance (VACUUM for PostgreSQL)
- Monitor slow queries
- Add appropriate indexes for frequently queried fields
- Archive old completed documents
Use PostgreSQL for Production
SQLite is not suitable for production:
Monitor Resource Usage
Track and optimize:
Scale Storage
Plan for document storage growth:
STORAGE_TYPE=s3AWS_ACCESS_KEY_ID=your-keyAWS_SECRET_ACCESS_KEY=your-secretAWS_REGION=us-east-1AWS_BUCKET=docuseal-documentsOptimize Database
Backup and Disaster Recovery
- Use Klutch.sh volume snapshot features if available
- Implement external backup sync to S3 or similar
- Test backup restoration regularly
- How to restore from database backups
- How to restore uploaded documents
- How to rebuild from scratch if necessary
- Recovery time objectives (RTO) and recovery point objectives (RPO)
Automated Backups
Set up regular backups for:
Database Backups (PostgreSQL):
# Run daily via cron or scheduled jobpg_dump -h postgres-host -U docuseal_user docuseal_production > backup-$(date +%Y%m%d).sqlVolume Backups:
Disaster Recovery Plan
Document and test:
Monitoring and Observability
- Monitor DocuSeal application logs in Klutch.sh dashboard
- Watch for errors, warnings, and unusual activity
- Set up log aggregation for easier analysis
- Application downtime
- High error rates
- Database connection failures
- Disk space running low (>80% usage)
- Memory/CPU threshold breaches
Application Logs
Health Checks
The Dockerfile includes a health check:
HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \ CMD curl -f http://localhost:3000/health || exit 1Monitor health check status in Klutch.sh.
Alerting
Set up alerts for:
11. Troubleshooting Common Issues
Application Won’t Start
Symptoms: Container starts but app is not accessible
Solutions:
- Check application logs in Klutch.sh dashboard
- Verify
SECRET_KEY_BASEis set and at least 128 characters - Confirm
DATABASE_URLis correctly formatted - Ensure database is accessible from the app
- Check that port 3000 is properly configured
Test database connection:
# If using PostgreSQL, test from a debug containerpsql "postgresql://user:password@host:5432/database"Database Migration Failures
Symptoms: App starts but shows errors about missing database tables
Solutions:
- Check logs for migration error messages
- Ensure database user has sufficient privileges
- Manually run migrations if needed:
Terminal window # Access the container and runbin/rails db:migrate RAILS_ENV=production - For a fresh start, drop and recreate the database (development only!)
File Upload Errors
Symptoms: Cannot upload documents or signatures
Solutions:
- Verify persistent volume is attached to
/app/storage - Check volume has sufficient free space
- Ensure proper file permissions:
Terminal window # Inside containerls -la /app/storage# Should be writable by app user - Review
MAX_FILE_SIZEenvironment variable if files are large
Email Not Sending
Symptoms: Documents sent but recipients don’t receive emails
Solutions:
- Verify all SMTP environment variables are set correctly
- Check SMTP credentials are valid
- Test SMTP connection from container:
Terminal window # Use telnet or similar tooltelnet smtp.gmail.com 587 - Check spam folders
- Review application logs for SMTP errors
- Verify
SMTP_FROMemail address is valid
Performance Issues
Symptoms: Slow loading times, timeouts
Solutions:
- Check resource usage (CPU, memory) in Klutch.sh dashboard
- Verify database performance:
- For PostgreSQL: Review slow query logs
- Check connection pool settings
- Ensure database has adequate resources
- Review volume I/O performance
- Consider scaling up instance size
- Implement caching if available
- Archive old documents to reduce database size
Custom Domain Not Working
Symptoms: Custom domain shows errors or doesn’t load
Solutions:
- Verify DNS records are correctly configured
- Check DNS propagation status
- Ensure
HOSTenvironment variable matches custom domain - Wait for TLS certificate provisioning (can take a few minutes)
- Check Klutch.sh domain configuration in dashboard
- Review any CORS or CSP errors in browser console
Data Loss After Restart
Symptoms: Uploaded documents or database data disappears after container restart
Solutions:
- Critical: Ensure persistent volumes are attached
- Verify volume mount paths are correct:
/app/storagefor documents/app/datafor SQLite database
- Check Klutch.sh volume configuration
- Test by creating a file and restarting:
Terminal window echo "test" > /app/storage/test.txt# Restart container, then check if file exists
12. Security Best Practices
Security is paramount when handling document signing and sensitive information:
Data Protection
- Set
ENCRYPTION_KEYto encrypt sensitive data at rest - Use TLS/HTTPS for all communications
- Ensure database connections use SSL if supported
- Implement strong password policies
- Use unique credentials for each environment (dev, staging, prod)
- Regularly rotate secrets and passwords
- Limit database user permissions to only what’s needed
- Enable audit logs to track document access and modifications
- Review logs regularly for suspicious activity
- Store logs securely and retain according to compliance requirements
Encrypt Sensitive Data
Access Control
Audit Logging
Compliance Considerations
- Know where your data is stored (Klutch.sh region)
- For sensitive industries, verify compliance with regulations (GDPR, HIPAA, etc.)
- Consider data retention policies
- Ensure electronic signatures meet legal requirements in your jurisdiction
- Keep signed documents securely archived
- Implement document versioning and audit trails
Data Residency
Legal Validity
Network Security
- Only expose necessary ports (HTTPS/443)
- Use Klutch.sh’s network isolation features
- If using external database, ensure it’s not publicly accessible
- Implement rate limiting to prevent abuse
- Monitor for unusual traffic patterns
- Block suspicious IP addresses if necessary
Firewall Configuration
Rate Limiting
13. Scaling and High Availability
As your DocuSeal usage grows, consider these scaling strategies:
Horizontal Scaling
While the basic DocuSeal setup is single-instance, you can prepare for scaling:
-
Externalize State:
- Use PostgreSQL instead of SQLite
- Store documents in S3 or object storage
- Use Redis for session management (if supported)
-
Load Balancing:
- Deploy multiple DocuSeal instances
- Use a load balancer to distribute traffic
- Ensure session persistence across instances
-
Database Scaling:
- Use read replicas for reporting queries
- Implement connection pooling (PgBouncer)
- Optimize queries and add indexes
Vertical Scaling
For simpler scaling:
-
Increase Instance Resources:
- Scale up CPU and memory in Klutch.sh
- Increase database instance size
- Expand volume storage as needed
-
Monitor and Optimize:
- Track performance metrics
- Identify bottlenecks (CPU, memory, I/O, database)
- Scale the constrained resource
14. Cost Optimization
Optimize costs while maintaining performance:
- Start with smaller instances and scale as needed
- Monitor actual resource usage vs. allocated
- Use Klutch.sh’s scaling features to match demand
- Implement document retention policies
- Archive or delete old completed documents
- Compress documents before storage if possible
- Use object storage (S3) for cost-effective long-term storage
- Regular cleanup of old sessions and temporary data
- Archive historical data to separate storage
- Use database compression features
Right-Size Resources
Storage Optimization
Database Optimization
15. Advanced Configuration
Custom Branding
Customize DocuSeal’s appearance (if supported by your version):
# Set custom logo and colors via environment variables or configuration filesCOMPANY_NAME=Your CompanyBRAND_COLOR=#007bffLOGO_URL=https://yourdomain.com/logo.pngAPI Integration
DocuSeal provides an API for programmatic access:
- Generate API keys in the DocuSeal UI
- Store API keys securely as environment variables
- Use the API to:
- Create templates programmatically
- Send documents for signing
- Check submission status
- Download completed documents
Example API usage:
curl -X POST https://docuseal.example.com/api/submissions \ -H "X-Auth-Token: your-api-key" \ -H "Content-Type: application/json" \ -d '{"template_id": 1, "email": "signer@example.com"}'Webhook Notifications
Configure webhooks to receive notifications when documents are signed:
WEBHOOK_URL=https://your-app.com/webhooks/docusealWEBHOOK_SECRET=your-webhook-secretHandle webhook events in your application to trigger workflows, send notifications, or update records.
16. Migration from Other Platforms
If you’re migrating from another document signing platform:
- Export documents and templates from your current platform
- Download all completed signed documents
- Export user lists and permissions if applicable
- Recreate templates in DocuSeal
- Upload historical documents if needed
- Set up user accounts and permissions
- Test signing workflows thoroughly
- Run both systems in parallel during transition
- Redirect new document requests to DocuSeal
- Keep old system read-only for historical documents
- Fully decommission old system after validation period
Export Existing Data
Import to DocuSeal
Cutover Strategy
17. Resources and Further Reading
Official Documentation
Klutch.sh Documentation
- Getting Started with Klutch.sh
- Understanding Volumes
- Custom Domains Configuration
- Environment Variables Best Practices
Related Guides
- Deploying PostgreSQL on Klutch.sh
- Setting Up HTTPS and Custom Domains
- Understanding Docker Deployments
Community Support
Conclusion
You now have a comprehensive understanding of deploying DocuSeal on Klutch.sh. This guide covered everything from basic setup with a Dockerfile to production-ready configurations with PostgreSQL, persistent storage, custom domains, email notifications, and security best practices.
Key takeaways:
- Use PostgreSQL for production deployments
- Always attach persistent volumes for data durability
- Configure SMTP for email notifications
- Use HTTPS with custom domains
- Implement proper security measures with strong secrets
- Monitor and maintain your deployment regularly
- Plan for scaling as your usage grows
Start with the quick start Dockerfile to test DocuSeal, then transition to a production configuration with PostgreSQL and proper security measures. With Klutch.sh’s automated Docker detection and persistent volumes, you have a robust platform for running DocuSeal reliably.
For questions or issues, refer to the official documentation links above or reach out to the Klutch.sh and DocuSeal communities for support.
Happy document signing with DocuSeal on Klutch.sh!