Zioan VPS Installation Guide
Complete step-by-step guide for deploying Zioan on your own server.
Important Notice
This guide represents the ideal environment setup for most deployment scenarios. Please note:
- - 99% of these steps are host environment configuration (Ubuntu, Docker, Nginx, Cloudflare, etc.)
- - The actual Zioan installation takes only 2 minutes if your host environment is already properly configured
- - Core requirements for Zioan installation:
- - Nginx reverse proxy configuration
- - Internet connectivity for the deployment script
- - Meeting the basic system requirements for your team size
Flexible Installation Options:
- Zioan can be installed on any compatible environment that meets the bare minimum requirements
- This Ubuntu VPS setup is recommended but not mandatory
- Alternative setups (different Linux distributions, cloud providers, etc.) are supported
Installation & Management Command
This single command handles fresh installations, updates, backups, and rollbacks automatically:
Replace YOUR_CLIENT_ID with the Client ID from your account dashboard.
Choose Your Deployment Method
Why Caddy is Recommended
- - Automatic SSL certificates from Let's Encrypt - zero manual configuration
- - No nginx setup or configuration files required
- - Full video/audio call support out of the box
- - Simpler firewall rules and maintenance
Prerequisites
Before You Start - Technical Requirements
- - Comfortable using command line/terminal
- - Ability to connect to servers via SSH
- - Domain nameserver management access
Required Accounts & Services
- - Domain name (from any registrar)
- - VPS with static IP (Hetzner, DigitalOcean, Linode, Vultr, etc.)
- - Zioan license with Client ID
Step 1: System Preparation
# Connect to your VPS via SSH
ssh root@YOUR_VPS_IP
# Update system
apt update && apt upgrade -y
# Install required packages (NO nginx needed for Caddy setup)
apt install -y dialog curl openssl docker.io docker-compose-v2
# Start and enable Docker
systemctl start docker && systemctl enable docker
# Verify Docker installation
docker --version && docker compose version
Step 2: Create Installation Directory
# Create and navigate to installation directory
mkdir -p /opt/zioan-workflow && cd /opt/zioan-workflow
Step 3: Domain DNS Setup
DNS Configuration (Simple)
- 1. Create an A record at your domain registrar:
- - Type: A
- - Name: @ (for root domain) or subdomain name
- - Value: YOUR_VPS_IP (your server's public IP address)
- - TTL: Auto or 300
- 2. Wait for DNS propagation (usually 5-15 minutes, can take up to 48 hours)
- 3. Verify DNS is pointing to your server:
Should return your server's IP address
nslookup yourdomain.com
Important: If using Cloudflare, set the proxy status to "DNS only" (gray cloud), NOT "Proxied" (orange cloud). Caddy needs direct access to your server for SSL certificate issuance, and video/audio calls require direct UDP access.
Step 4: Run Installation Script
Installation Command
Run this command on your server:
Replace YOUR_CLIENT_ID with the Client ID from your account dashboard.
Don't have one yet? Register for a free trial.
The installation script will prompt you for:
- 1. Domain name (enter: example.com or subdomain.example.com)
- 2. Enable automatic HTTPS with Caddy?
Select YES - this enables automatic SSL certificates - 3. Admin account creation:
- - Admin username
- - Admin email address
- - Admin password
Step 5: Firewall Configuration
# Allow SSH
ufw allow 22/tcp
# Allow HTTP (for Let's Encrypt certificate verification)
ufw allow 80/tcp
# Allow HTTPS
ufw allow 443/tcp
# Allow TURN ports (for video/audio calls)
ufw allow 3479/udp && ufw allow 3479/tcp && ufw allow 5349/tcp
# Allow RTP media ports (for video/audio streams)
ufw allow 40000:40100/udp
# Enable firewall and check status
ufw enable && ufw status
Step 6: Verification and First Access
Verify containers are running:
docker ps
You should see containers including caddy, workflow_app, workflow_db, etc.
Access Your Application
- 1. Open in browser: https://yourdomain.com
- 2. Login with: Admin credentials created during installation
SSL certificate is automatically provisioned. If you see a certificate warning, wait a few minutes for Let's Encrypt to issue the certificate.
Common Issues and Solutions
- - Check ALLOWED_HOSTS includes your domain
- - Restart entire Docker stack, not just individual containers
- - Ensure HTTPS access (HTTP may have security restrictions)
- - IP access may cause CSRF issues - use domain access after initial setup
- - Clear browser cookies and cache
- - Verify CSRF_TRUSTED_ORIGINS includes domain
- - Check Docker logs:
docker logs workflow_app - - Verify client ID authentication
- - Ensure sufficient server resources
- - Can't see/hear remote participants: Ensure firewall ports 40000-40100 (UDP), 3479 (STUN/TURN), and 5349 (TURNS) are open
- - Using Cloudflare Tunnel: Video/audio calls require direct UDP access. Cloudflare Tunnel only handles HTTP - use a VPS with static IP instead
- - Using Cloudflare DNS proxy (orange cloud): Switch to DNS only mode (gray cloud) for video calls to work
- - Connection timeouts: Check that ALLOWED_HOSTS in .env includes your domain
- - One-way media: Restart the Docker stack:
docker compose restart
Need Help?
For installation issues or questions about alternative deployment scenarios, please email us at hello@zioan.com or use our contact form - we'll be happy to assist you with your specific setup requirements.
Ready to get started?
Register for a free 30-day trial to get your Client ID and start deploying.
Start Free Trial