A lightweight, fast web interface for managing Syncthing servers with support for large numbers of devices and folders.
- Lightweight & Fast: Optimized for servers with 200+ devices and folders
- Complete CRUD Operations: Add, edit, delete devices and folders
- Real-time Search: Search across all fields (names, IDs, paths, status)
- Table-based Layout: Clean, efficient interface with pagination
- Responsive Design: Works on desktop and mobile devices
- RESTful API: Clean API endpoints for all operations
- Node.js 14+
- Syncthing server with REST API enabled
- Syncthing API key
-
Clone or download this repository
-
Copy the Docker environment template:
cp .env.docker .env
-
Start both Syncthing and the Web UI:
docker-compose up -d
-
Get the Syncthing API key:
- Open Syncthing web interface at
http://localhost:8384 - Go to Settings → General
- Copy the API Key
- Update the
.envfile with your API key:SYNCTHING_API_KEY=your-actual-api-key-here
- Open Syncthing web interface at
-
Restart the web UI container:
docker-compose restart syncthing-webui
The web interface will be available at http://localhost:4567.
Default Login: When authentication is enabled, use the default password admin123 to login, or change it in your .env file.
-
Clone or download this repository
-
Install dependencies:
npm install
-
Copy the environment template:
cp .env.example .env
-
Configure your Syncthing server settings in
.env:SYNCTHING_HOST=localhost SYNCTHING_PORT=8384 SYNCTHING_API_KEY=your-api-key-here SYNCTHING_HTTPS=false APP_PORT=4567 APP_HOST=0.0.0.0
- Open your Syncthing web interface (usually http://localhost:8384)
- Go to Settings → General
- Copy the API Key from the settings
- Paste it into your
.envfile
npm run devnpm startThe web interface will be available at http://localhost:4567 (or your configured port).
To build the Docker image locally:
# Build the image
docker build -t syncthing-webui .
# Run the container
docker run -d \
--name syncthing-webui \
-p 4567:4567 \
-e SYNCTHING_HOST=your-syncthing-host \
-e SYNCTHING_API_KEY=your-api-key \
-e AUTH_PASSWORD=your-password \
syncthing-webuidocker-compose up -ddocker-compose down# View all logs
docker-compose logs
# View specific service logs
docker-compose logs syncthing
docker-compose logs syncthing-webui
# Follow logs in real-time
docker-compose logs -fdocker-compose pull
docker-compose up -d- Syncthing configuration:
./syncthing-config - Syncthing data:
./syncthing-data
Make sure to backup these directories to preserve your Syncthing configuration and synchronized files.
GET /api/devices- List all devicesPOST /api/devices- Add new devicePUT /api/devices/:deviceID- Update deviceDELETE /api/devices/:deviceID- Delete device
GET /api/folders- List all foldersPOST /api/folders- Add new folderPUT /api/folders/:folderID- Update folderDELETE /api/folders/:folderID- Delete folderPOST /api/folders/:folderID/pause- Pause folderPOST /api/folders/:folderID/resume- Resume folder
GET /api/system/status- Get system statusGET /api/system/config- Get system configurationGET /api/system/connections- Get connection status
- View all devices with connection status
- Add devices with custom configuration
- Edit device settings (name, addresses, compression, etc.)
- Delete devices (automatically removes from shared folders)
- Real-time connection status
- View all folders with sync status
- Add folders with device sharing
- Edit folder settings
- Pause/resume folder synchronization
- Delete folders
- Global search across all fields
- Real-time filtering as you type
- Search by:
- Device names and IDs
- Folder names, IDs, and paths
- Connection status
- Folder types and status
- Pagination (20 items per page)
- Efficient table rendering
- Minimal CSS/JS footprint
- Optimized API calls
- Client-side caching
- Chrome/Chromium 60+
- Firefox 60+
- Safari 12+
- Edge 79+
The web interface includes password-only authentication for security.
Authentication can be configured in your .env file:
# Authentication settings
AUTH_ENABLED=true # Enable/disable authentication
AUTH_PASSWORD=your-secure-password # Set your password
SESSION_SECRET=your-session-secret # Session encryption key- Password:
admin123(change this in production!)
- Password-only login - No username required
- Persistent sessions - Stay logged in until you logout
- Automatic logout - Click the logout button to end your session
- Session security - Sessions are encrypted and secured
To disable authentication completely, set AUTH_ENABLED=false in your .env file.
- Always use HTTPS in production
- Keep your Syncthing API key secure
- Change the default authentication password
- Use a strong session secret in production
- Consider firewall rules for the web interface
- The application runs on the server, not in Syncthing's web interface
- Verify Syncthing is running and API is enabled
- Check the API key is correct
- Ensure no firewall blocking the connection
- Verify the host and port settings
- Check if you have too many folders/devices loading
- Verify your Syncthing server has adequate resources
- Consider increasing pagination size if needed
syncthing-webui/
├── server/ # Backend API server
│ ├── services/ # Syncthing API service
│ └── routes/ # API route handlers
├── public/ # Frontend files
│ ├── css/ # Styles
│ └── js/ # JavaScript modules
└── package.json # Dependencies and scripts
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
MIT License - see LICENSE file for details.
- Built for the Syncthing community
- Designed for high-performance server management
- Inspired by the need for lightweight alternatives to the default web UI