docker.recipes

Huly

advanced

All-in-one project management platform.

Overview

Huly is an open-source, all-in-one project management platform that serves as a modern alternative to Linear, combining issue tracking, project management, documentation, and team collaboration in a single unified interface. Built for modern development teams, Huly integrates project planning with real-time communication features including chat, virtual office spaces, and collaborative documents, making it a comprehensive workspace solution rather than just another task tracker. This stack combines Huly's application server with MongoDB for flexible document storage, MinIO for S3-compatible file storage, and Elasticsearch for powerful full-text search capabilities. MongoDB handles Huly's dynamic project data, user information, and issue structures with its schema-flexible document model, while MinIO stores file attachments, images, and document assets with high-performance object storage. Elasticsearch powers Huly's advanced search functionality across projects, issues, documents, and chat messages, enabling teams to quickly locate information across their entire workspace. Development teams, startups, and organizations seeking a self-hosted Linear alternative will find this configuration particularly valuable, as it provides enterprise-grade project management capabilities without vendor lock-in or per-user pricing. The combination delivers real-time collaboration features, advanced search across all content types, and the scalability to handle growing teams and complex project hierarchies while maintaining complete data ownership and customization control.

Key Features

  • Linear-style issue tracking with customizable project workflows, sprints, and roadmap visualization
  • Real-time collaborative documents with MongoDB change streams for instant synchronization
  • Full-text search across issues, projects, documents, and chat using Elasticsearch's relevance scoring
  • S3-compatible file attachment storage via MinIO with versioning and lifecycle management
  • Virtual office and team chat integration with persistent message history in MongoDB
  • Flexible project schema evolution using MongoDB's document-based data model
  • High-performance file serving and thumbnail generation through MinIO's object storage
  • Advanced search aggregations and filtering across all project data via Elasticsearch

Common Use Cases

  • 1Self-hosted Linear alternative for development teams wanting data ownership and customization
  • 2Startup project management hub combining issue tracking with team communication and documentation
  • 3Enterprise teams requiring on-premises project management with advanced search capabilities
  • 4Open-source projects needing integrated issue tracking, documentation, and contributor collaboration
  • 5Consulting firms managing multiple client projects with unified communication and file storage
  • 6Remote teams utilizing virtual office features alongside traditional project management workflows
  • 7Organizations transitioning from multiple tools (Jira, Slack, Confluence) to a unified platform

Prerequisites

  • Minimum 6GB RAM (2GB for Elasticsearch, 2GB for Huly, 1GB each for MongoDB and MinIO)
  • Docker and Docker Compose with support for named volumes and inter-container networking
  • Linux host with vm.max_map_count=262144 for Elasticsearch memory mapping requirements
  • Available ports 8087 for Huly web interface and internal container communication
  • Understanding of object storage concepts for MinIO configuration and file management
  • Basic MongoDB knowledge for backup procedures and user management setup

For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms

docker-compose.yml

docker-compose.yml
1services:
2 huly:
3 image: hardcoreeng/huly:latest
4 container_name: huly
5 restart: unless-stopped
6 ports:
7 - "8087:8087"
8 environment:
9 MONGO_URL: mongodb://mongodb:27017
10 MINIO_ENDPOINT: minio
11 MINIO_ACCESS_KEY: minioadmin
12 MINIO_SECRET_KEY: ${MINIO_PASSWORD}
13 ELASTIC_URL: http://elastic:9200
14 depends_on:
15 - mongodb
16 - minio
17 - elastic
18
19 mongodb:
20 image: mongo:6
21 container_name: huly-mongo
22 restart: unless-stopped
23 volumes:
24 - huly_mongo:/data/db
25
26 minio:
27 image: minio/minio:latest
28 container_name: huly-minio
29 command: server /data
30 environment:
31 MINIO_ROOT_USER: minioadmin
32 MINIO_ROOT_PASSWORD: ${MINIO_PASSWORD}
33 volumes:
34 - huly_minio:/data
35
36 elastic:
37 image: elasticsearch:8.11.0
38 container_name: huly-elastic
39 environment:
40 discovery.type: single-node
41 xpack.security.enabled: "false"
42 volumes:
43 - huly_elastic:/usr/share/elasticsearch/data
44
45volumes:
46 huly_mongo:
47 huly_minio:
48 huly_elastic:

.env Template

.env
1MINIO_PASSWORD=changeme123

Usage Notes

  1. 1Docs: https://huly.io/docs
  2. 2Access at http://localhost:8087
  3. 3Linear-like issue tracking with projects, sprints, and roadmaps
  4. 4Documents, chat, and virtual office features
  5. 5Increase Elasticsearch memory: vm.max_map_count=262144
  6. 6Modern UI with real-time collaboration

Individual Services(4 services)

Copy individual services to mix and match with your existing compose files.

huly
huly:
  image: hardcoreeng/huly:latest
  container_name: huly
  restart: unless-stopped
  ports:
    - "8087:8087"
  environment:
    MONGO_URL: mongodb://mongodb:27017
    MINIO_ENDPOINT: minio
    MINIO_ACCESS_KEY: minioadmin
    MINIO_SECRET_KEY: ${MINIO_PASSWORD}
    ELASTIC_URL: http://elastic:9200
  depends_on:
    - mongodb
    - minio
    - elastic
mongodb
mongodb:
  image: mongo:6
  container_name: huly-mongo
  restart: unless-stopped
  volumes:
    - huly_mongo:/data/db
minio
minio:
  image: minio/minio:latest
  container_name: huly-minio
  command: server /data
  environment:
    MINIO_ROOT_USER: minioadmin
    MINIO_ROOT_PASSWORD: ${MINIO_PASSWORD}
  volumes:
    - huly_minio:/data
elastic
elastic:
  image: elasticsearch:8.11.0
  container_name: huly-elastic
  environment:
    discovery.type: single-node
    xpack.security.enabled: "false"
  volumes:
    - huly_elastic:/usr/share/elasticsearch/data

Quick Start

terminal
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 huly:
5 image: hardcoreeng/huly:latest
6 container_name: huly
7 restart: unless-stopped
8 ports:
9 - "8087:8087"
10 environment:
11 MONGO_URL: mongodb://mongodb:27017
12 MINIO_ENDPOINT: minio
13 MINIO_ACCESS_KEY: minioadmin
14 MINIO_SECRET_KEY: ${MINIO_PASSWORD}
15 ELASTIC_URL: http://elastic:9200
16 depends_on:
17 - mongodb
18 - minio
19 - elastic
20
21 mongodb:
22 image: mongo:6
23 container_name: huly-mongo
24 restart: unless-stopped
25 volumes:
26 - huly_mongo:/data/db
27
28 minio:
29 image: minio/minio:latest
30 container_name: huly-minio
31 command: server /data
32 environment:
33 MINIO_ROOT_USER: minioadmin
34 MINIO_ROOT_PASSWORD: ${MINIO_PASSWORD}
35 volumes:
36 - huly_minio:/data
37
38 elastic:
39 image: elasticsearch:8.11.0
40 container_name: huly-elastic
41 environment:
42 discovery.type: single-node
43 xpack.security.enabled: "false"
44 volumes:
45 - huly_elastic:/usr/share/elasticsearch/data
46
47volumes:
48 huly_mongo:
49 huly_minio:
50 huly_elastic:
51EOF
52
53# 2. Create the .env file
54cat > .env << 'EOF'
55MINIO_PASSWORD=changeme123
56EOF
57
58# 3. Start the services
59docker compose up -d
60
61# 4. View logs
62docker compose logs -f

One-Liner

Run this command to download and set up the recipe in one step:

terminal
1curl -fsSL https://docker.recipes/api/recipes/huly/run | bash

Troubleshooting

  • Elasticsearch container exits with bootstrap checks failed: Run 'sudo sysctl -w vm.max_map_count=262144' and add to /etc/sysctl.conf for persistence
  • Huly cannot connect to MongoDB: Verify container networking and ensure MongoDB container is fully started before Huly initialization
  • File uploads failing to MinIO: Check MINIO_PASSWORD environment variable matches between Huly and MinIO containers
  • Search functionality not working: Confirm Elasticsearch container health and verify ELASTIC_URL environment variable format
  • Huly web interface showing 502 errors: Check container logs for port binding conflicts and ensure 8087 is not in use by other services
  • MongoDB connection timeouts: Increase MongoDB container memory allocation if handling large project datasets or multiple concurrent users

Community Notes

Loading...
Loading notes...

Download Recipe Kit

Get all files in a ready-to-deploy package

Includes docker-compose.yml, .env template, README, and license

Ad Space