[{"data":1,"prerenderedAt":190},["ShallowReactive",2],{"seo-verification":3,"blog-huly-replace-linear-notion-and-slack-on-your-vps-ma-en":6,"promo-bar-likely":189},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-huly-replace-linear-notion-and-slack-on-your-vps-ma-en",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":26,"featuredImage":28,"bgImage":29,"posterImage":30,"relatedSolution":28,"intro":31,"sections":32,"ctaTitle":125,"ctaBody":126,"ctaButton":127,"ctaUrl":128,"relatedPosts":129},221,"huly-replace-linear-notion-and-slack-on-your-vps",{"fr":12,"en":10,"ar":13,"es":14},"huly-gestion-projet-self-hosted-vps","huly-استبدل-linear-وnotion-وslack-على-خادمك-الافتراضي","huly-gestion-proyectos-self-hosted-vps","Huly: replace Linear, Notion and Slack on your VPS","Deploy Huly on your VPS to centralise issues, docs and chat — system requirements, installation, MongoDB backup, troubleshooting and version updates.",7,2,false,"2026-08-04T00:00:00+00:00","2026-10-20T23:18:05+00:00",{"id":18,"name":23,"slug":24,"color":25,"icon":24},"Automation","automatisation","bg-brand-action\u002F10 text-brand-action",[27],{"id":18,"name":23,"slug":24,"color":25,"icon":24},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fhuly-gestion-projet-self-hosted-vps-poster.svg","Running a development team often means juggling three or four separate SaaS subscriptions: an issue tracker, a wiki, a chat tool, a sprint board. Huly brings all of this into a single application under the EPL-2.0 licence, self-hosted on your own VPS. One server, zero seat fees, and your data stays inside your infrastructure.",[33,37,46,49,68,71,74,86,89,96,99,123],{"type":34,"title":35,"body":36},"h2","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.",{"type":38,"title":39,"items":40},"ul","What Huly consolidates in your infrastructure",[41,42,43,44,45],"**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.",{"type":34,"title":47,"body":48},"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 VPS Business (8 vCPU, 16 GB RAM) for thirty or more.",{"type":50,"title":51,"steps":52},"steps","Deploy Huly on a VPS in five steps",[53,56,59,62,65],{"title":54,"body":55},"Clone the official repository","Fetch the configuration from the public repository: `git clone https:\u002F\u002Fgithub.com\u002Fhcengineering\u002Fhuly-selfhost.git && cd huly-selfhost`. The repository includes `compose.yml` and the `setup.sh` script, which generates the nginx configuration and `.env` file automatically.",{"title":57,"body":58},"Run the setup script","Run `.\u002Fsetup.sh` and enter your subdomain address (e.g. `huly.example.com`). The script generates `huly_v7.conf` containing the version (`HULY_VERSION`), JWT secrets, MinIO credentials and volume paths. Enable the nginx configuration with `sudo ln -s $(pwd)\u002Fnginx.conf \u002Fetc\u002Fnginx\u002Fsites-enabled\u002Fhuly.conf && sudo nginx -s reload`.",{"title":60,"body":61},"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 with `docker compose ps` — all services should show as `running`.",{"title":63,"body":64},"Configure the HTTPS reverse proxy","The `setup.sh` script already generates an nginx configuration with TLS. If you use Caddy or Traefik, point the reverse proxy to the internal port of the `front` service (default `8083`). Make sure WebSockets are correctly proxied via the `Upgrade` and `Connection` headers — without them, real-time messaging and video calls will not work.",{"title":66,"body":67},"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.",{"type":69,"body":70},"tip","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.",{"type":34,"title":72,"body":73},"Post-installation: backup, monitoring and version updates","Once Huly is running, three maintenance tasks are worth setting up immediately.",{"type":50,"title":75,"steps":76},"Set up backup, monitoring and updates",[77,80,83],{"title":78,"body":79},"Automate backups","The repository ships two ready-to-use scripts: `backup-create.sh` and `backup-restore.sh`. Run `.\u002Fbackup-create.sh` from the `huly-selfhost` folder to archive all volumes (CockroachDB, Elasticsearch, MinIO). Schedule the script via cron — for example `0 3 * * * \u002Fopt\u002Fhuly-selfhost\u002Fbackup-create.sh >> \u002Fvar\u002Flog\u002Fhuly-backup.log 2>&1` for 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 consult `MIGRATION.md` before restoring.",{"title":81,"body":82},"Monitor container health","Set up a simple alert by running `docker compose ps` in 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 the `account`, `transactor` and `elasticsearch` services — these are responsible for the most visible failures. Logs for each service are available via `docker compose logs -f \u003Cservice-name>`.",{"title":84,"body":85},"Update to a new version","Before each update, read `MIGRATION.md` for the target version. If the section says \"No changes required\", the procedure is straightforward: edit `HULY_VERSION` in `huly_v7.conf` with the new tag (e.g. `v0.7.426`), then run `git 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 section `v0.7.204` — a direct in-place upgrade locks MongoDB data in a way that is difficult to reverse.",{"type":34,"title":87,"body":88},"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.",{"type":38,"title":90,"items":91},"Common errors and fixes",[92,93,94,95],"**Sign-up fails silently when creating an account.** Likely cause: the `account` service is unreachable or misconfigured. Check its logs with `docker compose logs -f account` — a callback URL error or a connection problem to CockroachDB will appear clearly. Make sure `HULY_HOST` in 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 -Xmx1g` to the `environment` section of the `elasticsearch` service in `compose.yml` to 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 `minio` service is in a `running` state with `docker compose ps`. If uploaded files disappear after a restart, verify that the volume path in `huly_v7.conf` is a valid absolute path on the host, and that permissions are correct (`chown -R 1000:1000 \u002Fvar\u002Fhuly\u002Ffiles`).","**WebSockets not working — messaging and video calls are frozen.** Cause: the reverse proxy is not forwarding `Upgrade: websocket` and `Connection: Upgrade` headers. In nginx, add explicitly `proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection \"upgrade\";` inside the `location` block. With Caddy, the `reverse_proxy` directive handles WebSockets automatically in recent versions.",{"type":34,"title":97,"body":98},"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.",{"type":100,"title":101,"rows":102},"comparison","Huly vs Linear + Notion + Slack: what you gain and what you take on",[103,107,111,115,119],[104,105,106],"Monthly cost (10-person team)","~€600 (combined subscriptions)","299 DH excl. VAT (ServOrbit VPS Power)",[108,109,110],"Data hosting","With SaaS vendors","On your own infrastructure",[112,113,114],"Server maintenance","None","Updates + backups to manage",[116,117,118],"Customisation","Limited to pricing tiers","Full (open source EPL-2.0)",[120,121,122],"Resources required","Browser only","VPS 2 vCPU \u002F 8 GB RAM minimum",{"type":69,"body":124},"To go further with workflow automation, Huly can be paired with a self-hosted CI\u002FCD pipeline. See our guide on Woodpecker CI and Forgejo to set up a complete pipeline on the same VPS.","Run Huly on a ServOrbit VPS","ServOrbit offers VPS plans from 4 GB to 16 GB of RAM: from the VPS Power upwards, they host a Docker Compose stack like Huly. Deploy in minutes and keep full control of your team's data.","Discover ServOrbit for agencies","\u002Fsolutions\u002Fagences",[130,146,165],{"id":131,"slug":132,"slugs":133,"title":137,"excerpt":138,"readTime":139,"views":18,"isPinned":19,"noindex":19,"publishedAt":140,"updatedAt":141,"category":142,"categories":143,"featuredImage":28,"bgImage":29,"posterImage":145,"relatedSolution":28},212,"woodpecker-ci-and-forgejo-cicd-pipeline-on-a-vps",{"fr":134,"en":132,"ar":135,"es":136},"woodpecker-ci-pipeline-vps-forgejo","woodpecker-ci-وforgejo-خط-أنابيب-cicd-على-خادم-vps","woodpecker-ci-forgejo-pipeline-cicd-vps","Woodpecker CI and Forgejo: CI\u002FCD pipeline on a VPS","Deploy Woodpecker CI v3 with Forgejo on your VPS: Docker Compose setup, YAML pipelines, secrets, multi-arch runners and OAuth troubleshooting.",12,"2026-08-02T00:00:00+00:00","2026-11-08T01:13:13+00:00",{"id":18,"name":23,"slug":24,"color":25,"icon":24},[144],{"id":18,"name":23,"slug":24,"color":25,"icon":24},"\u002Fblog\u002Fcovers\u002Fwoodpecker-ci-pipeline-vps-forgejo-poster.svg",{"id":147,"slug":148,"slugs":149,"title":153,"excerpt":154,"readTime":155,"views":156,"isPinned":19,"noindex":19,"publishedAt":157,"updatedAt":141,"category":158,"categories":159,"featuredImage":28,"bgImage":29,"posterImage":161,"relatedSolution":162},27,"installing-windmill-on-a-vps-self-hosted-automation",{"fr":150,"en":148,"ar":151,"es":152},"installer-windmill-vps","تثبيت-windmill-على-خادم-vps-أتمتة-ذاتية-الاستضافة","instalar-windmill-en-un-vps","Installing Windmill on a VPS: self-hosted automation","Install Windmill on your VPS: turn your Python, TypeScript and Bash scripts into internal workflows and UIs, self-hosted via Docker.",13,1,"2026-05-24T00:00:00+00:00",{"id":18,"name":23,"slug":24,"color":25,"icon":24},[160],{"id":18,"name":23,"slug":24,"color":25,"icon":24},"\u002Fblog\u002Fcovers\u002Finstaller-windmill-vps-poster.svg",{"categorySlug":163,"appSlug":164},"automation-workflows","windmill",{"id":166,"slug":167,"slugs":168,"title":172,"excerpt":173,"readTime":174,"views":175,"isPinned":19,"noindex":19,"publishedAt":176,"updatedAt":177,"category":178,"categories":183,"featuredImage":28,"bgImage":29,"posterImage":185,"relatedSolution":186},99,"gitea-vs-gitlab-which-self-hosted-git-forge-on-a-vps",{"fr":169,"en":167,"ar":170,"es":171},"gitea-vs-gitlab","gitea-مقابل-gitlab-أي-منصة-git-مستضافة-ذاتيا-على-vps","gitea-vs-gitlab-que-forja-git-self-hosted-en-vps","Gitea vs GitLab: Which Self-Hosted Git Forge on a VPS?","Gitea vs GitLab self-hosted in 2026: licenses, memory footprint, CI\u002FCD, migration and security compared to choose your Git forge on a VPS.",10,3,"2026-03-13T00:00:00+00:00","2026-10-20T23:18:08+00:00",{"id":179,"name":180,"slug":181,"color":182,"icon":181},5,"Comparison","comparatif","bg-info\u002F10 text-info",[184],{"id":179,"name":180,"slug":181,"color":182,"icon":181},"\u002Fblog\u002Fcovers\u002Fgitea-vs-gitlab-poster.svg",{"categorySlug":187,"appSlug":188},"development","gitea",true,1794270431730]