Portable Server (Docker, Pi-hole & Tailscale)
With 4x ARM Cortex-A53 cores and up to 1GB RAM, an OpenStick modem running Debian or postmarketOS can effortlessly host lightweight microservices, ad-blockers, and VPN clients.
1. Setting up Pi-hole (Network Ad Blocking)
Section titled “1. Setting up Pi-hole (Network Ad Blocking)”Pi-hole acts as a DNS sinkhole, blocking advertising and tracking domains before they reach your devices.
Installing Pi-hole
Section titled “Installing Pi-hole”SSH into your dongle and run the official unattended installer:
# Fetch and run the Pi-hole installation scriptcurl -sSL https://install.pi-hole.net | bash- When prompted for the network interface, choose
wlan0(if acting as Wi-Fi AP) orusb0(if connected via USB Ethernet). - Set an admin web password:
Terminal window pihole -a -p - Access the web interface at
http://192.168.68.1/admin.
Power draw: ~1.2W. You now have a complete hardware ad-blocker powered directly from any USB port.
2. Mesh VPN: Tailscale & ZeroTier
Section titled “2. Mesh VPN: Tailscale & ZeroTier”If you deploy your modem in a remote location (e.g. holiday home, remote weather station, inside a vehicle), cellular carriers put your connection behind Carrier-Grade NAT (CGNAT), preventing incoming port forwarding.
A mesh VPN like Tailscale or ZeroTier punches through NAT seamlessly.
Installing Tailscale
Section titled “Installing Tailscale”# Install Tailscale repository and packagecurl -fsSL https://tailscale.com/install.sh | sh
# Authenticate and bring up interfacesudo tailscale up --advertise-exit-nodeNow, your MSM8916 dongle is accessible from your laptop or phone anywhere in the world over a secure WireGuard mesh. By advertising itself as an exit node, you can even route your laptop’s web traffic through the dongle’s 4G cellular connection!
3. Running Docker Containers
Section titled “3. Running Docker Containers”For modems equipped with 1 GB RAM (e.g. UFI003 revisions), Docker provides a clean way to deploy microservices.
Installing Docker
Section titled “Installing Docker”# Install official Docker scriptcurl -fsSL https://get.docker.com | sh
# Add user to docker groupsudo usermod -aG docker userRecommended Lightweight Containers
Section titled “Recommended Lightweight Containers”Because RAM is limited (512MB–1GB), choose lightweight Alpine-based images:
# Uptime Kuma (Server monitoring)docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:alpine
# Nginx Web Serverdocker run -d --restart=always -p 8080:80 nginx:alpineMemory Optimization Tip: Enable zram
Section titled “Memory Optimization Tip: Enable zram”To maximize RAM on 512MB/1GB devices, enable compressed RAM swap:
sudo apt install -y zram-toolssudo tee /etc/default/zramswap << 'EOF'ALGO=zstdPERCENT=50EOFsudo systemctl restart zramswapThis effectively increases available memory by 50–70% with negligible CPU overhead!