-
🌐 WebUI
- Authentification
- Add backends and tunnels easily
- Regenerate API Keys
-
⌛ Easy to setup
- No need to open port on client
- One-click setup
- Compatible with docker
The system consists of two main components:
- Server: Handles WebUI and tunnel output
- Client: Connects to server and forwards local traffic
- Bun 1.1.34+
- 1 server with a public ipv4
- 1 client
- Clone the repo:
git clone https://github.com/Paylicier/Bifrost
- Install dependencies:
bun install
- Configure environment variables in
.env
:
PORT=9040
BACKEND_PORT=9041
PASSWORD=your_secure_password
SECRET_KEY=your_jwt_secret_key
- Start the server:
cd server
bun main.ts
- Create a backend.json file
echo "[]" > backends.json
- Start the container
docker run -d --name bifrost-server \
--network host \
-e PORT=9040 \
-e BACKEND_PORT=9041 \
-e PASSWORD=your_secure_password \
-e SECRET_KEY=your_jwt_secret_key \
-v $(pwd)/backends.json:/app/backends.json \
paylicier/bifrost-server
- Clone the repo:
git clone https://github.com/Paylicier/Bifrost
- Configure environment variables in
.env
:
API_KEY=your_api_key
SERVER_HOST=your_server_host
SERVER_PORT=9041
- Start the backend client:
cd client
bun main.ts
- Start the container
docker run -d --name bifrost-client \
-e API_KEY=your_api_key \
-e SERVER_HOST=your_server_host \
-e SERVER_PORT=9041 \
paylicier/bifrost-client
POST /login
- Login with admin password
- Returns JWT token
GET /backends
- List all registered backends
POST /backends
- Register new backend
DELETE /backends/:id
- Remove backend
POST /backends/:id/regenerate-key
- Regenerate backend API key
GET /backends/:id/tunnels
- List tunnels for backend
POST /backends/:id/tunnels
- Create new tunnel
DELETE /backends/:id/tunnels/:tunnelId
- Remove tunnel
PUT /backends/:id/tunnels/:tunnelId/toggle
- Toggle tunnel status
GET /check-port/:port
- Check port availability
GET /random-port
- Get available random port
- Fork the repository
- Create feature branch (
git checkout -b feature/AmazingFeature
) - Commit changes (
git commit -m 'Add AmazingFeature'
) - Push to branch (
git push origin feature/AmazingFeature
) - Open Pull Request
Built with 🥟 and ❤️ for 🌊