selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

JobSync logo

Self-host JobSync

v1.1.22

Job tracker with AI resume review and job discovery

ReleaseOpen SourceMIT
Docker ComposeCompose file & guide
docker compose up
Updatedlast week
LanguageTypescript
Setup difficultyEasy
Stars
1 471
Port
3737 (JobSync web app (host mapping 3737:3737))
Docker
ghcr.io/gsync/jobsync
Dashboard with charts, weekly summaries and activity trackingJobs list showing applications with company and status detailsStreaming AI resume review in progressAI job matching showing a resume compatibility score

What is JobSync?

Should you self-host JobSync?

JobSync scores 53/100 on selfhost.directory (how scoring works) and ranks #10 of 38 in Personal Productivity. It has 1 471 GitHub stars.

It shipped 10 stable releases in the past year. The latest, v1.1.22, came out on 11 October 2026. New versions land roughly every 10 days.

Setup is easy: most people get it running in one sitting. An official Docker image is available. It is MIT-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is LanguageTool (75/100, 15 206 stars). It scores higher overall, so compare the two before you pick. See JobSync vs LanguageTool side by side.

Features

  • AI Chat Assistant
  • AI cover letter generation
  • AI job matching
  • AI resume review
  • Application tracking
  • Automated job discovery
  • Backup and Restore
  • Company pages
  • Contact Management
  • Interview question bank
  • MCP Server
  • Resume import from PDF/Word
  • Resume PDF export
  • Search progress dashboard
  • Task and activity tracking

JobSync README

How to install JobSync

Install JobSync with Docker Compose

Docker
Environment variables
TZ, AUTH_SECRET, ENCRYPTION_KEY, NEXTAUTH_URL, MCP_ENABLED

Make sure Docker is installed and running, then:

git clone https://github.com/Gsync/jobsync.git
cd jobsync
docker compose up

Open http://localhost:3737 and create your account.

First startup pulls the prebuilt app image. Updates can be applied with deploy.sh (or deploy.ps1 on Windows) from the project directory.

How to configure JobSync

  • AUTH_SECRETAuto-generated if not set. To set manually: `openssl rand -base64 32`

    Auto-generated if not set. To set manually: `openssl rand -base64 32`

  • AUTH_TRUST_HOSTtrueRequired when the app is not served from localhost (homelab ip, reverse proxy)

    Required when the app is not served from localhost (homelab ip, reverse proxy)

  • DATABASE_URL
  • DEEPSEEK_API_KEYDeepSeek API Key - get from https://platform.deepseek.com

    DeepSeek API Key - get from https://platform.deepseek.com

  • ENCRYPTION_KEYEncrypts the API keys you save in Settings. Set your own (`openssl rand -base64 32`) before adding any keys, and never change it afterwards — a new value makes every stored API key unrecoverable.

    Encrypts the API keys you save in Settings. Set your own (`openssl rand -base64 32`) before adding any keys, and never change it afterwards — a new value makes every stored API key unrecoverable.

  • GEMINI_API_KEYGoogle Gemini API Key - get from https://aistudio.google.com/apikey

    Google Gemini API Key - get from https://aistudio.google.com/apikey

  • MCP_ENABLEDSet to `false` to turn off the MCP server. Enabled by default in `docker-compose.yml`.

    Set to `false` to turn off the MCP server. Enabled by default in `docker-compose.yml`.

  • NEXTAUTH_URLThe address you open JobSync at. Defaults to `http://localhost:3737`; on a homelab server, use the server's IP or hostname.

    The address you open JobSync at. Defaults to `http://localhost:3737`; on a homelab server, use the server's IP or hostname.

  • OLLAMA_BASE_URLFor homelab server, if you ollama is running on server, change the following to your ollamma ip ex: http://192.168.x.x:12345

    For homelab server, if you ollama is running on server, change the following to your ollamma ip ex: http://192.168.x.x:12345

  • OPENAI_API_KEY
  • OPENROUTER_API_KEYOpenRouter API Key - get from https://openrouter.ai/keys

    OpenRouter API Key - get from https://openrouter.ai/keys

  • OTEL_CAPTURE_CONTENTAlso captures prompt/response content on LLM spans — has no effect unless OTEL_EXPORTER_OTLP_ENDPOINT above is also set

    Also captures prompt/response content on LLM spans — has no effect unless OTEL_EXPORTER_OTLP_ENDPOINT above is also set

  • OTEL_EXPORTER_OTLP_ENDPOINTObservability (OTel traces + logs to a self-hosted OpenObserve instance) Off by default — leave all four commented out for no change in behaviour. Base URL only; the app appends /v1/traces and /v1/logs itself

    Observability (OTel traces + logs to a self-hosted OpenObserve instance) Off by default — leave all four commented out for no change in behaviour. Base URL only; the app appends /v1/traces and /v1/logs itself

  • OTEL_EXPORTER_OTLP_HEADERS
  • OTEL_SERVICE_NAME
  • TZYour timezone (e.g. `America/Edmonton`). Set this on remote servers to avoid activity time shifts.

    Your timezone (e.g. `America/Edmonton`). Set this on remote servers to avoid activity time shifts.

JobSync releases & version history

More in Personal Productivity

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…