Why consolidate issues, docs and chat into one tool
A Linear subscription, a Notion workspace, a Slack plan and GitHub Projects can easily add up to €40–80 per developer per month. Beyond cost, each tool creates a silo: a decision made in chat is never linked to the issue it triggered, and the wiki lives separately from the kanban board. Huly is released under the EPL-2.0 licence, which is highly permissive for self-hosting and allows commercial deployment without any per-seat royalty.
What Huly consolidates in your infrastructure
- Issues and sprints — create tickets, organise them into sprints and roadmaps with built-in Kanban boards, all without leaving the application.
- Wiki and documentation — write structured pages directly in Huly; docs are versioned and linked to the relevant projects.
- Real-time chat — channel and thread-based messaging with built-in video calls, replacing Slack without an additional subscription.
- Bidirectional GitHub sync — Huly issues are mirrored in GitHub and vice-versa; GitHub pull requests appear automatically in their linked issues.
- Time tracking — log time spent on each issue directly from the interface, with no third-party extension needed.
Exact requirements: what Huly actually consumes
Huly is a resource-intensive application. The official huly-selfhost repository specifies a hard minimum of 2 vCPU and 8 GB RAM — below this threshold, services may fail to start or stop responding under load. For a production deployment with an active team, 4 vCPU and 16 GB RAM are recommended. On the storage side, plan for at least 20 GB of Docker volume space: Elasticsearch alone can occupy 4–6 GB after a few weeks of indexing, and the file store (MinIO) grows with attachments. The stack runs several concurrent services — front, account, transactor, workspace, collaborator, elasticsearch, cockroachdb, redpanda and minio. A ServOrbit Power VPS (4 vCPU, 8 GB RAM) handles teams of up to fifteen people; move to the Pro tier (8 GB+) for thirty or more.
Deploy Huly on a VPS in five steps
Clone the official repository
Fetch the configuration from the public repository:
git clone https://github.com/hcengineering/huly-selfhost.git && cd huly-selfhost. The repository includescompose.ymland thesetup.shscript, which generates the nginx configuration and.envfile automatically.Run the setup script
Run
./setup.shand enter your subdomain address (e.g.huly.example.com). The script generateshuly_v7.confcontaining the version (HULY_VERSION), JWT secrets, MinIO credentials and volume paths. Enable the nginx configuration withsudo ln -s $(pwd)/nginx.conf /etc/nginx/sites-enabled/huly.conf && sudo nginx -s reload.Start the services with Docker Compose
Bring up the full stack with
docker compose up -d. On first start, Elasticsearch and CockroachDB initialise their data stores; allow two to three minutes before the interface becomes available. Check container status withdocker compose ps— all services should show asrunning.Configure the HTTPS reverse proxy
The
setup.shscript already generates an nginx configuration with TLS. If you use Caddy or Traefik, point the reverse proxy to the internal port of thefrontservice (default8083). Make sure WebSockets are correctly proxied via theUpgradeandConnectionheaders — without them, real-time messaging and video calls will not work.Create the first workspace and invite your team
Open your subdomain in a browser, create an administrator account, then generate your first workspace. From the workspace settings, send email invitations to your team members. No seats are counted: you only pay for the storage and bandwidth consumed on your VPS.
To enable GitHub synchronisation, go to Settings → Integrations in your Huly workspace. Connect your GitHub organisation in a few clicks via OAuth. Issues created in Huly then appear automatically in the matching repository, and GitHub pull requests are linked to their corresponding issues — no webhook configuration required.
Post-installation: backup, monitoring and version updates
Once Huly is running, three maintenance tasks are worth setting up immediately.
Set up backup, monitoring and updates
Automate backups
The repository ships two ready-to-use scripts:
backup-create.shandbackup-restore.sh. Run./backup-create.shfrom thehuly-selfhostfolder to archive all volumes (CockroachDB, Elasticsearch, MinIO). Schedule the script via cron — for example0 3 * * * /opt/huly-selfhost/backup-create.sh >> /var/log/huly-backup.log 2>&1for a daily backup at 3 am. Store archives off the VPS (S3, Hetzner bucket or a remote disk). For major migrations (e.g. v0.6.x → v0.7.x), always consultMIGRATION.mdbefore restoring.Monitor container health
Set up a simple alert by running
docker compose psin a cron job every five minutes, or deploy a lightweight tool such as Uptime Kuma (itself available as a self-hosted app on the same VPS). Prioritise monitoring theaccount,transactorandelasticsearchservices — these are responsible for the most visible failures. Logs for each service are available viadocker compose logs -f <service-name>.Update to a new version
Before each update, read
MIGRATION.mdfor the target version. If the section says "No changes required", the procedure is straightforward: editHULY_VERSIONinhuly_v7.confwith the new tag (e.g.v0.7.426), then rungit pull && docker compose pull && docker compose up -d. For a major upgrade (0.6.x → 0.7.x), follow the documented migration steps carefully, especially around sectionv0.7.204— a direct in-place upgrade locks MongoDB data in a way that is difficult to reverse.
Troubleshooting: four common errors and their fixes
The most common issues when deploying Huly all share the same root cause: a service that has not finished initialising, or an incomplete network configuration.
Common errors and fixes
- Sign-up fails silently when creating an account. Likely cause: the
accountservice is unreachable or misconfigured. Check its logs withdocker compose logs -f account— a callback URL error or a connection problem to CockroachDB will appear clearly. Make sureHULY_HOSTin your configuration exactly matches the published subdomain. - Elasticsearch does not start (exit code 137 or OOMKilled). Cause: insufficient memory. Elasticsearch requires at least 4 GB of RAM for itself at startup. If your VPS is running low, add
ES_JAVA_OPTS=-Xms1g -Xmx1gto theenvironmentsection of theelasticsearchservice incompose.ymlto cap its Java heap at 1 GB — at the cost of some search performance. - MinIO inaccessible — attachments fail to load. Cause: volume permission issues or an internal DNS resolution problem between containers. Check that the
minioservice is in arunningstate withdocker compose ps. If uploaded files disappear after a restart, verify that the volume path inhuly_v7.confis a valid absolute path on the host, and that permissions are correct (chown -R 1000:1000 /var/huly/files). - WebSockets not working — messaging and video calls are frozen. Cause: the reverse proxy is not forwarding
Upgrade: websocketandConnection: Upgradeheaders. In nginx, add explicitlyproxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";inside thelocationblock. With Caddy, thereverse_proxydirective handles WebSockets automatically in recent versions.
Which teams does Huly suit best?
Huly is a good fit for agencies and technical teams of 5 to 50 people who want to reduce their SaaS footprint without losing features. It also suits teams handling sensitive data for whom keeping communications and documentation on-premises is a regulatory or contractual requirement. If per-seat subscription costs are becoming a growth bottleneck, a single VPS is enough to cover the full collaborative toolset.
Huly vs Linear + Notion + Slack: what you gain and what you take on
Scroll the table
| Monthly cost (10-person team) | ~€600 (combined subscriptions) | ~€30 (ServOrbit VPS) |
|---|---|---|
| Data hosting | With SaaS vendors | On your own infrastructure |
| Server maintenance | None | Updates + backups to manage |
| Customisation | Limited to pricing tiers | Full (open source EPL-2.0) |
| Resources required | Browser only | VPS 2 vCPU / 8 GB RAM minimum |
To go further with workflow automation, Huly can be paired with a self-hosted CI/CD pipeline. See our guide on Woodpecker CI and Forgejo to set up a complete pipeline on the same VPS.