Remotely: Self-Hosted Teamviewer Alternative

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.