Modern web interface to make configuring, deploying and monitoring VyOS routers easier
Currently being developed for:
- VyOS 1.4-sagitta (full)
- VyOS 1.5-circinus (partial)
Skip to Configuration and Installation
Feel free to add a star ⭐ to our project if you like to use it!
💭 Feel free to join our official Discord community
Live Demo (limited uptime during some periods)
- Dashboard Overview: View system info, interfaces, and services at a glance
- Configuration Management: Browse and edit VyOS configurations through a user-friendly interface
- Interface Management: See details of all network interfaces and edit their properties
- Firewall Management: Configure firewall rules, policies, and address groups
- Routing: Manage static routes, dynamic routing protocols, and view routing tables
- NAT: Configure source and destination NAT rules
- VPN: Manage VPN configurations and monitor connections
- Services: Configure DHCP, DNS, NTP, and SSH services
- Containers: Manage and monitor containers (Podman)
- Modern UI: Built with Next.js, React, TypeScript, and Tailwind CSS for a responsive experience
- Dark Mode: Optimized dark interface for reduced eye strain
This project consists of two main components:
- Backend API: Python-based FastAPI application that interfaces with VyOS CLI to manage configurations
- Frontend: Next.js application built with React, TypeScript, and Shadcn UI components
- Node.js 18+ for the frontend (only for manual install)
- Python 3.11+ for the backend (only for manual install)
- VyOS router with API access enabled (see configuration for securely enabling API access)
- Docker and Docker Compose (optional, for containerized deployment)
Before you start, ensure you're connected to the VyOS router via the terminal/shell. You need to do follow both VyOS router setup and Environment values.
Setup the HTTPS REST API in your VyOS router(s), using the following CLI commands:
-
Start configuration mode:
conf
-
Create a HTTPS key:
💡Security Notice: replace KEY with a really secure key, it's like a password! You will need to enter this password in your root .env file in the next steps!
set service https api keys id fastapi key KEY
-
(only required on VyOS 1.5 and above) Enable the REST functionality:
set service https api rest
-
(optional) Enable GraphQL functionality:
set service https api graphql
-
Save your changes in CLI (run these two commands chronologically):
commit
, thensave
Next you will need to configure your environment configuration files, make sure you configure both .env files in /frontend and root! For each one, you can find an example .env configuration file in the belonging directories.
- Configuration in root path:
Create a
.env
file in the root directory with the following configuration:
VYOS_HOST=your-vyos-router-ip
VYOS_API_KEY=your-api-key
VYOS_HTTPS=true
TRUST_SELF_SIGNED=true # For self-signed certificates
ENVIRONMENT=production # or development
- Configuration in /frontend directory:
Create a
.env
file in the /frontend directory with the following configuration:
NEXT_PUBLIC_API_URL=http://localhost:3001
The easiest way to run the application is using Docker Compose:
# Create a .env file with your VyOS router configuration
# See .env.example for required variables
# Build and start the container
docker-compose up -d
# View logs
docker-compose logs -f
For more detailed Docker instructions, see README-docker.md.
# Install Python dependencies
pip install -r requirements.txt
# Configure your VyOS connection in .env file
# See .env.example for required variables
# Run the backend server
uvicorn main:app --host 0.0.0.0 --port 3001
# Navigate to the frontend directory
cd frontend
# Install dependencies
npm install
# Start the development server
npm run dev
# Build for production
npm run build
npm start
-
Frontend: http://localhost:3000
-
Backend API: http://localhost:3001
-
Frontend (Development mode - live refresh): http://localhost:8005
This project is licensed under GPL-3.0 - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.