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. 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. 2. Wait for DNS propagation (usually 5-15 minutes, can take up to 48 hours)
  3. 3. Verify DNS is pointing to your server:
    nslookup yourdomain.com
    Should return your server's IP address

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. 1. Domain name (enter: example.com or subdomain.example.com)
  2. 2. Enable automatic HTTPS with Caddy?
    Select YES - this enables automatic SSL certificates
  3. 3. Admin account creation:
    • - Admin username
    • - Admin email address
    • - Admin password
What happens automatically: Caddy obtains SSL certificates from Let's Encrypt, configures HTTPS, and handles all certificate renewals. No manual SSL setup required!

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. 1. Open in browser: https://yourdomain.com
  2. 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

400 Bad Request Error:
  • - Check ALLOWED_HOSTS includes your domain
  • - Restart entire Docker stack, not just individual containers
Login Issues:
  • - 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
Container Startup Issues:
  • - Check Docker logs: docker logs workflow_app
  • - Verify client ID authentication
  • - Ensure sufficient server resources
Video/Audio Call Issues:
  • - 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