Skip to content

honeypie112/Obsidian-Panel

Repository files navigation

🌑 Obsidian Panel

Obsidian Panel is a modern, high-performance Minecraft Server Management Panel built with Node.js and React. Designed to manage a single server with maximum efficiency and elegance, it provides a powerful web interface to control your Minecraft server, manage files, schedule backups, and monitor performance in real-time.

Obsidian Panel Interface

🚀 Installation

Prerequisites

  • Docker (must be installed and running)
  • MongoDB (running locally or remote connection URL)
  • RAM: Minimum 2GB (4GB+ recommended)
  • OS: Linux (Ubuntu/Debian/Alpine recommended)
  • Disk: 5GB+ for server files and backups

Method 1: Automated Install Script (Recommended) ⚡

The easiest way to install Obsidian Panel with a single command:

bash <(curl -s https://raw.githubusercontent.com/honeypie112/Obsidian-Panel/master/install.sh)

What it does:

  • ✅ Checks Docker installation and starts the service
  • ✅ Clones/updates the repository automatically
  • ✅ Prompts for MongoDB URI (required)
  • ✅ Builds Docker image with Java 8, 17, and 21 pre-installed
  • ✅ Creates and starts the container with proper port mappings
  • ✅ Uses persistent Docker volume obsidian-data for server data
  • ✅ Optional cleanup of source files after installation

Access the panel:


Method 2: Docker Compose

For manual control or custom configurations:

1. Clone the repository

git clone https://github.com/honeypie112/Obsidian-Panel.git
cd Obsidian-Panel

2. Create .env file

Create a .env file in the project root with your configuration:

nano .env

Required variables:

# Database (Required)
MONGO_URI=mongodb://mongo:27017
MONGO_DB_NAME=obsidian_panel

# Server Configuration
PORT=5000
MC_SERVER_BASE_PATH=/minecraft_server
TEMP_BACKUP_PATH=/tmp/obsidian_backups
SESSION_SECRET=change_this_to_a_secure_random_string

# Optional: Custom Java paths (if needed)
# JAVA_8_HOME=/usr/lib/jvm/java-1.8-openjdk
# JAVA_17_HOME=/usr/lib/jvm/java-17-openjdk
# JAVA_21_HOME=/usr/lib/jvm/java-21-openjdk

Note: If you're using an external MongoDB, replace MONGO_URI with your connection string (e.g., mongodb://username:password@host:27017)

3. Start with Docker Compose

docker-compose up -d

4. Access the panel

To stop:

docker-compose down

To view logs:

docker-compose logs -f obsidian-panel

🔄 Updating the Panel

To update to the latest version, simply run the installation script again:

bash <(curl -s https://raw.githubusercontent.com/honeypie112/Obsidian-Panel/master/install.sh)

The script will:

  1. Detect your existing installation
  2. Download the latest alexbhai/obsidian-panel image
  3. Recreate the container while keeping your server data safe (volumes are preserved)

For Docker Compose users:

docker-compose pull
docker-compose up -d

🛠️ Development Setup

Backend (Node.js)

cd backend
npm install
npm run dev

Frontend (React)

cd frontend
npm install
npm run dev

Frontend dev server runs on http://localhost:5173 Backend dev server runs on http://localhost:5000

✨ Features

🎮 Server Management

  • Live Console: Real-time log streaming via Socket.IO with 5000-line history buffer
    Server Console
  • Multi-Version Support: Native support for Paper, Purpur, and Vanilla Minecraft servers
    Multi-Version Support
  • Smart Java Detection: Automatic discovery of Java 8, 17, and 21 installations with version verification
  • Power Controls: Start, Stop, Restart, and Force Kill with proper error handling

⚙️ Configuration

  • Server Settings: Manage server properties, RAM allocation, and Java version through intuitive UI
    Server Settings
  • Environment Configuration: Support for custom Java paths via JAVA_X_HOME environment variables
  • Hot Reload: Configuration changes apply immediately without container restarts

📁 File Manager

  • Full-featured File Browser: Upload, download, edit, delete with drag-and-drop support
  • Built-in Code Editor: Monaco editor for direct file editing
  • Archive Handling: Extract ZIP/TAR archives and create compressed backups
    File Manager
    Drag and Drop
  • Chunked Uploads: Large file support with resumable uploads

💾 Backup System

  • Unlimited Cloud Storage: Seamless integration with GoFile for infinite backups
  • Automated Scheduling: Cron-based backup scheduler (minutely, hourly, daily, custom expressions)
  • One-Click Restore: Restore from any backup with safety safeguards
  • Encrypted Archives: Password-protected backup files
    Backup System

🔌 Plugin Management

  • Unified Plugin Store: Search and install from Modrinth, Hangar (Paper), and Spiget (Spigot)
  • One-Click Installation: Automatic plugin download and installation
    Plugin Store
    Plugin Store Installation

👥 User Management

  • Role-Based Access Control (RBAC): Create sub-admin accounts with granular permissions
  • Permissions:
    • Files: View, Edit, Upload/Create, Delete
    • Backups: Create, Restore, Delete, Settings
    • Power: Start/Stop/Restart
    • Console: Command Execution
      User Management

🎨 User Experience

  • Responsive Design: Fully optimized for desktop and mobile with collapsible sidebar
  • Toast Notifications: Real-time error and success messages
  • Obsidian Dark Theme: Glassmorphism effects with smooth animations
  • Real-time Updates: WebSocket-powered live status and statistics
    Profile Settings

🔒 Security

  • Enterprise-Grade Security:
    • Rate Limiting: Global DDoS protection with per-IP limits
    • Authentication: Bcrypt password hashing with secure sessions
    • CORS Protection: Configurable cross-origin policies
    • Path Validation: Directory traversal prevention
    • Session Management: MongoDB-backed sessions with secure cookies

🛠️ Tech Stack

Backend (Node.js)

  • Runtime: Node.js 20+
  • Framework: Express.js
  • Database: MongoDB (Mongoose ODM)
  • Real-time: Socket.IO
  • Sessions: express-session with connect-mongo
  • Security: Helmet, Rate Limit, Bcrypt, CORS
  • System: Child Process for Java management

Frontend (React)

  • Build Tool: Vite
  • Framework: React 18+
  • Styling: Tailwind CSS
  • Icons: Lucide React
  • Editor: Monaco Editor (VS Code editor)
  • Routing: React Router 6
  • Toast: React Hot Toast
  • Real-time: Socket.IO Client

Infrastructure

  • Containerization: Docker multi-stage builds (Node.js Alpine)
  • Java: OpenJDK 8, 17, and 21 support
  • Database: MongoDB
  • Reverse Proxy Compatible: Nginx, Caddy, Traefik

⚙️ Configuration

Environment Variables

Variable Default Description
PORT 5000 Backend server port
MONGO_URI mongodb://localhost:27017 MongoDB connection string
MONGO_DB_NAME obsidian_panel Database name
SESSION_SECRET secret Secret key for session signing
MC_SERVER_BASE_PATH /minecraft_server Minecraft server files location
TEMP_BACKUP_PATH /tmp/obsidian_backups Temporary backup storage
JAVA_8_HOME Auto-detected Override Java 8 location
JAVA_17_HOME Auto-detected Override Java 17 location
JAVA_21_HOME Auto-detected Override Java 21 location

Java Detection

The backend automatically detects Java installations in /usr/lib/jvm/. You can override with environment variables:

JAVA_17_HOME=/opt/java/jdk-17 npm start

Detection order:

  1. JAVA_X_HOME environment variable
  2. Directory scan in /usr/lib/jvm/
  3. Fallback to hardcoded paths

All candidates are verified with java -version to ensure correct version.

📖 Usage Guide

Initial Setup

  1. Register Admin Account: First user becomes administrator
  2. Install Server: Go to Server Settings → Select Version → Install
  3. Configure RAM: Set memory allocation in Server Settings
  4. Select Java Version: Choose Java 8/17/21 based on Minecraft version
  5. Start Server: Click Start button on Overview page

Backup Configuration

  1. Get GoFile Token: Register at gofile.io and get API token
  2. Configure: Backups → Settings → Enter token
  3. Schedule: Set cron expression (e.g., 0 */6 * * * for every 6 hours)
  4. Manual Backup: Click "Create Backup" button

User Management

  1. Create User: Users → Add User
  2. Set Role: Choose Admin or custom role
  3. Grant Permissions: Select specific permissions
  4. Save: User can login with credentials

🔍 Troubleshooting

Server Won't Start

  • Check Java: Ensure correct Java version installed
  • Verify Logs: Check console for error messages
  • Toast Notifications: Error details shown in UI
  • Backend Logs: docker logs obsidian-panel

Memory Issues

  • Insufficient RAM: Increase Docker memory limit
  • Large Logs: Log buffer limited to 5000 lines
  • Backup Space: Monitor /tmp/obsidian_backups usage

Connection Issues

  • Port Conflicts: Ensure port 5000 is available
  • MongoDB: Verify database connection
  • CORS: Check frontend URL in environment

🐳 Docker Deployment

Run manually:

docker run -d \
  -p 5000:5000 \
  -p 25565:25565 \
  -e MONGO_URI=mongodb://host:27017 \
  -e SESSION_SECRET=mysecuresecret \
  -v minecraft_data:/minecraft_server \
  --name obsidian-panel \
  alexbhai/obsidian-panel:latest

Docker Compose (not recommended but optional if you know what you're doing):

version: '3.8'
services:
  obsidian-panel:
    image: alexbhai/obsidian-panel:latest
    container_name: obsidian-panel
    ports:
      - "5000:5000"
      - "25565:25565"
    environment:
      - MONGO_URI=mongodb://mongo:27017
      - MONGO_DB_NAME=obsidian_panel
      - SESSION_SECRET=mysecuresecret
    volumes:
      - minecraft_data:/minecraft_server
    depends_on:
      - mongo
  
  mongo:
    image: mongo:7
    volumes:
      - mongo_data:/data/db

volumes:
  minecraft_data:
  mongo_data:

📝 API Documentation

The backend provides RESTful API endpoints:

  • Authentication: /api/auth (login, register, logout)
  • Server Control: /api/control (start, stop, restart, kill)
  • File Management: /files/* (list, read, write, upload)
  • Backups: /api/backups (create, restore, delete, configure)
  • Plugins: /api/plugins (search, install)
  • Users: /api/users (CRUD operations)

WebSocket events:

  • status - Server status updates
  • console_log - Live log streaming
  • log_history - Historical logs on connect
  • stats - System statistics (CPU, RAM, disk, network)

🤝 Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

📄 License

MIT License - feel free to use for personal or commercial projects.

🙏 Acknowledgments

  • Built with ❤️ using Node.js and React
  • Inspired by modern server management panels
  • Community feedback and contributions

Need help? Open an issue or join our Discord community.

About

The Most Light weight easy to use self hosted minecraft management panel

Topics

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •