AtlasNode is a powerful, open-source homelab management platform that allows you to centrally monitor, control, and manage multiple servers from a single web dashboard.
Real-time monitoring of all your machines with live metrics and status
Detailed system information and web-based SSH terminal access
Track screen sessions, open ports, and system specifications
- Zero-Touch Agent Installation: Add machines via SSH credentials - agent installs automatically
- Real-Time Monitoring: Live system metrics (CPU, memory, disk, network)
- Remote Control: Execute commands, reboot, shutdown from the dashboard
- Web-Based SSH Terminal: Access your machines directly from the browser
- Role-Based Access Control: Admin and viewer roles
- WebSocket Live Updates: Real-time status changes and metrics
- Audit Logging: Track all actions and changes
- Docker-First Architecture: Easy deployment with Docker Compose
- Secure by Default: Encrypted credentials, JWT authentication, token-based agent auth
- Docker and Docker Compose installed
- Linux, macOS, or Windows with WSL2
- Clone the repository:
git clone https://github.com/Aletech-Solutions/Open-Atlas-Node.git
cd atlasnode- Run the setup script:
chmod +x scripts/setup.sh
./scripts/setup.shThe setup script will:
- Generate secure JWT secret and database password
- Prompt for your server's IP address (required for agents)
- Create
.envfile with proper configuration - Build and start Docker containers
-
Access the dashboard at
http://localhost:3000 -
Register your first user (automatically becomes admin)
-
Add your first machine via the "Add Machine" button
BACKEND_HOST is set in .env to your server's IP address. See CONFIGURATION.md for details.
AtlasNode consists of three main components:
- Backend: Express.js REST API with WebSocket support
- Frontend: React.js dashboard with real-time updates
- Database: PostgreSQL for persistent storage
- Lightweight Node.js service installed on each managed machine
- Collects system metrics using
systeminformation - Exposes REST endpoints for remote control
- Sends heartbeat to control server
- SSH-based zero-touch installation
- Detects OS and architecture
- Installs dependencies and configures agent
- Sets up systemd service for auto-start
Backend:
- Express.js
- PostgreSQL
- WebSocket (ws)
- SSH2 (for agent installation)
- JWT authentication
- bcrypt password hashing
Frontend:
- React 18
- Vite
- TailwindCSS
- Recharts (metrics visualization)
- XTerm.js (web terminal)
- Axios
Agent:
- Node.js
- Express
- systeminformation
Infrastructure:
- Docker & Docker Compose
- Nginx (production)
Configuration is done via environment variables in the .env file:
# Database
DB_NAME=atlasnode
DB_USER=atlasnode
DB_PASSWORD=secure_password_here
# Backend
JWT_SECRET=your_long_random_secret
JWT_EXPIRES_IN=7d
# Ports
BACKEND_PORT=5000
FRONTEND_PORT=3000
# IMPORTANT: Agent Installation Configuration
# Set the IP/hostname where your control server is accessible
# This is required for agents to connect back to the control server
BACKEND_HOST=192.168.1.100 # Your server's IP address
# OR
BACKEND_URL=http://192.168.1.100:5000 # Full URL with protocol and portBefore adding machines, you must configure how agents will reach the control server:
-
Find your server's IP address:
# Linux/Mac ip addr show | grep inet # Or hostname -I
-
Set in
.envfile:# Option 1: Set host only (simpler) BACKEND_HOST=192.168.1.100 # Option 2: Set full URL (more control) BACKEND_URL=http://192.168.1.100:5000
-
Restart services:
docker-compose down docker-compose up -d
Note: If you don't set BACKEND_HOST or BACKEND_URL, agents will try to connect to localhost and fail!
POST /api/auth/register- Register new userPOST /api/auth/login- LoginGET /api/auth/me- Get current user
GET /api/machines- List all machinesGET /api/machines/:id- Get machine detailsPOST /api/machines- Add new machine (admin only)DELETE /api/machines/:id- Remove machine (admin only)POST /api/machines/:id/action- Execute action on machineGET /api/machines/:id/metrics- Get historical metrics
POST /api/terminal/create/:machineId- Create SSH sessionPOST /api/terminal/write/:sessionId- Send data to terminalGET /api/terminal/read/:sessionId- Read terminal output (SSE)DELETE /api/terminal/:sessionId- Close terminal session
- Change Default Credentials: Update all passwords in
.env - Use Strong JWT Secret: Generate with
openssl rand -hex 32 - HTTPS in Production: Use reverse proxy (Nginx, Caddy)
- Firewall Rules: Restrict agent ports (7777) to control server only
- SSH Key Authentication: Prefer SSH keys over passwords
- Regular Updates: Keep dependencies and OS updated
- Audit Logs: Monitor audit logs regularly
./scripts/backup.shgunzip < backups/atlasnode_backup_TIMESTAMP.sql.gz | \
docker-compose exec -T database psql -U atlasnode atlasnode- CONFIGURATION.md - Complete configuration guide (agent communication, environment variables)
- API.md - API documentation
- CONTRIBUTING.md - Contribution guidelines
- agent/README-INSTALLATION.md - Manual agent installation guide
./scripts/update.shBackend:
cd backend
npm install
npm run devFrontend:
cd frontend
npm install
npm run devAgent:
cd agent
npm install
cp config.example.json config.json
# Edit config.json with your settings
npm startFor manual agent installation with automatic restart on system reboot:
Linux:
cd agent
cp config.example.json config.json
# Edit config.json with your settings
chmod +x install.sh
sudo ./install.shWindows:
cd agent
copy config.example.json config.json
REM Edit config.json with your settings
install.batSee agent/README-INSTALLATION.md for detailed installation instructions.
The agent will:
- ✓ Start automatically on system boot
- ✓ Restart automatically if it crashes
- ✓ Wait for network availability before starting
- ✓ Log to system journal (Linux) or Event Viewer (Windows)
- Check SSH credentials
- Verify network connectivity
- Ensure target machine has sudo access
- Check backend logs:
docker-compose logs backend
- Verify agent is running:
systemctl status atlasnode-agent - Check firewall rules
- Verify agent token in
/opt/atlasnode-agent/config.json - Check agent logs:
journalctl -u atlasnode-agent -f - Ensure agent is enabled to start on boot:
systemctl is-enabled atlasnode-agent
- Check browser console for errors
- Verify CORS settings in backend
- Check WebSocket URL configuration
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- GitHub Issues: Report bugs or request features
- Documentation: Full documentation
- Docker container monitoring
- Proxmox integration
- Alert system (email, webhook)
- Mobile app
- Plugin system
- Multi-user workspaces
- Ansible playbook execution
- Network topology visualization
Made with ❤️