on the go note to flavor town reviewer! this project works, the demo your provided with is in a demo mode, this meens it uses mockup data, you can still remove and amke new monitors, hope this clears up confusion A powerful, extensible infrastructure monitoring platform built with Next.js. Monitor servers, databases, APIs, containers, and more through a unified dashboard..
-
Real-time Monitoring - Track server metrics, API health, and service status
-
Secure Credentials - Built-in encryption for API keys and passwords
-
Historical Data - View metrics over time with interactive graphs
-
Easy Setup - Get started in minutes with simple configuration
Get Overseer up and running in less than 5 minutes:
-
Clone and Install
git clone https://github.com/OverseerOSS/Overseer.git cd Overseer npm installl -
Configure Environment Create a
.envfile in the root:DATABASE_URL="postgresql://user:password@localhost:5432/overseer" SESSION_SECRET="your-32-character-random-secret"
-
Initialize Database
npx prisma migrate dev
-
Launch
npm run dev
Access the dashboard at http://localhost:3000.
Detailed configuration options:
DATABASE_URL: Your PostgreSQL connection string.SESSION_SECRET: A secure key for auth sessions. Generate one withopenssl rand -hex 32.
- Linux Server - Monitor CPU, RAM, and system metrics via SSH
- Dokploy - Monitor Dokploy-managed containers and applications
- Credential Management - Securely store API keys and secrets
- Full Documentation - Complete guides and references
Overseer uses a drop-in plugin system. Simply create a folder in app/extensions/ and it will be automatically registered.
// app/extensions/my-plugin/index.ts
import { MonitoringExtension } from "../types";
export const myPlugin: MonitoringExtension = {
id: "my-plugin",
name: "My Service Monitor",
description: "Monitor my custom service",
configSchema: [
{
key: "apiUrl",
label: "API URL",
type: "url",
required: true
}
],
async fetchStatus(config) {
const response = await fetch(config.apiUrl);
const data = await response.json();
return [{
id: "service",
name: "My Service",
type: "api",
status: data.healthy ? "running" : "error",
details: { uptime: data.uptime }
}];
}
};- Framework: Next.js 15 with App Router
- Database: PostgreSQL with Prisma ORM
- Authentication: Iron Session
- Styling: Tailwind CSS
- UI Components: shadcn/ui
- Charts: Recharts
Overseer/
├── app/
│ ├── extensions/ # Monitoring plugins
│ ├── components/ # React components
│ ├── actions.ts # Server actions
│ └── page.tsx # Dashboard
├── lib/
│ ├── credentials.ts # Credential encryption utilities
│ ├── db.ts # Database helpers
│ └── session.ts # Authentication
├── prisma/
│ └── schema.prisma # Database schema
└── docs/ # Documentation
cumentation
Contributions are welcomed. Please feel free to submit pull requests or open issues.
Overseer is released under the BSD 3-Clause License. See the LICENSE file for more information.
- Check the documentation
- Open an issue
- Start a discussion