Posted on

Table of Contents

Originally written April 2021, updated December 2023

Per Tor Project's updated documentation, this script should work for any version of Debian or Ubuntu.

Easy mode

curl -s https://yawnbox.com/scripts/tor_install.sh | sudo bash

The script

#!/bin/bash

GREEN='\033[0;32m'
NC='\033[0m' # No Color

echo -e "${GREEN}Checking CPU architecture...${NC}"
ARCH=$(dpkg --print-architecture)
if [[ "$ARCH" != "amd64" && "$ARCH" != "arm64" && "$ARCH" != "i386" ]]; then
    echo -e "${GREEN}Unsupported architecture: $ARCH${NC}"
    exit 1
fi

echo -e "${GREEN}Installing apt-transport-https...${NC}"
apt install apt-transport-https -y

echo -e "${GREEN}Checking for GPG installation...${NC}"
if ! command -v gpg > /dev/null; then
    echo -e "${GREEN}GPG not found, installing...${NC}"
    apt update && apt install gpg -y
else
    echo -e "${GREEN}GPG is already installed.${NC}"
fi

echo -e "${GREEN}Checking for Tor installation...${NC}"
if ! command -v tor > /dev/null; then
    echo -e "${GREEN}Tor not found, installing...${NC}"
    echo "Adding Tor Project repository..."
    echo "deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/tor.list
    wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null
    apt update
    apt install tor deb.torproject.org-keyring -y
else
    echo -e "${GREEN}Tor is already installed. Version: $(tor --version)${NC}"
fi

echo -e "${GREEN}Checking Tor version...${NC}"
tor --version

yawnbox