Add 'lxc-compile.sh'
parent
990ad70ba0
commit
11322ebc04
@ -0,0 +1,290 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# LXC container env setup script and gittylab compiler for all routers
|
||||||
|
|
||||||
|
print_success() { echo -e "\e[32m${@}\e[0m"; }
|
||||||
|
print_error() { echo -e "\e[31m${@}\e[0m"; }
|
||||||
|
|
||||||
|
if [ `whoami` != "root" ] && [ `whoami` != "forge" ] && [ `whoami` != "homestead" ] && [ `whoami` != "vagrant" ];
|
||||||
|
then
|
||||||
|
print_error "You must be root to run this script!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Updating apt..."
|
||||||
|
sudo_output=$(sudo bash -c "apt-get update 2>&1; echo $?")
|
||||||
|
sudo_result=$?
|
||||||
|
aptget_result=$(echo "${sudo_output}"| tail -1)
|
||||||
|
|
||||||
|
echo "${sudo_output}"
|
||||||
|
|
||||||
|
# Check results
|
||||||
|
if [ ${sudo_result} -eq 0 ]; then
|
||||||
|
if [ ${aptget_result} -eq 0 ]; then
|
||||||
|
print_success "Updated apt."
|
||||||
|
else
|
||||||
|
print_error "Failed to apt, apt-get error!"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
print_error "Failed to update apt, sudo error!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Installing openssh-server"
|
||||||
|
sudo_output=$(sudo bash -c "apt-get -y install openssh-server 2>&1; echo $?")
|
||||||
|
sudo_result=$?
|
||||||
|
aptget_result=$(echo "${sudo_output}"| tail -1)
|
||||||
|
echo "${sudo_output}"
|
||||||
|
|
||||||
|
# Check results
|
||||||
|
if [ ${sudo_result} -eq 0 ]; then
|
||||||
|
if [ ${aptget_result} -eq 0 ]; then
|
||||||
|
print_success "Installed openssh-server."
|
||||||
|
else
|
||||||
|
print_error "Failed to install openssh-server, apt-get error!"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
print_error "Failed to install openssh-server, sudo error!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
sshd_config='/etc/ssh/sshd_config'
|
||||||
|
|
||||||
|
sudo mv $sshd_config $sshd_config.bak
|
||||||
|
sudo rm -f $sshd_config
|
||||||
|
|
||||||
|
echo "# SSH Config
|
||||||
|
Port 22
|
||||||
|
Protocol 2
|
||||||
|
HostKey /etc/ssh/ssh_host_rsa_key
|
||||||
|
HostKey /etc/ssh/ssh_host_dsa_key
|
||||||
|
HostKey /etc/ssh/ssh_host_ecdsa_key
|
||||||
|
HostKey /etc/ssh/ssh_host_ed25519_key
|
||||||
|
UsePrivilegeSeparation yes
|
||||||
|
KeyRegenerationInterval 3600
|
||||||
|
ServerKeyBits 1024
|
||||||
|
SyslogFacility AUTH
|
||||||
|
LogLevel INFO
|
||||||
|
LoginGraceTime 120
|
||||||
|
PermitRootLogin yes
|
||||||
|
StrictModes yes
|
||||||
|
RSAAuthentication yes
|
||||||
|
PubkeyAuthentication yes
|
||||||
|
IgnoreRhosts yes
|
||||||
|
RhostsRSAAuthentication no
|
||||||
|
HostbasedAuthentication no
|
||||||
|
PermitEmptyPasswords no
|
||||||
|
ChallengeResponseAuthentication no
|
||||||
|
X11Forwarding yes
|
||||||
|
X11DisplayOffset 10
|
||||||
|
PrintMotd no
|
||||||
|
PrintLastLog yes
|
||||||
|
TCPKeepAlive yes
|
||||||
|
AcceptEnv LANG LC_*
|
||||||
|
UsePAM yes
|
||||||
|
Subsystem sftp internal-sftp
|
||||||
|
Match group sftp
|
||||||
|
ChrootDirectory %h
|
||||||
|
X11Forwarding no
|
||||||
|
AllowTcpForwarding no
|
||||||
|
ForceCommand internal-sftp
|
||||||
|
" | sudo tee $sshd_config
|
||||||
|
|
||||||
|
echo "Restarting SSH service..."
|
||||||
|
sudo service ssh restart
|
||||||
|
|
||||||
|
echo "Creating user and group..."
|
||||||
|
sudo groupadd sftp
|
||||||
|
|
||||||
|
echo "Enter username for sftp: "
|
||||||
|
read sftp_user
|
||||||
|
|
||||||
|
echo "Enter password for sftp: "
|
||||||
|
stty -echo
|
||||||
|
read sftp_passwd
|
||||||
|
stty echo
|
||||||
|
|
||||||
|
sudo useradd -m $sftp_user -g sftp -s /bin/false
|
||||||
|
echo "$sftp_user:$sftp_passwd" | sudo chpasswd
|
||||||
|
sudo mkdir -p /home/$sftp_user/files
|
||||||
|
sudo chown root:root /home/$sftp_user
|
||||||
|
sudo chown $sftp_user:sftp /home/$sftp_user/files
|
||||||
|
sudo chmod 755 /home/$sftp_user
|
||||||
|
sudo chmod 770 /home/$sftp_user/files
|
||||||
|
|
||||||
|
echo "FTP INSTALL FINISHED! :)"
|
||||||
|
|
||||||
|
# Install code server:
|
||||||
|
curl -fsSL https://code-server.dev/install.sh | sh
|
||||||
|
sudo systemctl enable --now code-server@root
|
||||||
|
sudo apt-get install -y gawk libncurses5-dev libz-dev zlib1g-dev git ccache pkg-config
|
||||||
|
sudo apt install build-essential clang flex bison g++ gawk gcc-multilib g++-multilib nano
|
||||||
|
sudo apt install gettext git libncurses-dev libssl-dev python3-distutils rsync unzip zlib1g-dev file wget
|
||||||
|
sudo systemctl restart code-server@root
|
||||||
|
|
||||||
|
# Ask user for choice:
|
||||||
|
echo "What router do you want to build packages for today?"
|
||||||
|
select opt in "x86" "Gli gl-a1300, Gli bl1300" "TPLink Archer C7, Gli Crete ar750" "ASUS RT-ac88u" "Linksys E8450, BPI-R64" "gl-mt1300" "Linksys WRT32x, AC3200acm" "glinet-xe300, gli Shadow, Slate" "mt300nv2 Yellow mini"; do
|
||||||
|
case $opt in
|
||||||
|
"x86")
|
||||||
|
sdk="https://downloads.openwrt.org/releases/21.02.7/targets/x86/64/openwrt-sdk-21.02.7-x86-64_gcc-8.4.0_musl.Linux-x86_64.tar.xz"
|
||||||
|
file="openwrt-sdk-21.02.7-x86-64_gcc-8.4.0_musl.Linux-x86_64.tar.xz"
|
||||||
|
folder="openwrt-sdk-21.02.7-x86-64_gcc-8.4.0_musl.Linux-x86_64"
|
||||||
|
;;
|
||||||
|
"Gli gl-a1300, Gli bl1300")
|
||||||
|
sdk="https://downloads.openwrt.org/releases/23.05.0-rc2/targets/ipq40xx/generic/openwrt-sdk-23.05.0-rc2-ipq40xx-generic_gcc-12.3.0_musl_eabi.Linux-x86_64.tar.xz"
|
||||||
|
file="openwrt-sdk-23.05.0-rc2-ipq40xx-generic_gcc-12.3.0_musl_eabi.Linux-x86_64.tar.xz"
|
||||||
|
folder="openwrt-sdk-23.05.0-rc2-ipq40xx-generic_gcc-12.3.0_musl_eabi.Linux-x86_64"
|
||||||
|
;;
|
||||||
|
"TPLink Archer C7, Gli Crete ar750")
|
||||||
|
sdk="https://downloads.openwrt.org/releases/22.03.3/targets/ath79/generic/openwrt-sdk-22.03.3-ath79-generic_gcc-11.2.0_musl.Linux-x86_64.tar.xz"
|
||||||
|
file="openwrt-sdk-22.03.3-ath79-generic_gcc-11.2.0_musl.Linux-x86_64.tar.xz"
|
||||||
|
folder="openwrt-sdk-22.03.3-ath79-generic_gcc-11.2.0_musl.Linux-x86_64"
|
||||||
|
;;
|
||||||
|
"ASUS RT-ac88u")
|
||||||
|
sdk="https://downloads.openwrt.org/releases/22.03.5/targets/bcm53xx/generic/openwrt-sdk-22.03.5-bcm53xx-generic_gcc-11.2.0_musl_eabi.Linux-x86_64.tar.xz"
|
||||||
|
file="openwrt-sdk-22.03.5-bcm53xx-generic_gcc-11.2.0_musl_eabi.Linux-x86_64.tar.xz"
|
||||||
|
folder="openwrt-sdk-22.03.5-bcm53xx-generic_gcc-11.2.0_musl_eabi.Linux-x86_64"
|
||||||
|
;;
|
||||||
|
"Linksys E8450, BPI-R64")
|
||||||
|
sdk="https://downloads.openwrt.org/releases/22.03.5/targets/mediatek/mt7622/openwrt-sdk-22.03.5-mediatek-mt7622_gcc-11.2.0_musl.Linux-x86_64.tar.xz"
|
||||||
|
file="openwrt-sdk-22.03.5-mediatek-mt7622_gcc-11.2.0_musl.Linux-x86_64.tar.xz"
|
||||||
|
folder="openwrt-sdk-22.03.5-mediatek-mt7622_gcc-11.2.0_musl.Linux-x86_64"
|
||||||
|
;;
|
||||||
|
"gl-mt1300")
|
||||||
|
sdk="https://downloads.openwrt.org/releases/21.02.6/targets/ramips/mt7621/openwrt-sdk-21.02.6-ramips-mt7621_gcc-8.4.0_musl.Linux-x86_64.tar.xz"
|
||||||
|
file="openwrt-sdk-21.02.6-ramips-mt7621_gcc-8.4.0_musl.Linux-x86_64.tar.xz"
|
||||||
|
folder="openwrt-sdk-21.02.6-ramips-mt7621_gcc-8.4.0_musl.Linux-x86_64"
|
||||||
|
;;
|
||||||
|
"Linksys WRT32x, AC3200acm")
|
||||||
|
sdk="https://downloads.openwrt.org/releases/22.03.0/targets/mvebu/cortexa9/openwrt-sdk-22.03.0-mvebu-cortexa9_gcc-11.2.0_musl_eabi.Linux-x86_64.tar.xz"
|
||||||
|
file="openwrt-sdk-22.03.0-mvebu-cortexa9_gcc-11.2.0_musl_eabi.Linux-x86_64.tar.xz"
|
||||||
|
folder="openwrt-sdk-22.03.0-mvebu-cortexa9_gcc-11.2.0_musl_eabi.Linux-x86_64"
|
||||||
|
;;
|
||||||
|
"glinet-xe300, gli Shadow, Slate")
|
||||||
|
sdk="https://downloads.openwrt.org/releases/22.03.0/targets/ath79/nand/openwrt-sdk-22.03.0-ath79-nand_gcc-11.2.0_musl.Linux-x86_64.tar.xz"
|
||||||
|
file="openwrt-sdk-22.03.0-mvebu-cortexa9_gcc-11.2.0_musl_eabi.Linux-x86_64.tar.xz"
|
||||||
|
folder="openwrt-sdk-22.03.0-mvebu-cortexa9_gcc-11.2.0_musl_eabi.Linux-x86_64"
|
||||||
|
;;
|
||||||
|
"mt300nv2 Yellow mini")
|
||||||
|
sdk="https://downloads.openwrt.org/releases/21.02.3/targets/ramips/mt76x8/openwrt-sdk-21.02.3-ramips-mt76x8_gcc-8.4.0_musl.Linux-x86_64.tar.xz"
|
||||||
|
file="openwrt-sdk-21.02.3-ramips-mt76x8_gcc-8.4.0_musl.Linux-x86_64.tar.xz"
|
||||||
|
folder="openwrt-sdk-21.02.3-ramips-mt76x8_gcc-8.4.0_musl.Linux-x86_64"
|
||||||
|
;;
|
||||||
|
*) echo "Invalid option";;
|
||||||
|
esac
|
||||||
|
break
|
||||||
|
done
|
||||||
|
|
||||||
|
#remove existing files
|
||||||
|
rm $file
|
||||||
|
rm -R $folder
|
||||||
|
|
||||||
|
# Download and extract openwrt SDK:
|
||||||
|
if [[ ! -f $file ]]; then
|
||||||
|
wget $sdk
|
||||||
|
tar xf $file
|
||||||
|
fi
|
||||||
|
#change dir to SDK folder
|
||||||
|
cd $folder
|
||||||
|
|
||||||
|
#add .po lang support
|
||||||
|
./scripts/feeds update -a
|
||||||
|
./scripts/feeds install -a
|
||||||
|
./scripts/feeds update packages
|
||||||
|
make menuconfig
|
||||||
|
git clone https://github.com/openwrt-dev/po2lmo.git tools/po2lmo
|
||||||
|
cd tools/po2lmo
|
||||||
|
make && sudo make install
|
||||||
|
cd ..
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
base_url="https://gittylab.com/ben/"
|
||||||
|
|
||||||
|
gitapps=(
|
||||||
|
"luci-app-frigate"
|
||||||
|
"luci-app-easymesh"
|
||||||
|
"luci-app-atinout"
|
||||||
|
"luci-app-cellled"
|
||||||
|
"luci-app-mmconfig"
|
||||||
|
"luci-app-smstools3"
|
||||||
|
"luci-app-modeminfo"
|
||||||
|
"luci-app-btcpayserver"
|
||||||
|
"luci-theme-privaterouter"
|
||||||
|
"luci-app-nodered"
|
||||||
|
"luci-app-autogpt"
|
||||||
|
"luci-app-megamedia"
|
||||||
|
"luci-app-rtorrent"
|
||||||
|
"luci-app-webtop"
|
||||||
|
"luci-app-shortcutmenu"
|
||||||
|
"luci-app-plex"
|
||||||
|
"luci-app-filebrowser"
|
||||||
|
"luci-app-nextcloud"
|
||||||
|
"luci-app-seafile"
|
||||||
|
"luci-app-heimdall"
|
||||||
|
"luci-app-motioneye"
|
||||||
|
"luci-app-joplin"
|
||||||
|
"luci-app-ghostblog"
|
||||||
|
"luci-app-emby"
|
||||||
|
"luci-app-jellyfin"
|
||||||
|
"luci-app-prowlarr"
|
||||||
|
"luci-app-wordpress"
|
||||||
|
"luci-app-gitea"
|
||||||
|
"luci-app-libreddit"
|
||||||
|
"luci-app-whoogle"
|
||||||
|
"luci-app-vaultwarden"
|
||||||
|
"luci-app-mastodon"
|
||||||
|
"luci-app-discourse"
|
||||||
|
"luci-app-gotify"
|
||||||
|
"luci-app-jitsi"
|
||||||
|
"luci-app-owncast"
|
||||||
|
"luci-app-neko"
|
||||||
|
"luci-app-alltube"
|
||||||
|
"luci-app-bookstack"
|
||||||
|
"luci-app-searxng"
|
||||||
|
"luci-app-homeassistant"
|
||||||
|
"luci-app-photoprism"
|
||||||
|
"luci-app-qbittorrent"
|
||||||
|
"luci-app-simplex"
|
||||||
|
"luci-app-chatgpt"
|
||||||
|
"luci-app-lxc-attach"
|
||||||
|
"luci-app-fileassistant"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Ask user if they want to clone all gittylab packages:
|
||||||
|
read -p "Do you want to clone all openwrt packages from gittylab? [yes/no] " gitchoice
|
||||||
|
|
||||||
|
if [[ $gitchoice == "yes" ]]; then
|
||||||
|
for gitapp in "${gitapps[@]}"; do
|
||||||
|
# Clone the app
|
||||||
|
git clone "${base_url}${gitapp}.git" "package/$gitapp"
|
||||||
|
|
||||||
|
# Find directories named "libexec" and apply chmod +x to them and their contents recursively
|
||||||
|
find . -type d -name "libexec" -exec chmod -R +x {} \;
|
||||||
|
|
||||||
|
echo "Permissions have been set for all 'libexec' directories and their contents."
|
||||||
|
|
||||||
|
# Compile the app using OpenWRT SDK
|
||||||
|
make package/$gitapp/clean
|
||||||
|
./scripts/feeds update -a
|
||||||
|
./scripts/feeds install -a
|
||||||
|
make package/$gitapp/compile
|
||||||
|
done
|
||||||
|
else
|
||||||
|
|
||||||
|
read -p "What single openwrt package do you want to clone and build today? " appname
|
||||||
|
|
||||||
|
# Clone the app
|
||||||
|
git clone "${base_url}${appname}.git" "package/appname"
|
||||||
|
|
||||||
|
# Find directories named "libexec" and apply chmod +x to them and their contents recursively
|
||||||
|
find . -type d -name "libexec" -exec chmod -R +x {} \;
|
||||||
|
|
||||||
|
echo "Permissions have been set for all 'libexec' directories and their contents."
|
||||||
|
|
||||||
|
# Compile the app using OpenWRT SDK
|
||||||
|
make package/$appname/clean
|
||||||
|
./scripts/feeds update -a
|
||||||
|
./scripts/feeds install -a
|
||||||
|
make package/$appname/compile
|
||||||
|
done
|
Loading…
Reference in New Issue