Remotely is another open source, self-hosted alternative to Teamviewer. Remotely has portable/resident client programs for Windows and Linux and a resident agent for MacOS.
Remotely is actively developed by Immense Networks and their Github is here.
After the demonstration in the tutorial, I show the installation of “Remotely” in a LXD container. I have updated this to Incus. If you are not familiar with Incus watch my video entitled “Incus Containers Step by Step”. Here’s the command to create the Incus container:
incus launch images:ubuntu/24.04 Remotely --profile default --profile bridgeprofile -c boot.autostart=true -c security.nesting=true -c limits.cpu.allowance=20% -c limits.memory=4GiB
Connect to the Incus container:
incus shell Remotely
Add a user account in the container, grant it “sudo” privilege and sign on:
adduser scott
usermod -aG sudo scott
su - scott
Install dependencies:
sudo apt install install nano curl net-tools -y
Install Docker:
curl -sSL https://get.docker.com | sh
Add the user to the docker group to run docker without sudo:
sudo usermod -aG docker $USER
newgrp docker
groups
Make a folder for “Remotely” and move inside of it:
mkdir remotely
cd remotely
Create a docker-compose.yml file:
nano docker-compose.yml
Insert the following into the file:
services:
remotely:
image: immybot/remotely:latest
restart: unless-stopped
volumes:
- ./remotely-data:/app/AppData
ports:
- "5000:5000"
environment:
- ASPNETCORE_ENVIRONMENT=Production
- ASPNETCORE_HTTP_PORTS=5000
# Other ASP.NET Core configurations can be overridden here, such as Logging.
# See https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-8.0
# Values for DbProvider are SQLite, SQLServer, and PostgreSQL.
- Remotely_ApplicationOptions__DbProvider=SQLite
# This path shouldn't be changed. It points to the Docker volume.
- Remotely_ConnectionStrings__SQLite=Data Source=/app/AppData/Remotely.db
# If using SQL Server, change the connection string to point to your SQL Server instance.
- Remotely_ConnectionStrings__SQLServer=Server=(localdb)\\mssqllocaldb;Database=Remotely-Server-53bc9b9d-9d6a-45d4-8429-2a2761773502;Trusted_Connection=True;MultipleActiveResultSets=true
# If using PostgreSQL, change the connection string to point to your PostgreSQL instance.
- Remotely_ConnectionStrings__PostgreSQL=Server=Host=localhost;Database=Remotely;Username=postgres;
Save the file with CTRL O and Enter and then CTRL X to exit the nano editor:
Launch the application:
docker compose up -d
Visit the web page at the address of the LXD container using your favorite web browser at port 5000.
Click the “Register” button to establish your Remotely user account for administration:
Once logged in, the Interface will look like this:
I suggest going into your account settings and turning on two factor authentication for security.
To make your “Remotely” instance reachable from the web, you will need to define a subdomain name for remotely and make an entry in NginX Proxy Manager (NPM):
Remotely differs from Rustdesk in that it can be used more readily for remote machine management in addition to remote assistance since it is purely a web service. You may want to watch my video on Rustdesk if you have not seen it.