75% found this document useful (4 votes)
750 views4 pages

Replit Ubuntu 20 Enabler

The document details the steps to install a Linux distribution within a restricted environment using proot. It detects the machine architecture and downloads the appropriate root filesystem, then configures it by installing packages, configuring DNS, and cleaning up files. It displays information about the new system before starting the proot environment.

Uploaded by

Durval Junior
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
75% found this document useful (4 votes)
750 views4 pages

Replit Ubuntu 20 Enabler

The document details the steps to install a Linux distribution within a restricted environment using proot. It detects the machine architecture and downloads the appropriate root filesystem, then configures it by installing packages, configuring DNS, and cleaning up files. It displays information about the new system before starting the proot environment.

Uploaded by

Durval Junior
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

#!

/bin/sh

#############################
# Linux Installation #
#############################

# Define the root directory to /home/runner.


# We can only write in /home/runner and /tmp in the runner/RDP.
ROOTFS_DIR=/home/runner

export PATH=$PATH:~/.local/usr/bin

max_retries=50
timeout=1

# Detect the machine architecture.


ARCH=$(uname -m)

# Check machine architecture to make sure it is supported.


# If not, we exit with a non-zero status code.
if [ "$ARCH" = "x86_64" ]; then
ARCH_ALT=amd64
elif [ "$ARCH" = "aarch64" ]; then
ARCH_ALT=arm64
else
printf "Unsupported CPU architecture: ${ARCH}"
exit 1
fi

# Download & decompress the Linux root file system if not already installed.

if [ ! -e $ROOTFS_DIR/.installed ]; then
echo
"##################################################################################
#####"
echo "#"
echo "# Aero Cloud VPS"
echo "#"
echo "# Copyright (C) 2022 - 2023, VPSFREE.ES"
echo "#"
echo "#"
echo
"##################################################################################
#####"
echo ""
echo "* [0] Debian - "
echo "* [1] Ubuntu - RDP Support"
echo "* [2] Alpine - "

read -p "Enter OS (0-3): " input

case $input in

0)
wget --tries=$max_retries --timeout=$timeout --no-hsts -O /tmp/rootfs.tar.xz \
"https://github.com/termux/proot-distro/releases/download/v3.10.0/debian-$
{ARCH}-pd-v3.10.0.tar.xz"
apt download xz-utils
deb_file=$(find $ROOTFS_DIR -name "*.deb" -type f)
dpkg -x $deb_file ~/.local/
rm "$deb_file"

tar -xJf /tmp/rootfs.tar.xz -C $ROOTFS_DIR;;

1)
wget --tries=$max_retries --timeout=$timeout --no-hsts -O /tmp/rootfs.tar.gz \
"http://cdimage.ubuntu.com/ubuntu-base/releases/20.04/release/ubuntu-base-
20.04.4-base-${ARCH_ALT}.tar.gz"

tar -xf /tmp/rootfs.tar.gz -C $ROOTFS_DIR;;

2)
wget --tries=$max_retries --timeout=$timeout --no-hsts -O /tmp/rootfs.tar.gz \
"https://dl-cdn.alpinelinux.org/alpine/v3.18/releases/x86_64/alpine-minirootfs-
3.18.3-${ARCH}.tar.gz"

tar -xf /tmp/rootfs.tar.gz -C $ROOTFS_DIR;;

esac

fi

################################
# Package Installation & Setup #
################################

# Download static APK-Tools temporarily because minirootfs does not come with APK
pre-installed.
if [ ! -e $ROOTFS_DIR/.installed ]; then
# Download the packages from their sources
mkdir $ROOTFS_DIR/usr/local/bin -p

wget --tries=$max_retries --timeout=$timeout --no-hsts -O


$ROOTFS_DIR/usr/local/bin/proot
"https://raw.githubusercontent.com/dxomg/vpsfreepterovm/main/proot-${ARCH}"

while [ ! -s "$ROOTFS_DIR/usr/local/bin/proot" ]; do
rm $ROOTFS_DIR/usr/local/bin/proot -rf
wget --tries=$max_retries --timeout=$timeout --no-hsts -O
$ROOTFS_DIR/usr/local/bin/proot
"https://raw.githubusercontent.com/dxomg/vpsfreepterovm/main/proot-${ARCH}"

if [ -s "$ROOTFS_DIR/usr/local/bin/proot" ]; then
# Make PRoot executable.
chmod 755 $ROOTFS_DIR/usr/local/bin/proot
break # Exit the loop since the file is not empty
fi

chmod 755 $ROOTFS_DIR/usr/local/bin/proot


sleep 1 # Add a delay before retrying to avoid hammering the server
done

chmod 755 $ROOTFS_DIR/usr/local/bin/proot

fi
# Clean-up after installation complete & finish up.
if [ ! -e $ROOTFS_DIR/.installed ]; then
# Add DNS Resolver nameservers to resolv.conf.
printf "nameserver 1.1.1.1\nnameserver 1.0.0.1" > ${ROOTFS_DIR}/etc/resolv.conf
# Wipe the files we downloaded into /tmp previously.
rm -rf /tmp/rootfs.tar.xz /tmp/sbin
# Create .installed to later check whether Alpine is installed.
touch $ROOTFS_DIR/.installed
fi

# Print some useful information to the terminal before entering PRoot.


# This is to introduce the user with the various Alpine Linux commands.
# Define color variables
BLACK='\e[0;30m'
BOLD_BLACK='\e[1;30m'
RED='\e[0;31m'
BOLD_RED='\e[1;31m'
GREEN='\e[0;32m'
BOLD_GREEN='\e[1;32m'
YELLOW='\e[0;33m'
BOLD_YELLOW='\e[1;33m'
BLUE='\e[0;34m'
BOLD_BLUE='\e[1;34m'
MAGENTA='\e[0;35m'
BOLD_MAGENTA='\e[1;35m'
CYAN='\e[0;36m'
BOLD_CYAN='\e[1;36m'
WHITE='\e[0;37m'
BOLD_WHITE='\e[1;37m'

# Reset text color


RESET_COLOR='\e[0m'

# Function to display the header


display_header() {
echo -e "${BOLD_MAGENTA} TeserSprise"
echo -e "${BOLD_MAGENTA} Sub"
echo -e "${BOLD_MAGENTA}___________________________________________________"
echo -e " ${YELLOW}-----> System Resources <----${RESET_COLOR}"
echo -e ""
}

# Function to display system resources


display_resources() {
echo -e " INSTALLER OS -> ${RED} $(cat /etc/os-release | grep "PRETTY_NAME" |
cut -d'"' -f2) ${RESET_COLOR}"
echo -e ""
echo -e " CPU -> ${YELLOW} $(lscpu | grep 'Model name' | cut -d':' -f2- | sed
's/^ *//;s/ \+/ /g') ${RESET_COLOR}"
echo -e " RAM -> ${BOLD_GREEN}${SERVER_MEMORY}MB${RESET_COLOR}"
echo -e " PRIMARY PORT -> ${BOLD_GREEN}${SERVER_PORT}${RESET_COLOR}"
echo -e " EXTRA PORTS -> ${BOLD_GREEN}${P_SERVER_ALLOCATION_LIMIT}$
{RESET_COLOR}"
echo -e " SERVER UUID -> ${BOLD_GREEN}${P_SERVER_UUID}${RESET_COLOR}"
echo -e " LOCATION -> ${BOLD_GREEN}${P_SERVER_LOCATION}${RESET_COLOR}"
}
display_footer() {
echo -e "${BOLD_MAGENTA}___________________________________________________$
{RESET_COLOR}"
echo -e ""
echo -e " ${YELLOW}-----> VPS HAS STARTED <----${RESET_COLOR}"
}

# Main script execution


clear

display_header
display_resources
display_footer

###########################
# Start PRoot environment #
###########################

# This command starts PRoot and binds several important directories


# from the host file system to our special root file system.
$ROOTFS_DIR/usr/local/bin/proot \
--rootfs="${ROOTFS_DIR}" \
-0 -w "/root" -b /dev -b /sys -b /proc -b /etc/resolv.conf --kill-on-exit

You might also like