Skip to main content

Self-Host Leantime: Strategic Project Management 2026

·OSSAlt Team
leantimeproject-managementkanbanself-hostingdocker2026

TL;DR

Leantime (AGPL 3.0, ~4K GitHub stars, PHP) is a strategic project management tool designed for non-project-managers. It combines task management (Kanban, Gantt, timelines) with strategic planning (OKRs, goals, milestones) and time tracking — all in one tool. Asana Business costs $24.99/user/month; Monday.com Pro costs $16/user/month. Leantime gives you unlimited users and projects on your own server, free.

Key Takeaways

  • Leantime: AGPL 3.0, ~4K stars, PHP — project management with strategic planning
  • Task views: Kanban, list, Gantt, calendar, and timeline views
  • OKRs and goals: Connect daily tasks to strategic objectives
  • Time tracking: Built-in timesheets with per-task time logging
  • Milestones: Track project phases and deadlines
  • Non-PM friendly: Designed for teams that aren't professional project managers

Leantime vs Asana vs Monday vs Plane

FeatureLeantimeAsanaMonday.comPlane
PriceFree (self-host)$10-24/user/mo$9-16/user/moFree (self-host)
OKRs/GoalsYesYes (Business)NoNo
Gantt chartsYesYes (Premium)YesNo
Time trackingBuilt-inYes (Business)YesNo
TimesheetsYesNoYesNo
KanbanYesYesYesYes
CalendarYesYesYesYes
Self-hostedYesNoNoYes
Target userStrategy + executionTask managementWorkflowsDev teams

Part 1: Docker Setup

# docker-compose.yml
services:
  leantime:
    image: leantime/leantime:latest
    container_name: leantime
    restart: unless-stopped
    ports:
      - "8080:80"
    environment:
      LEAN_DB_HOST: db
      LEAN_DB_USER: leantime
      LEAN_DB_PASSWORD: "${DB_PASSWORD}"
      LEAN_DB_DATABASE: leantime
      LEAN_SITENAME: "Your Team"
      LEAN_LANGUAGE: en-US
      LEAN_DEFAULT_TIMEZONE: America/Los_Angeles
      LEAN_SESSION_PASSWORD: "${SESSION_SECRET}"   # openssl rand -hex 32
      LEAN_SESSION_EXPIRATION: 28800   # 8 hours

      # Email:
      LEAN_EMAIL_RETURN: noreply@yourdomain.com
      LEAN_EMAIL_USE_SMTP: "true"
      LEAN_EMAIL_SMTP_HOSTS: mail.yourdomain.com
      LEAN_EMAIL_SMTP_PORT: 587
      LEAN_EMAIL_SMTP_USERNAME: noreply@yourdomain.com
      LEAN_EMAIL_SMTP_PASSWORD: "${MAIL_PASSWORD}"
      LEAN_EMAIL_SMTP_AUTO_TLS: "true"

    depends_on:
      - db

  db:
    image: mysql:8.0
    restart: unless-stopped
    volumes:
      - leantime_db:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
      MYSQL_DATABASE: leantime
      MYSQL_USER: leantime
      MYSQL_PASSWORD: "${DB_PASSWORD}"

volumes:
  leantime_db:
echo "DB_PASSWORD=$(openssl rand -base64 24)" >> .env
echo "DB_ROOT_PASSWORD=$(openssl rand -base64 24)" >> .env
echo "SESSION_SECRET=$(openssl rand -hex 32)" >> .env

docker compose up -d

Visit http://your-server:8080 → complete installation wizard → create admin account.


Part 2: HTTPS with Caddy

pm.yourdomain.com {
    reverse_proxy localhost:8080
}

Part 3: Projects and Tasks

Create a project

  1. + New Project
  2. Name: Product Launch Q2
  3. Type: Standard / Scrum / Kanban
  4. Start date and end date
  5. Add team members

Task views

Switch between views with a single click:

ViewBest for
KanbanVisual workflow — drag cards between columns
ListDense table view — sort and filter
GanttTimeline visualization — dependencies and durations
CalendarDate-based planning — deadlines and events
TimelineHigh-level milestone tracking

Create tasks

  1. + New To-Do
  2. Title, description (Markdown supported)
  3. Assign to team member
  4. Due date and effort estimate
  5. Priority: Low / Medium / High / Urgent
  6. Milestone: link to a project phase
  7. Tags: for cross-project categorization

Part 4: OKRs and Strategic Planning

Goals

Connect daily work to strategic objectives:

  1. Strategy → Goals
  2. Create a goal: Increase user retention by 20%
  3. Metric: Monthly active users returning after 30 days
  4. Target: 80% (current: 67%)
  5. Link tasks: attach specific to-dos that contribute to this goal

Milestones

Break projects into phases:

Phase 1: Research & Design    [Jan 15 - Feb 28]
Phase 2: Development          [Mar 1 - Apr 30]
Phase 3: Testing & QA         [May 1 - May 31]
Phase 4: Launch               [Jun 1 - Jun 15]

Idea boards

Capture and prioritize ideas before they become projects:

  1. Strategy → Ideas
  2. Add ideas with rough effort and impact scores
  3. Prioritization matrix: High impact + Low effort = Do first

Part 5: Time Tracking

Log time

  1. Open a task → Time Tracking
  2. Start timer (live tracking) or Add time manually
  3. Enter hours, description of work done
  4. Time entries are associated with the task and project

Timesheets

Reports → Timesheets:

  • View by: day, week, month
  • Filter by: project, team member, date range
  • Export: CSV for invoicing or payroll

Time reports

Project: Product Launch Q2
  Total hours: 340h
  By member:
    Alice:  120h (35%)
    Bob:     95h (28%)
    Carol:  125h (37%)
  By milestone:
    Research:     80h
    Development: 180h
    Testing:      60h
    Launch:       20h

Part 6: Team Collaboration

Comments and discussions

Each task has a comment thread:

  • @mentions: Tag team members
  • Reactions: Quick emoji reactions
  • File attachments: Share screenshots, documents

Notifications

Users receive notifications for:

  • Task assignments
  • Comment mentions
  • Due date reminders
  • Milestone updates

Dashboard

Each user gets a personal dashboard showing:

  • My tasks: Assigned to me, due soon
  • Calendar: Today's schedule
  • Recent activity: Team updates
  • Time tracked today: Time log summary

Part 7: Integrations

Calendar sync (CalDAV)

Settings → Integrations → Calendar:
  CalDAV URL: https://pm.yourdomain.com/caldav/

Sync deadlines and milestones to your calendar app.

API

BASE="https://pm.yourdomain.com"
API_KEY="your-api-key"

# Get projects:
curl "$BASE/api/jsonrpc/" \
  -H "x-api-key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "leantime.rpc.Projects.getAll",
    "id": 1
  }'

Webhooks

Settings → Webhooks → + Add:
  URL: https://yourapp.com/webhook
  Events: task.created, task.completed, task.updated

Part 8: Multi-Team Setup

Roles

RoleAccess
OwnerFull admin, billing, all projects
ManagerCreate projects, manage team members
EditorCreate and edit tasks in assigned projects
CommenterView and comment, no editing
ViewerRead-only access

Client access

Invite external clients with limited access:

  1. Team → Invite → Client role
  2. Client sees: project progress, milestones, approved files
  3. Client cannot see: internal discussions, time logs, budget

Maintenance

# Update:
docker compose pull
docker compose up -d

# Backup:
docker exec leantime-db-1 mysqldump -u leantime -p"$DB_PASSWORD" leantime \
  | gzip > leantime-db-$(date +%Y%m%d).sql.gz

# Logs:
docker compose logs -f leantime

See all open source project management tools at OSSAlt.com/categories/project-management.

Comments