Skip to content

Repository files navigation

FlashForge WebUI

Standalone WebUI for FlashForge 3D Printers

Overview

FlashForge WebUI is a lightweight, standalone web interface for monitoring and controlling FlashForge 3D printers. Designed as a cross-platform alternative to desktop applications, it runs efficiently on low-spec hardware like the Raspberry Pi, making it perfect for dedicated print servers. It supports simultaneous connections to multiple printers, real-time camera streaming, and integrates seamlessly with Spoolman for filament management.

Core Features

FeatureDescription
Multi-Printer SupportConnect to and manage multiple printers simultaneously with isolated contexts
Live MonitoringReal-time tracking of temperatures, print progress, and printer status
Camera StreamingLow-latency video monitoring with RTSP and MJPEG support
Printer ControlFull control over print jobs (pause, resume, stop) and printer settings
Spoolman IntegrationNative integration for filament inventory and usage tracking
Responsive DashboardCustomizable grid-based UI that works on desktop, tablet, and mobile
Cross-PlatformNative binaries for Windows, macOS, and Linux (x64, ARM64, ARMv7)

Supported Printers

FlashForge WebUI supports a wide range of FlashForge printers through its adaptable backend architecture.

SeriesModelsAPI Type
Adventurer 5MAdventurer 5M, 5M ProNew (HTTP API)
AD5XAD5XNew (HTTP API)
Creator 5Creator 5, Creator 5 ProNew (HTTP API)
LegacyOlder FlashForge ModelsLegacy (FlashForgeClient)

Installation

Prerequisites

RequirementDetails
Node.jsVersion 20.0.0 or higher (for source installation)
NetworkConnection to your printer(s)

Pre-built Binaries

Download the appropriate binary for your platform from the Releases page:

PlatformBinaryNotes
Windows x64flashforge-webui-win-x64.exeMost Windows PCs
macOS x64flashforge-webui-macos-x64Intel Macs
macOS ARMflashforge-webui-macos-arm64Apple Silicon (M1/M2/M3)
Linux x64flashforge-webui-linux-x64Most Linux PCs
Linux ARM64flashforge-webui-linux-arm64Raspberry Pi 4/5 (64-bit OS)
Linux ARMv7flashforge-webui-linux-armv7Raspberry Pi 3/4 (32-bit OS)

Raspberry Pi Users: Use flashforge-webui-linux-arm64 for 64-bit Raspberry Pi OS, or flashforge-webui-linux-armv7 for 32-bit.

# Make the binary executable (Linux/macOS)
chmod +x flashforge-webui-linux-arm64
# Run with auto-connect to last used printer
./flashforge-webui-linux-arm64 --last-used
# Run without auto-connect
./flashforge-webui-linux-arm64 --no-printers

Running from Source

# Clone the repository
git clone https://github.com/Parallel-7/FlashForgeWebUI.git
cd FlashForgeWebUI
# Install dependencies
npm install
# Build the application (required before first run)
npm run build
# Start the server
npm start
# Or start with auto-connect to last used printer
npm start -- --last-used

Development Mode:

# Build and watch for changes with hot reload
npm run dev

Usage

After starting the server, open your browser and navigate to:

http://localhost:3000

Or if accessing from another device on your network:

http://<server-ip>:3000

Default Login: The default password is changeme. You should change this in the active config file (by default data/config.json, or the directory pointed to by DATA_DIR) or via the --webui-password flag.

Remote Access / Port Forwarding: Everything the WebUI needs - including live camera streams - is served over the single WebUI port (default 3000). If you expose the WebUI outside your LAN, forward only that port. Camera video is tunneled through the authenticated WebUI server, so do not forward the internal go2rtc streaming port (1984); it has no authentication of its own and should never be reachable from outside your machine's network.

Command Line Options

OptionDescription
--last-usedConnect to the last used printer on startup
--all-saved-printersConnect to all saved printers on startup
--printers="IP:TYPE:CODE,..."Connect to specific printers (TYPE: "new" or "legacy")
--no-printersStart WebUI only, without connecting to any printer
--webui-port=PORTOverride the WebUI port (default: 3000)
--webui-password=PASSOverride the WebUI password

Configuration

The application automatically creates a configuration file in the active data directory on first run. By default this is data/config.json.

By default, runtime data is stored in ./data under the working directory. Set DATA_DIR to move configuration, logs, and saved printer state elsewhere.

# Linux/macOS
DATA_DIR=/path/to/flashforge-data npm start
# PowerShell$env:DATA_DIR = 'C:\FlashForgeWebUI\data'
npm start
SettingDefaultDescription
WebUIEnabledtrueEnable/disable the web interface
WebUIPort3000Port for the web server
WebUIPasswordchangemeLogin password (change this!)
WebUIPasswordRequiredtrueRequire password to access
SpoolmanEnabledfalseEnable Spoolman integration
SpoolmanServerUrl""Your Spoolman server URL (e.g., http://192.168.1.100:7912)

Testing

# Jest unit/integration tests
npm test
npm run test:watch # watch mode
npm run test:coverage # coverage report# TypeScript checks
npm run type-check
# Lint/format
npm run check

Tests live alongside the source under src/ (*.test.ts) and run through Jest.

Building from Source

# Build for specific platform
npm run build:linux # Linux x64
npm run build:linux-arm # Linux ARM64 (Raspberry Pi 4/5)
npm run build:linux-armv7 # Linux ARMv7 (Raspberry Pi 3)
npm run build:win # Windows x64
npm run build:mac # macOS x64
npm run build:mac-arm # macOS ARM (Apple Silicon)

Troubleshooting

IssueSolution
"Cannot GET /" or blank page when accessing WebUIIf running from source: Make sure you ran npm run build before npm start
If using a pre-1.0.2 binary: Update to version 1.0.2 or later (fixes static file serving bug)
"Permission denied" when running binaryRun chmod +x flashforge-webui-linux-* to make executable
Port already in useChange the port in the active config file (default data/config.json, or the directory pointed to by DATA_DIR) or use --webui-port=3001
Cannot connect to printerEnsure your printer is on the same network as the device running WebUI
Check that the printer's IP address is correct
For legacy printers, ensure TCP port 8899 is accessible
Selecting the correct binary for your platformWindows: flashforge-webui-win-x64.exe
macOS Intel: flashforge-webui-macos-x64
macOS Apple Silicon: flashforge-webui-macos-arm64
Linux x64: flashforge-webui-linux-x64
Raspberry Pi (64-bit OS): flashforge-webui-linux-arm64
Raspberry Pi (32-bit OS): flashforge-webui-linux-armv7
Check your architecture with uname -m (x86_64 = x64, aarch64 = ARM64, armv7l = ARMv7)

License

MIT License

Acknowledgments

ProjectRole
ff-5mp-api-tsFlashForge API Client Library
slicer-metaPrinter Metadata & Model Utilities
FlashForgeUI-ElectronOriginal Desktop Application
SpoolmanFilament Management

About

The WebUI from FlashForgeUI, designed for devices with limited resources

Topics

Resources

Stars

18 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages