HomeDock is a sleek server launcher that turns ports and subdomains into a clean, categorized dashboard. It is a Next.js + NestJS monorepo with a SQLite-backed configuration, designed for Linux/ARM and Docker Compose.
한국어 문서: README.ko.md
- Public dashboard with category cards, square service tiles, and a favorites dock.
- Admin-only settings modal for brand/title/description, layout columns, and categories/services.
- Theme presets and visibility toggles for the header, dock separators, and layout.
- Weather via Open-Meteo (IP auto-location + manual search), with configurable metadata rows.
- System summary card with configurable fields and order.
- Built-in i18n: Korean, English, Japanese, Chinese.
- Node.js 20+
- pnpm 9+ (via Corepack)
- Docker (optional, for Compose deployment)
- Clone and enter the repo:
git clone https://github.com/BeomSeokYu/HomeDock.git
cd HomeDock- Copy the environment template:
cp .env.example .env-
Edit
.envand set:ADMIN_EMAIL,ADMIN_PASSWORD,JWT_SECRETWEB_ORIGIN(CORS allowlist)NEXT_PUBLIC_API_BASE_URL(baked into the web build)NEXT_PUBLIC_SITE_URL(used for sitemap and OG metadata)- Optional:
API_PORT,WEB_PORTif you want custom ports
-
Build and run:
docker compose up --build -d- Open
http://localhost:3000.
corepack enable
pnpm install
pnpm db:migrate
pnpm devRun separately if needed:
pnpm dev:web
pnpm dev:apiDefault ports: web :3000, API :4000.
Please read CONTRIBUTING.md before opening issues or pull requests. For community guidelines, see CODE_OF_CONDUCT.md. Security issues should be reported via SECURITY.md.
POST /api/auth/login-> set auth cookie + user payloadPOST /api/auth/logout-> clear auth cookieGET /api/auth/me-> current userGET /api/dashboard-> public dashboard dataGET /api/dashboard/admin-> admin dashboard data (auth)PUT /api/dashboard/admin-> update config + categories (auth)GET /api/weather-> current weather + daily dataGET /api/weather/locations?query=...-> location search
- Docker Compose stores SQLite at
./homedock-data/homedock.dbon the host. - Admin credentials are synced from
.envon API boot (email + password updates). - API container applies migrations on startup when
prisma/migrationsexist. NEXT_PUBLIC_API_BASE_URLis baked into the web build; rebuild when it changes.- Admin auth uses an HttpOnly cookie (default
SameSite=Lax). If web and API run on different domains, setCOOKIE_SAME_SITE=noneandCOOKIE_SECURE=true, and add CSRF protection. - Dynamic OG/icon routes use the Next.js edge runtime; build warnings about edge runtime are expected when those routes are enabled.
Brand assets (favicon, app icons, OG preview) are generated from SVG templates. Run this after you tweak the UI or update the preview design:
pnpm assets:generateNote: the generator uses sharp. If your environment lacks a compatible binary,
run it in Linux/macOS or install the proper platform build.



