HackStream enables ultra-low-RAM devices to run heavyweight desktop applications remotely. This repository contains the server-side component for running a browser in a Docker container and streaming it via xpra.
- A remote Linux server with Docker and Docker Compose installed.
- A local machine with
sshandrsyncinstalled. - A client machine on the same LAN as the server to test the connection.
This project includes a script to automate deployment to a remote server.
The deployment script uses ssh and rsync to connect to your remote server. For a seamless experience, you should set up SSH key-based authentication to avoid typing a password.
If you don't have an SSH key pair yet, create one:
ssh-keygen -t rsa -b 4096Then, copy your public key to the remote server. Replace user and your_server_ip with your actual remote username and server IP address.
ssh-copy-id user@your_server_ipThis command will append your public key to ~/.ssh/authorized_keys on the remote server.
The deploy.sh script is pre-configured with default values. Open the deploy.sh file and, if needed, edit the following variables at the top of the script to match your setup:
REMOTE_USER: The username on your remote server (e.g.,ubuntu).REMOTE_HOST_IP: The IP address of your remote server (e.g.,192.168.1.83).
Once SSH access is configured, you can deploy the application by running the script from your local machine:
bash deploy.shThe script will synchronize the project files to the remote server, build the Docker image, and start the hackstream container.
After a successful deployment, the xpra server will be running and listening on port 14500 on your remote server. You can connect to it from a client machine on the same Local Area Network (LAN).
You need an xpra client on the machine you want to connect from. Installation instructions can be found on the xpra website.
For Debian-based systems like Ubuntu, you can typically install it with:
sudo apt-get update
sudo apt-get install xpraTo connect to the remote session, use the xpra attach command. Replace your_server_ip with the IP address of your remote server.
xpra attach tcp:your_server_ip:14500A new window should appear on your desktop, showing the application running inside the container (Chromium browser by default). You can now interact with the remote browser as if it were running locally.