A beautiful, modern web interface for managing your home lab Docker containers. HomelabARR makes deploying and managing self-hosted applications easy with just a few clicks.
π Live Demo
- This app is under heavy development and as such is not fully functional
- Volume mounts/mapping needs to be set so that containers requiring storage can install
- The majority of the application ports will need to be set to not conflict with one another. I will be making a database of used ports and apps so that I can go back and fix these
- Some template files may be using outdated images, I am currently testing to see what deploys
- Traefik mode not yet complete
- Authentik mode is not yet complete
- I need to set up a persistent storage method.
- Unable to stop or restart containers from the web interface. (Need to complete the API)
- Needs a notification upon a successful deploy
- π One-click application deployment
- π Container management (start, stop, restart, remove)
- π Real-time container statistics
- π Live container logs
- π Uptime tracking and achievements
- π Dark/Light theme support
- π Search and filter applications
- π·οΈ Category-based organization
- π Optional Authentik integration with per-application control
- π Flexible deployment modes (standard or Traefik)
HomelabARR supports two deployment modes with optional authentication:
-
Standard Mode
- Direct port mapping
- Suitable for standalone deployments
- No reverse proxy is required
-
Traefik Mode
- Automatic Traefik integration
- SSL/TLS support via Let's Encrypt
- Domain-based routing
- Optional per-application Authentik authentication
- Choose which applications require authentication
- Seamless SSO integration when enabled
- Easy toggle in deployment interface
- Docker Engine 20.10.0 or higher
- Docker Compose v2.0.0 or higher
- Node.js 18 or higher (for development)
git clone https://github.com/smashingtags/homelabarr.git && cd homelabarr && docker compose -f homelabarr.yml up -d
- Create a
docker-compose.yml
file with the following content:
services:
frontend:
image: ghcr.io/smashingtags/homelabarr-frontend:latest
container_name: homelabarr-frontend
restart: unless-stopped
ports:
- "8087:80"
networks:
- homelabarr
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://homelabarr-frontend/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
backend:
image: ghcr.io/smashingtags/homelabarr-backend:latest
container_name: homelabarr-backend
restart: unless-stopped
environment:
- NODE_ENV=production
- PORT=3001
- CORS_ORIGIN=*
- DOCKER_SOCKET=/var/run/docker.sock
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "3009:3001"
networks:
- homelabarr
group_add:
- "999" # Docker group ID
privileged: true # Required for Docker socket access
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://homelabarr-backend:3001/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
networks:
homelabarr:
name: homelabarr
- Start the application:
docker compose up -d
# Clone the repository
git clone https://github.com/smashingtags/homelabarr.git
cd homelabarr
# Start the application
docker compose up -d
# Clone the repository
git clone https://github.com/smashingtags/homelabarr.git
cd homelabarr
# Install dependencies
npm install
# Start development server
npm run dev
For Unix-based systems, ensure proper Docker socket permissions:
sudo chmod 666 /var/run/docker.sock
- Track container uptime with achievements
- Achievement levels:
- Starting (up to 24 hours)
- Bronze (24+ hours)
- Silver (7+ days)
- Gold (30+ days)
- Platinum (90+ days)
- Diamond (365+ days)
- Leaderboard showing top performing containers
- Real-time CPU usage monitoring
- Memory usage tracking
- Network traffic monitoring
- Detailed uptime tracking
- Historical performance data
- Standard deployment with direct port mapping
- Traefik integration for reverse proxy
- Optional Authentik authentication
- Automatic volume path creation
- Port conflict detection
- Live container logs with auto-refresh
- One-click container controls
- Health status monitoring
- Resource usage alerts
- Batch operations support
Returns a list of all Docker containers with their status and statistics.
Response:
[
{
"id": "container_id",
"name": "container_name",
"status": "running",
"stats": {
"cpu": 2.5,
"memory": {
"usage": 100000000,
"limit": 1000000000,
"percentage": 10
},
"network": {
"rx_bytes": 1000,
"tx_bytes": 2000
},
"uptime": 86400
}
}
]
Deploy a new container based on a template.
Request Body:
{
"appId": "string",
"config": {
"key": "value"
},
"mode": {
"type": "standard|traefik",
"useAuthentik": boolean
}
}
Response:
{
"success": true,
"containerId": "string"
}
Remove a container by ID.
Response:
{
"success": true
}
- Traefik (Reverse Proxy)
- Homepage (Dashboard)
- Fenrus (Dashboard)
- Heimdall (Application Dashboard)
- Authelia (Authentication)
- Authentik (Identity Provider)
- Vaultwarden (Password Manager)
- Plex (Media Server)
- Jellyfin (Media Server)
- Emby (Media Server)
- Overseerr (Request Management)
- qBittorrent (Torrent Client)
- NZBGet (Usenet Client)
- Nextcloud (File Sharing)
- Syncthing (File Sync)
- Paperless-ngx (Document Management)
- Immich (Photo Management)
- Uptime Kuma (Status Monitor)
- Grafana (Analytics)
- Netdata (Performance Monitor)
- Glances (System Monitor)
- Gitea (Git Server)
- Dockge (Container Management)
- Cloud Commander (File Manager)
- IT Tools (Developer Utilities)
- Rocket.Chat (Team Chat)
- Matrix (Decentralized Chat)
- Mattermost (Team Collaboration)
- Mailcow (Email Server)
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.