Skip to main content

How to Self-Host Huly in 2026: Complete Setup Guide

·OSSAlt Team
hulyself-hostedproject managementlinearnotionslackdockersetup guide2026

What Huly Is

Huly (25K+ GitHub stars) is an all-in-one project management platform that combines what typically requires multiple separate tools:

  • Issue tracking (Linear/Jira alternative): Projects, issues, sprints, roadmaps
  • Docs and wikis (Notion alternative): Collaborative documents, structured knowledge base
  • Team messaging (Slack alternative): Channels, direct messages, threading
  • HR and processes: Team management, office hours, time tracking

Self-hosting Huly means all your team's project data, documents, and communication stays on your infrastructure. No per-seat SaaS fees for multiple tools.

What makes Huly different from alternatives: Most project management tools specialize. Huly is deliberately opinionated about being everything a development team needs in one place — you don't need separate subscriptions for issue tracking, docs, and chat.

Server Requirements

Huly is resource-heavy compared to simpler project management tools. This is because it bundles multiple services (database, search engine, real-time collaboration).

Minimum Requirements

  • 2 vCPUs
  • 4GB RAM
  • 20GB storage
  • 4 vCPUs
  • 8GB RAM
  • 40GB storage
Team SizeServerRAMMonthly
1-5 usersCPX214GB$6.50
5-20 usersCPX318GB$10
20+ usersCPX4116GB$19

Warning: Running Huly on less than 4GB RAM results in degraded performance and potential container crashes. If your server is at minimum spec, monitor memory usage closely.

Step 1: Prepare Your Server

# Update system packages
sudo apt update && sudo apt upgrade -y

# Install Docker
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker

# Verify Docker installation
docker --version
docker compose version

Step 2: Clone the Huly Self-Host Repository

Huly maintains a dedicated repository for self-hosting that contains the Docker Compose configuration and setup scripts.

git clone https://github.com/hcengineering/huly-selfhost.git
cd huly-selfhost

Step 3: Run the Setup Script

Huly's setup script generates your configuration files:

chmod +x setup.sh
./setup.sh

The script prompts you for:

  • Host (domain or IP): Enter your domain (e.g., huly.yourdomain.com) or server IP
  • HTTP port: Default 80 (or your preferred port)
  • Port: Default 8083 for internal service

The script generates:

  • huly.conf: Your configuration file with all settings
  • nginx.conf: Nginx configuration for routing

After setup, verify huly.conf contains your correct settings:

cat huly.conf

Step 4: Configure Nginx

If Nginx is installed on your host (outside Docker):

sudo ln -s $(pwd)/nginx.conf /etc/nginx/sites-enabled/huly.conf
sudo nginx -t
sudo systemctl reload nginx

If you're using Docker-based Nginx or Caddy as a reverse proxy, skip this step and configure your proxy manually (see Step 8).

Step 5: Start Huly

docker compose up -d

Huly starts several containers:

  • mongodb: Document database (core data storage)
  • elastic: Elasticsearch (full-text search)
  • minio: S3-compatible file storage (document attachments)
  • huly-front: Web frontend
  • huly-account: Authentication and accounts service
  • huly-collaboration: Real-time collaboration (CRDT)
  • huly-transactor: Event processing
  • huly-rekoni: Document processing
  • nginx: Internal routing

Initial startup takes 3-10 minutes as Elasticsearch initializes and containers reach healthy state.

Monitor startup:

docker compose logs -f

Look for log entries indicating each service is ready. The elastic container takes the longest to initialize.

Step 6: Verify Services Are Running

docker compose ps

All containers should show "running" status. Common issues:

Elasticsearch failing: Likely an OS-level setting. Fix:

sudo sysctl -w vm.max_map_count=262144
echo 'vm.max_map_count=262144' | sudo tee -a /etc/sysctl.conf

Then restart: docker compose restart elastic

MongoDB failing: Check disk space (df -h). MongoDB needs sufficient free space to initialize.

Memory issues: If containers keep restarting, your server may not have enough RAM. Upgrade to a larger instance.

Step 7: Access Huly

Navigate to http://your-server-ip (or the domain you configured).

Create the First Account

The first account you create becomes the workspace owner. Register with:

  • Your email address
  • A strong password
  • Your name

Initial Workspace Configuration

After logging in:

  1. Create your first workspace: Give it your team or company name
  2. Invite team members: Settings → Members → Invite
  3. Create your first project: Projects → New Project

Step 8: Set Up HTTPS (Required for Team Use)

For team collaboration, HTTPS is essential — browsers block some real-time features on HTTP.

Option A: Caddy (Simplest)

Install Caddy on your host:

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update && sudo apt install caddy

/etc/caddy/Caddyfile:

huly.yourdomain.com {
    reverse_proxy localhost:80
}
sudo systemctl restart caddy

Caddy automatically handles SSL certificates via Let's Encrypt.

Option B: Nginx + Certbot on Host

If you installed Nginx on the host (from Step 4), add SSL:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d huly.yourdomain.com

Certbot automatically configures SSL and sets up auto-renewal.

Update Huly Configuration After HTTPS

After setting up HTTPS, run the setup script again with your HTTPS URL, or manually edit huly.conf:

# In huly.conf, update HOST to your domain
HOST=huly.yourdomain.com

Then restart:

docker compose up -d

Step 9: Configure Email (Optional)

Email is needed for:

  • Invitation emails when adding team members
  • Password reset
  • Notifications

SMTP Configuration

Edit huly.conf to add SMTP settings:

SMTP_HOST=smtp.yourprovider.com
SMTP_PORT=587
SMTP_USER=your@email.com
SMTP_PASS=yourpassword
SMTP_SENDER=huly@yourdomain.com

Then restart the account service:

docker compose restart huly-account

Free SMTP options:

  • Brevo (Sendinblue): 300 emails/day free
  • Mailgun: 1,000 emails/month free for 3 months
  • AWS SES: $0.10 per 1,000 emails after free tier

Step 10: Configure Audio/Video Calls (Optional)

Huly's audio and video calling runs on LiveKit infrastructure.

Option A: Use Huly's LiveKit (Easiest)

By default, Huly uses Huly's shared LiveKit infrastructure for calls. No configuration needed.

Option B: Self-Host LiveKit

For full data sovereignty or high usage:

  1. Deploy LiveKit on a separate server:
# LiveKit Cloud alternative: self-host LiveKit OSS
docker run --rm -it \
  -p 7880:7880 \
  -p 7881:7881 \
  -p 7882:7882/udp \
  -v $PWD/livekit.yaml:/livekit.yaml \
  livekit/livekit-server \
  --config /livekit.yaml \
  --node-ip YOUR_SERVER_IP
  1. Configure in huly.conf:
LIVEKIT_HOST=wss://livekit.yourdomain.com
LIVEKIT_API_KEY=your-api-key
LIVEKIT_API_SECRET=your-secret

Managing Your Huly Instance

Update Huly

Huly releases updates regularly:

cd huly-selfhost
git pull
docker compose pull
docker compose up -d

Always check the release notes at github.com/hcengineering/huly-selfhost/releases before updating.

Backup

Huly stores data in Docker volumes. Back up:

MongoDB (all application data):

docker exec huly-mongodb-1 mongodump --out /backup/$(date +%Y%m%d)
docker cp huly-mongodb-1:/backup/$(date +%Y%m%d) /opt/backups/huly/

MinIO (file uploads):

# Use rclone to backup MinIO to S3
rclone sync minio-source:huly s3-remote:your-backup-bucket/huly

Elasticsearch (search indices): Can be rebuilt from MongoDB, so lower priority for backup.

Add Users

Team members are invited by email:

  1. SettingsMembers
  2. Invite Member → Enter email
  3. The invited user receives a link to set up their account

Huly for Teams: What to Configure First

Workspace Structure

  1. Create Spaces for different team areas (Engineering, Design, Marketing)
  2. Within each Space, create Projects for active work
  3. Set up issue Categories and Priorities matching your workflow

Issue Tracking Workflow

Configure your team's workflow states:

  • SettingsClassesIssue → Add custom states

Default states: Todo → In Progress → Won't Fix / Cancelled → Done

Customize to match your team's workflow (e.g., add "In Review", "Blocked", "QA").

Communication

Huly's messaging replaces Slack for internal team communication:

  • Channels: Team-wide announcements, engineering discussions
  • Direct messages: Individual conversations
  • Issue comments: Discussion anchored to specific issues

Cost Comparison

SaaS Equivalent Costs (Per Month, 10 Users)

ToolPurposeMonthly
Linear BusinessIssue tracking$160
Notion TeamDocs + wiki$80
Slack ProTeam messaging$75
Total$315/month

Huly Self-Hosted

ComponentMonthly
Hetzner CPX31 (8GB)$10
Domain + SSL~$1
Total$11/month

Annual savings: $315 × 12 - $11 × 12 = $3,648/year for a 10-person team.

The tradeoff is self-hosting operational overhead (updates, backups, monitoring). For most small teams, this is 1-2 hours per month.

Find More All-in-One Platforms

Browse all Linear, Notion, and Slack alternatives on OSSAlt — compare Huly, Plane, Outline, Docmost, and every other open source project management and collaboration platform with deployment guides.

Comments