A Docker container for running VirtualHere USB Server with pre-downloaded binaries, supporting multiple architectures with dedicated Dockerfiles.
- π Pre-downloaded binaries - Architecture-specific binaries downloaded during build
- ποΈ Multi-architecture support - Separate Dockerfiles for AMD64, ARM64, ARM
- π Automated builds - GitHub Actions CI/CD pipeline
- π¦ Multi-registry publishing - Docker Hub and GitHub Container Registry
- π Security scanning - Automated vulnerability scanning with Trivy
- π Health checks - Built-in container health monitoring
- π·οΈ Simple tagging - Only
latest
andrelease
tags
Choose the appropriate image for your system:
# For AMD64/x86_64 systems
docker run -d --name virtualhere --privileged \
-v /dev/bus/usb:/dev/bus/usb \
-v virtualhere-data:/data \
-p 7575:7575 \
yourusername/virtualhere-server:latest-amd64
# For ARM64 systems (Raspberry Pi 4, Apple Silicon, etc.)
docker run -d --name virtualhere --privileged \
-v /dev/bus/usb:/dev/bus/usb \
-v virtualhere-data:/data \
-p 7575:7575 \
yourusername/virtualhere-server:latest-arm64
# For ARM systems (Raspberry Pi 3 and older)
docker run -d --name virtualhere --privileged \
-v /dev/bus/usb:/dev/bus/usb \
-v virtualhere-data:/data \
-p 7575:7575 \
yourusername/virtualhere-server:latest-arm
The multi-arch manifest automatically selects the correct image:
docker run -d --name virtualhere --privileged \
-v /dev/bus/usb:/dev/bus/usb \
-v virtualhere-data:/data \
-p 7575:7575 \
yourusername/virtualhere-server:latest
Tag | Description | Architectures |
---|---|---|
latest |
Latest build from main branch | Multi-arch (amd64, arm64, arm) |
latest-amd64 |
Latest AMD64 build | amd64 |
latest-arm64 |
Latest ARM64 build | arm64 |
latest-arm |
Latest ARM build | arm/v7 |
release |
Latest tagged release | Multi-arch (amd64, arm64, arm) |
release-amd64 |
Release AMD64 build | amd64 |
release-arm64 |
Release ARM64 build | arm64 |
release-arm |
Release ARM build | arm/v7 |
v1.2.3 |
Specific version | Multi-arch (amd64, arm64, arm) |
- Docker Hub:
yourusername/virtualhere-server:latest
- GitHub Container Registry:
ghcr.io/yourusername/virtualhere-server:latest
The system automatically selects the appropriate image based on your architecture:
- x86_64 β
latest-amd64
(Intel/AMD 64-bit) - aarch64 β
latest-arm64
(ARM 64-bit) - armv7l β
latest-arm
(ARM 32-bit)
.
βββ Dockerfile.amd64 # AMD64 specific build
βββ Dockerfile.arm64 # ARM64 specific build
βββ Dockerfile.arm # ARM specific build
βββ start-virtualhere.sh # Startup script (shared)
βββ docker-compose.yml # Docker Compose config
βββ .github/
β βββ workflows/
β βββ build.yml # CI/CD pipeline
βββ README.md
- Docker with BuildKit support
- Git
# Clone the repository
git clone https://github.com/yourusername/virtualhere-docker.git
cd virtualhere-docker
# Build for specific architecture
docker build -f Dockerfile.amd64 -t virtualhere-server:amd64 .
docker build -f Dockerfile.arm64 -t virtualhere-server:arm64 .
docker build -f Dockerfile.arm -t virtualhere-server:arm .
# Build for current architecture (auto-detect)
ARCH=$(uname -m)
case "$ARCH" in
x86_64) docker build -f Dockerfile.amd64 -t virtualhere-server . ;;
aarch64) docker build -f Dockerfile.arm64 -t virtualhere-server . ;;
armv7l) docker build -f Dockerfile.arm -t virtualhere-server . ;;
esac
To enable automated builds, configure these secrets in your GitHub repository:
Secret | Description |
---|---|
DOCKERHUB_USERNAME |
Your Docker Hub username |
DOCKERHUB_TOKEN |
Docker Hub access token |
The workflow will automatically:
- Build multi-architecture images on push to main branch
- Create releases on git tags
- Perform weekly builds to get latest VirtualHere binaries
- Run security scans with Trivy
-
Check if the container has USB access:
docker exec virtualhere lsusb
-
Verify USB devices are mounted:
ls -la /dev/bus/usb/
- Ensure the host has USB devices connected
- Check container is running with
--privileged
or proper device access - Verify udev rules on the host system
-
Check if port 7575 is accessible:
netstat -tuln | grep 7575
-
Verify firewall settings on the host
-
Test connection from VirtualHere client
# View container logs
docker logs virtualhere
# Interactive shell access
docker exec -it virtualhere /bin/bash
# Check running processes
docker exec virtualhere ps aux
- Fork the repository
- Create a feature branch:
git checkout -b feature-name
- Make your changes and test them
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- VirtualHere for the excellent USB sharing software
- The Docker community for best practices and tools
- π VirtualHere Documentation
- π Report Issues
- π¬ Discussions