Install in 10 minutes
Load the Docker image, copy config.yml, start with docker compose, and set credentials.
From your install pack
- Unzip
pulse-install-pack.zip - Load the image:
docker load < pulse-1.0.0-image.tar.gz - Copy and edit config:
- Jira:
cp config.jira.yml.example config.yml - ClickUp:
cp config.yml.example config.yml
- Jira:
- Start:
docker compose up -d - Open
http://localhost:8080(or your proxy URL)
See INSTALL.md in the same folder for detail.
Credentials
Set in config.yml or environment (*_FILE → env → yaml):
Pulse supports three patterns (full detail in install.md, same folder in the install pack):
| Option | Where tokens live | Typical use |
|---|---|---|
| a | config.yml (mount read-only) | Pilots, small teams |
| b | .env on the host | Common self-hosted Docker |
| c | Mounted secret files (JIRA_TOKEN_FILE, etc.) | DevOps /K8s / Swarm /vault agents |
Option C (DevOps): set env var to file paths, tokens never in Yaml or process env:
environment:
JIRA_TOKEN_FILE: /run/secrets/jira_token
volumes:
- ./secrets/jira_token:/run/secrets/jira_token:ro
Precedence *_FILE → environment variable → config.yml.
| Setting | Env var | *_FILE variant | Notes/Example |
|---|---|---|---|
| Jira URL | JIRA_URL | JIRA_URL_FILE | https://yourcompany.atlassian.net |
| Jira email | JIRA_EMAIL | JIRA_EMAIL_FILE | User email (ideally a bot and not a personal email) |
| Jira token | JIRA_TOKEN | JIRA_TOKEN_FILE | API token from Atlassian (ideally a bot and not a personal token) |
| ClickUp token | CLICKUP_TOKEN | CLICKUP_TOKEN_FILE | Personal API token (pk_…, ideally a bot and not a personal token) |
| ClickUp Team ID | CLICKUP_WORKSPACE | CLICKUP_WORKSPACE_FILE | Validated via GET /team/{id} on first sync |
Leave jira.token: "" / clickup.token: "" in config.yml when using B or C.
After config.yml changes: docker compose restart
After .env or secret file changes: docker compose up -d --force-recreate (see Docker operations)
