A modern, full-stack web application for managing Debian-based (.deb) systems. This tool provides a graphical interface to search, install, remove, and update packages, as well as perform system maintenance tasks.
- Search & Discover: Real-time search of available packages in the repositories.
- Package Management: Install and remove packages with a simple web interface.
- Updates: Check for upgradable packages and apply updates (individually or all).
- Maintenance: Fix broken installs and check for distribution release updates.
- Theming: Modern UI with Light, Dark, and Dark Slate Grey (default) themes.
- Docker Support: Easy deployment using containerization.
Caution
Privileged Access: This application requires root or sudo privileges to modify system packages. Exposing this application to a public network without authentication is extremely dangerous as it allows full system control.
Input Validation: While the app uses basic sanitization, running system commands via a web API is a potential security risk. Use this tool only in trusted, isolated environments.
Docker isolates the application and provides all necessary dependencies.
- Build and Start:
docker-compose up --build
- Access: Open http://localhost:8300.
- Host Management Mode: The
docker-compose.ymlis pre-configured to mount the host's package databases. This allows the container to manage the actual packages on your physical machine. If you only want to manage the container's internal packages, remove thevolumessection fromdocker-compose.yml.
Use PM2 to run the application as a background service on your Linux host.
- Prerequisites:
# Install PM2 globally sudo npm install -g pm2 - Setup Backend:
cd backend npm install - Run as Root (Easiest for Permissions):
sudo pm2 start server.js --name "package-manager" - Run as Normal User (More Secure):
If running as a normal user, you must grant the user passwordless
sudoforaptcommands:- Run
sudo visudo. - Add this line at the end (replace
your-userwith your username):your-user ALL=(ALL) NOPASSWD: /usr/bin/apt-get, /usr/bin/apt-cache, /usr/bin/dpkg, /usr/bin/dpkg-query, /usr/bin/apt - Then start normally:
pm2 start server.js --name "package-manager"
- Run
backend/: Node.js Express server on port 8300.frontend/: React + Tailwind CSS frontend.Dockerfile: Multi-stage build for the application.docker-compose.yml: Container orchestration.
The core application logic is compatible with all Debian-based distributions (Ubuntu, Debian, Linux Mint, etc.). However, when running in Docker Host Management Mode, the container's OS should ideally match the host's OS version to ensure system library and database compatibility.
The current setup uses Chroot Mode, which maps your host's root (/) to /host inside the container. This makes it highly portable:
- Change the Base Image: In the Dockerfile, update the
FROM debian:testing-slimline to match your host (e.g.,FROM ubuntu:24.04orFROM debian:bookworm-slim). - Verify Mounts: The
docker-compose.ymlmounts- /:/hostand- /run:/run. This is universal for most modern Debian/Ubuntu systems. If your host uses a non-standard location for its package database, you may need to adjust thechrootlogic inserver.js. - Permissions: Ensure the Docker container runs with
privileged: trueanduser: "0:0"to allow it to execute the host's binaries.
MIT
If you are tired of entering your GitHub token every time you git pull, run this command to store your credentials locally:
git config --global credential.helper storeThe next time you pull, enter your username and token once. Git will remember them for all future operations.