--- title: Getting started tags: - Developer - Technical documentation - Code - Programming sidebar_position: 1 --- ## Set up your development environment ### Prerequisites - **Node.js 24.18 or newer**: You can download it from the [official website](https://nodejs.org/). - **Corepack**: Run `corepack enable` so the repository selects its pinned pnpm 11 version. - **Git**: You can download it from the [official website](https://git-scm.com/). - **Docker or Docker Desktop**: Required for the Redis service and the developer Docker CLI. - **Go 1.25+**: Required only for the developer Docker CLI. You can download it from the [official website](https://go.dev/). - **GitHub CLI**: Required only for pull-request image features. Install it from the [official website](https://cli.github.com/), then authenticate with `gh auth login`. The versions in the root `package.json` are the supported baseline. Let Corepack select the repository version instead of installing an unrelated global pnpm: ```sh corepack enable corepack install pnpm install --frozen-lockfile ``` ### Run the Homarr application 1. Copy `.env.example` to `.env`. 2. Set `DB_URL` to an absolute writable SQLite file path. 3. Keep Redis and the optional local databases running in one terminal. 4. Apply migrations and start Next.js in another terminal. ```sh cp .env.example .env ``` Terminal 1: ```sh pnpm docker:dev ``` Terminal 2: ```sh pnpm db:migration:sqlite:run pnpm dev ``` The infrastructure command remains in the foreground. Open `http://127.0.0.1:3000`; the first user created through Homarr becomes the instance administrator. Use `pnpm docker:dev:up` instead when you only need Redis in the background. Running the migration also seeds the default data; use `pnpm db:seed` to seed it explicitly later. Workshop contributors can set up PocketBase and Docusaurus with the dedicated [Workshop development guide](../../workshop/development). ### Useful commands - `pnpm dev` — Next.js on port 3000. - `pnpm dev:benchmark` — authenticated-board benchmark; readiness-only `--smoke` runs are not performance claims. - `pnpm dev:cli -- dev` — browse and run local images and remote pull-request images. - `pnpm dev:cli -- build ` — build the current checkout as `homarr:`. - `pnpm dev:cli -- build --pr ` — build a pull request from a temporary checkout. - `pnpm dev:cli -- rebuild ` — rebuild an image from its recorded checkout or pull request. - `pnpm dev:cli:install` — optionally install the developer CLI as a `homarr` binary. - `pnpm dev:docs` — Docusaurus only on port 3003. - `pnpm docker:dev:up` — Redis development service in the background. - `pnpm cli` — Homarr operations CLI. - `pnpm db:migration:sqlite:run` — create or update a SQLite database. - `pnpm db:seed` — seed the default database data explicitly. - `pnpm db:studio` — inspect the database. - `pnpm format` / `pnpm format:fix` — check or apply oxfmt. - `pnpm lint` / `pnpm lint:fix` — check or apply oxlint. - `pnpm typecheck` — typecheck all workspaces. - `pnpm test` — unit and contract suites. - `pnpm build` — production monorepo build. - `docker build -t homarr .` — build a production Docker image. - `docker run -p 7575:7575 -e SECRET_ENCRYPTION_KEY='your_64_character_hex_string' homarr:` — run it.