UptimeBeacon is a self-hosted uptime monitoring application that tracks the availability and performance of your websites, APIs, and services. Get instant alerts when things go down and share beautiful status pages with your users.
- Multi-Protocol Monitoring - HTTP/HTTPS, TCP, Ping, DNS, and more
- Real-time Alerts - Email, Slack, Discord, Telegram, and webhook notifications
- Public Status Pages - Customizable pages to communicate service status to users
- Incident Management - Track and document outages with status updates
- Response Time Tracking - Monitor performance trends over time
- SSL Certificate Monitoring - Get alerts before certificates expire
- Self-Hosted - Full control over your data and infrastructure
- Frontend: Next.js 15, React, tRPC, Tailwind CSS, shadcn/ui
- Backend: Bun, Elysia
- Database: PostgreSQL with Prisma ORM
- Authentication: NextAuth.js v5
- Build System: Turborepo
-
Clone the repository:
git clone https://github.com/yourusername/uptimebeacon.git cd uptimebeacon -
Install dependencies:
bun install
-
Set up environment variables:
cp apps/frontend/.env.example apps/frontend/.env cp apps/backend/.env.example apps/backend/.env
-
Start PostgreSQL:
docker compose up -d
-
Set up the database:
bun db:generate bun db:push
-
Start the development servers:
bun dev
The frontend will be available at http://localhost:3000 and the backend at http://localhost:3001.
-
Build the Docker images:
docker build -t uptimebeacon-frontend -f apps/frontend/Dockerfile . docker build -t uptimebeacon-backend -f apps/backend/Dockerfile .
-
Run with Docker Compose:
docker compose -f docker-compose.prod.yml up -d
-
Build all packages:
bun run build
-
Set production environment variables:
# Frontend DATABASE_URL=postgresql://user:password@host:5432/uptimebeacon AUTH_SECRET=your-secret-key NEXTAUTH_URL=https://your-domain.com # Backend DATABASE_URL=postgresql://user:password@host:5432/uptimebeacon PORT=3001 FRONTEND_URL=https://your-domain.com
-
Start the applications:
# Frontend (Next.js) cd apps/frontend && bun start # Backend (Elysia) cd apps/backend && bun start
| Variable | Description | Required |
|---|---|---|
DATABASE_URL |
PostgreSQL connection string | Yes |
AUTH_SECRET |
Secret for NextAuth.js sessions | Yes |
NEXTAUTH_URL |
Public URL of the frontend | Yes |
PORT |
Backend server port (default: 3001) | No |
FRONTEND_URL |
Frontend URL for CORS | Yes |
uptimebeacon/
├── apps/
│ ├── frontend/ # Next.js web application
│ │ ├── src/
│ │ │ ├── app/ # App Router pages
│ │ │ ├── components/# React components
│ │ │ └── server/ # tRPC API & auth
│ │ └── ...
│ └── backend/ # Elysia monitoring service
│ ├── src/
│ │ ├── routes/ # API endpoints
│ │ ├── services/ # Scheduler & checkers
│ │ └── websocket/ # Real-time updates
│ └── ...
├── packages/
│ └── database/ # Prisma schema & client
└── ...
We welcome contributions! Please see our Contributing Guide for details on how to get started.
bun dev # Start all apps in development mode
bun build # Build all packages
bun check # Run linting
bun check:write # Run linting with auto-fix
bun typecheck # Run TypeScript type checking
bun db:studio # Open Prisma StudioThis project is licensed under the MIT License - see the LICENSE file for details.