---
title: "Deploy Dossier"
description: "Self-hosted AI job search: CVs, cover letters, applications"
category: "AI/ML"
url: https://railway.com/deploy/deploy-dossier-ai-job-search-tracker
---

# Deploy Dossier

Self-hosted AI job search: CVs, cover letters, applications

**[Deploy Dossier on Railway](https://railway.com/template/deploy-dossier-ai-job-search-tracker)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/deploy-dossier-ai-job-search-tracker/manifest.json

- **Creator:** onepush
- **Category:** AI/ML
- **Total deploys:** 1

## Template content

### Dossier https://github.com/AienTech.png

- **Image:** ghcr.io/onepush-dev/dossier:1.10.0
- **Health check:** /api/health
- **Public domain:** Yes

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:18

## Documentation

# Deploy and Host self hosted Dossier (AI Job Search & Resume Builder) on Railway

This template deploys Dossier, a self-hosted AI job search workspace, with Postgres 18 and a /data volume for nightly backups.

## About Hosting Dossier open-source software on Railway (self hosted Dossier template)

Dossier is open-source under AGPL-3.0, so you can inspect, run, and modify the code.

The AI is the one part you still pay for. Hosted model providers bill you for API usage, separate from Railway's hosting fee.

## Why Deploy Dossier, the Teal / Huntr alternative on Railway (Railway Free Trial)

Teal's premium features need a paid subscription, and your tracker lives on its servers. Expect more setup than signing up for Teal.

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Dossier on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.

### Railway vs Other Hosting Providers and VPS for Dossier self hosting

Dossier runs as a Next.js app plus PostgreSQL 18, so your hosting choice decides how much setup you handle yourself.

| Provider | What You Get with Railway | What You Get with the Other Provider |
| --- | --- | --- |
| DigitalOcean | One template with both services, a generated login password, and a /data volume for backups. | A Droplet you manage yourself: Docker, Postgres, TLS, and updates. |
| AWS | The whole stack from one template, with no VPC or IAM setup. | Full networking control, but you assemble EC2 or ECS, RDS, and storage first. |
| Hetzner | Managed deploy from the template, with the database kept private. | Cheap servers, but the install, backups, and reverse proxy are on you. |

## Common Use Cases for hosted Dossier

- **Tailored resume and cover letter per posting:** Paste a job description and Dossier drafts a resume and cover letter from your profile. Gaps get flagged, not invented.
- **Tracking applications from draft to offer:** Move each role across a board as you go, from saved and applied through interview and offer, all in one place.
- **Searching postings:** The default source, FreeHire, needs no key. Add a JSearch or Adzuna key for broader results.
- **The optional daily job agent:** It scans for matching postings on a schedule and surfaces candidates for review. It never sends an application or applies for you.
- **Keeping career data in your own Postgres:** Your profile, drafts, and tracking history live in your Railway Postgres service, with nightly backups to /data. You keep the copy and can export it any time.

## Dependencies for Dossier Docker hosted on Railway

Dossier runs as two Railway services: the app and a private PostgreSQL 18 database that holds your profile, applications, and drafts.

### Deployment Dependencies for Managed Dossier Service (Next.js + PostgreSQL 18)

- **Dossier service:** public on port 3000, volume at /data, health check at /api/health, restart policy ALWAYS.
- **Postgres service:** image ghcr.io/railwayapp-templates/postgres-ssl:18, volume at /var/lib/postgresql/data, private network only.
- **Wiring:** DATABASE_URL is referenced from the Postgres service, so you never copy a connection string.
- **Generated secrets:** DOSSIER_SECRET (48 characters) and DOSSIER_LOGIN_PASSWORD (20 characters).
- **Optional:** DOSSIER_AI_KEY stays empty until you want AI drafting.

### Implementation Details for Dossier (v1.10.0, argon2id login wrapper, /data backups)

The start script fixes ownership of /data, hashes DOSSIER_LOGIN_PASSWORD with argon2id into DOSSIER_PASSWORD, and waits up to 120 seconds for Postgres before running the upstream start.sh.

## How does Dossier compare against other job search and resume tools

### Dossier vs Teal (Teal Alternative)

- **Where Dossier fits:** You own the database, the backups, and the AI key, and nothing leaves your Postgres unless you export it.
- **Where Teal wins:** Teal has a polished hosted experience, a browser extension for saving postings, and no server to keep running.
- **Trade-off to know:** Dossier needs a Railway deploy or VPS and a working AI provider key before the drafting features feel useful.

### Dossier vs Huntr (Huntr Alternative)

- **Where Dossier fits:** Drafts are built only from facts in your profile, and gaps get flagged instead of filled in with invented experience.
- **Where Huntr wins:** Huntr's hosted board and browser extension are more mature, and you don't have to manage Postgres or backups yourself.
- **Trade-off to know:** Dossier is built for one person with one password, so it won't help if you're coordinating a job hunt with a team.

### Dossier vs Rezi (Rezi Alternative)

- **Where Dossier fits:** You can keep multiple tailored resumes and cover letters per posting, export PDFs, and keep your source material private.
- **Where Rezi wins:** Rezi is focused on ATS-friendly resume templates and scoring, and it works in a browser with no setup.
- **Trade-off to know:** Dossier has twelve resume themes and a theme builder, but Rezi's hosted editor needs no server at all.

### Dossier vs a Spreadsheet Tracker (Spreadsheet Job Tracker Alternative)

- **Where Dossier fits:** Applications move from draft to offer on a board, with resumes and postings linked to each one instead of scattered across tabs.
- **Where a spreadsheet wins:** A spreadsheet is free, works offline, and you can shape it into anything you like in minutes.
- **Trade-off to know:** Dossier adds a service to run and an AI key to manage, which is overkill if you only apply to a handful of jobs.

## How to use Dossier (the self-hosted job search workspace)?

Once the deploy finishes, the first day is mostly copying one password and filling in your profile.

1. Deploy the template with no inputs. Railway generates the secrets and the login password.
2. Open the Dossier service, go to the Variables tab, and copy `DOSSIER_LOGIN_PASSWORD`.
3. Open the public URL and sign in with that password.
4. Build your profile by hand, or import a PDF, Word or Markdown resume.
5. Add `DOSSIER_AI_KEY` in Variables or under Settings, then AI provider. The app runs without it, but tailored drafts need a key, and providers bill you for API usage.
6. Paste a job posting to create an application, then generate a tailored resume and cover letter.
7. Export the finished documents as PDFs.

```
curl https://your-dossier-domain.up.railway.app/api/health
```

A healthy instance returns status ok and version 1.10.0.

## How to self host Dossier on other VPS Services (Dossier self hosting guide)

### Clone the Repository

Upstream ships a production Compose file, so you fetch that instead of building from source. Dossier is AGPL-3.0; keep the license with any copy you run.

```bash
mkdir ~/dossier
cd ~/dossier
curl -fsSL -o compose.yml https://raw.githubusercontent.com/AienTech/dossier/main/compose.production.yml
```

### Install Dependencies

You need Docker Engine with the Compose plugin and about 2 GB of free memory. Upstream recommends at least 2 vCPUs and 2 GB for a server.

### Configure Environment Variables

Generate the two secrets, then make a password hash. The hash-password command prints one line starting with argon2id; add it to .env as DOSSIER_PASSWORD. This is the manual step the Railway template does for you.

```bash
echo "POSTGRES_PASSWORD=$(openssl rand -hex 24)" > .env
echo "DOSSIER_SECRET=$(openssl rand -base64 32)" >> .env
docker run --rm -it --platform linux/amd64 ghcr.io/aientech/dossier hash-password
```

### Start the Dossier Application

Start it, then sign in on port 3000 and pick a model in Settings, AI provider. Put Caddy in front for HTTPS on a public server.

```bash
docker compose up -d
```

Railway handles the managed Postgres, the HTTPS domain, the persistent /data volume, and restarts for you.

## Official Pricing of Dossier (Dossier pricing)

Dossier itself is free and open source under AGPL-3.0, so there is no license fee to pay. Hosted AI providers bill you directly for API usage, and Dossier does not change those rates.

## Dossier cloud vs self hosted comparison (Pricing, features, costs, and more)

Dossier is free to run yourself, but the bill still lands somewhere. The sections below cover what to expect on each side.

### Monthly cost of self hosting Dossier on Railway

Your Railway cost depends on two services: Dossier itself and its Postgres 18 database, plus the /data volume that holds nightly backups and exports. A single user's job search keeps both small, and your AI provider bills separately.

### System Requirements for Hosting Dossier on a VPS

Dossier is a Next.js 16 app backed by PostgreSQL, so a VPS needs enough memory for the Node server and the database together, plus disk for the /data volume.

## Frequently Asked Questions (FAQs)

### Does Dossier work without an AI key?

Yes. AI-powered drafting and tailoring only activate once you add `DOSSIER_AI_KEY`.

### Which AI providers does Dossier support?

Dossier can use OpenAI, Anthropic, Mistral, or a local or LM Studio model, selected with `DOSSIER_AI_PROVIDER`.

### How do I change my password?

Update `DOSSIER_LOGIN_PASSWORD` in the Dossier service Variables tab and redeploy.

### Where are my backups?

Nightly backups run at 03:00 in your configured timezone and are written to the `/data` volume. They are kept for 14 days by default, controlled by `DOSSIER_BACKUP_RETENTION_DAYS`.

### Does Dossier apply to jobs for me?

No. The job agent searches and surfaces postings but never sends applications or submits anything on your behalf. Every application stays under your control.

### Is my data private?

Your career data lives in your own Railway Postgres database and `/data` volume, and telemetry is turned off by default.


## Similar templates

- [Chat Chat](https://railway.com/deploy/-WWW5r) — Chat Chat, your own unified chat and search to AI platform.
- [Weaviate](https://railway.com/deploy/weaviate-1) — Vector database with hybrid search and an API key-protected API
- [Möbius v0.1 Personal AI OS](https://railway.com/deploy/mobius-v01-personal-ai-os) — Self-hosted AI agent that builds and runs apps for you, with memory.

Open this page in a browser: https://railway.com/deploy/deploy-dossier-ai-job-search-tracker
