---
title: "Docker Deployment"
description: "Deploy GlassHome with Docker Compose or standalone container. Multi-arch image, amd64 and aarch64 auto-selected."
canonical: https://glasshome.app/docs/docker
section: "Installation"
updated: 2026-06-09
---
# Docker

Run GlassHome with Docker Compose or as a standalone container. The image is multi-arch: Docker picks the right build for your machine automatically (amd64 or aarch64).

> **VM or older CPU?:** If Dash crashes immediately with `signal 4 / illegal instruction`, your CPU or VM profile is missing SSE4.2. See [Supported CPUs](/docs/installation#supported-cpus) for the fix.

## Docker Compose

```yaml
services:
  glasshome:
    image: ghcr.io/glasshome/dash:latest
    container_name: glasshome
    restart: unless-stopped
    ports:
      - "3123:3123"
    volumes:
      - glasshome_data:/data
    environment:
      - PORT=3123
      - DATA_DIR=/data

volumes:
  glasshome_data:
    driver: local
```

`PORT` and `DATA_DIR` default to the values shown. You only need to set them if you want to change the internal port or data path. If you change the internal port, update the left side of the `ports` mapping to match.

## Direct Container

```bash
docker run -d \
  --name glasshome \
  -p 3123:3123 \
  -v glasshome_data:/data \
  --restart unless-stopped \
  ghcr.io/glasshome/dash:latest
```

> **Don:** The `glasshome_data:/data` volume stores your SQLite database, dashboards, settings, and connections. All your data lives here.

## Container Image

Published to `ghcr.io/glasshome/dash:latest`. Runs on amd64 (PCs, Intel/AMD servers) and aarch64 (Raspberry Pi, Apple Silicon).

## Ports

Default `3123`. Override with `-p YOUR_PORT:3123`.

## Updating

**Docker Compose:**

```bash
docker compose pull && docker compose up -d
```

**Standalone container** (no Compose):

```bash
docker pull ghcr.io/glasshome/dash:latest
docker rm -f glasshome
docker run -d \
  --name glasshome \
  -p 3123:3123 \
  -v glasshome_data:/data \
  --restart unless-stopped \
  ghcr.io/glasshome/dash:latest
```

Data in the `glasshome_data` volume is not touched by either method.

## Beta builds

I publish early builds for testing before they ship in a stable release (the same builds the addon's Edge channel tracks). Use the `beta` tag instead of `latest`, or pin a specific version from the [GHCR tags page](https://github.com/glasshome/dash/pkgs/container/dash).

```
ghcr.io/glasshome/dash:beta
```

> **Beta is for testing:** Beta builds may have rough edges. Use the stable `latest` tag for your daily driver.

To go back to stable, switch the tag back to `latest` and pull again.

## Related docs

- [Connecting to Home Assistant](/docs/connecting): pair Dash with HA after install
- [Home Assistant Addon](/docs/addon): one-click install for HAOS users
- [Quickstart](/docs/quickstart): first dashboard in five minutes
- [Troubleshooting](/docs/troubleshooting): common install issues