5.2 KiB
#!/data/data/com.termux/files/usr/bin/bash
Termux Ultimate Remote Dev Environment Setup
Run: bash setup-termux.sh
set -e
echo "=== Termux Remote Dev Environment Setup ==="
Update & upgrade
pkg update -y && pkg upgrade -y
Grant storage access
termux-setup-storage
── Core Utilities ──
pkg install -y
coreutils findutils grep sed gawk
curl wget openssl-tool
git git-lfs
tar zip unzip p7zip
man less tree ncurses-utils
termux-api termux-tools
── SSH Server & Client ──
pkg install -y openssh mosh autossh sshpass
Generate host keys
ssh-keygen -A 2>/dev/null || true
Generate user key pair (no passphrase for convenience)
[ ! -f ~/.ssh/id_ed25519 ] && ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N "" echo "→ Start SSH server with: sshd -p 8022" echo "→ Connect from PC with: ssh -p 8022 $(whoami)@"
── Remote Desktop (VNC + X11) ──
pkg install -y x11-repo
pkg install -y
tigervnc xorg-server
openbox xfce4 xfce4-terminal
aterm dbus
VNC setup
mkdir -p ~/.vnc echo "→ Set VNC password:" vncpasswd || true cat > ~/start-vnc.sh << 'VNCEOF' #!/bin/bash export DISPLAY=:1 vncserver :1 -geometry 1920x1080 -depth 24 -localhost no
Start XFCE desktop
export PULSE_SERVER=127.0.0.1 dbus-launch --exit-with-session startxfce4 & echo "VNC running on port 5901" VNCEOF chmod +x ~/start-vnc.sh
cat > ~/stop-vnc.sh << 'EOF' #!/bin/bash vncserver -kill :1 2>/dev/null echo "VNC stopped" EOF chmod +x ~/stop-vnc.sh
── Code Server (VS Code in Browser) ──
pkg install -y nodejs-lts yarn npm install -g code-server@latest || { echo "code-server npm install failed, trying binary..." curl -fsSL https://code-server.dev/install.sh | sh } mkdir -p ~/.config/code-server cat > ~/.config/code-server/config.yaml << 'CSEOF' bind-addr: 0.0.0.0:8080 auth: password password: changeme123 cert: false CSEOF echo "→ Start code-server with: code-server" echo "→ Access at http://:8080"
── Editors & Dev Tools ──
pkg install -y
neovim nano micro
tmux screen
htop bottom
jq yq fzf fd ripgrep bat exa
direnv
Tmux config for remote work
cat > ~/.tmux.conf << 'TMUXEOF' set -g mouse on set -g history-limit 50000 set -g default-terminal "tmux-256color" set -ga terminal-overrides ",256col:Tc" set -g base-index 1 setw -g pane-base-index 1 set -g status-style 'bg=#333333 fg=#ffffff' set -g status-right '#H | %Y-%m-%d %H:%M' set -g escape-time 10
Better prefix
unbind C-b set -g prefix C-a bind C-a send-prefix
Easy splits
bind | split-window -h -c "#{pane_current_path}" bind - split-window -v -c "#{pane_current_path}" TMUXEOF
Neovim basic config
mkdir -p ~/.config/nvim cat > ~/.config/nvim/init.lua << 'NVIMEOF' vim.opt.number = true vim.opt.relativenumber = true vim.opt.expandtab = true vim.opt.shiftwidth = 2 vim.opt.tabstop = 2 vim.opt.clipboard = "unnamedplus" vim.opt.termguicolors = true vim.opt.mouse = "a" vim.opt.signcolumn = "yes" NVIMEOF
── Languages & Runtimes ──
pkg install -y
python python-pip
rust
golang
clang make cmake
ruby
Python essentials
pip install --upgrade pip pip install ipython httpie
── Networking & Tunneling ──
pkg install -y
nmap net-tools iproute2 dnsutils
cloudflared
Cloudflare tunnel script (expose without port forwarding)
cat > ~/start-tunnel.sh << 'TUNEOF' #!/bin/bash
Expose code-server publicly via Cloudflare tunnel
echo "Starting Cloudflare tunnel for code-server on :8080..." cloudflared tunnel --url http://localhost:8080 TUNEOF chmod +x ~/start-tunnel.sh
── File Sharing ──
pkg install -y rsync
Simple HTTP file server alias
cat >> ~/.bashrc << 'BASHEOF'
── Aliases ──
alias ll='exa -la --icons 2>/dev/null || ls -la'
alias cat='bat --paging=never 2>/dev/null || cat'
alias serve='python -m http.server 8888'
alias myip='curl -s ifconfig.me && echo'
alias sshstart='sshd -p 8022 && echo "SSH running on port 8022"'
alias vncstart='/start-vnc.sh'
alias vncstop='/stop-vnc.sh'
alias codestart='code-server &'
alias tunnel='~/start-tunnel.sh'
── Environment ──
export EDITOR=nvim export VISUAL=nvim export GPG_TTY=$(tty)
BASHEOF
── Git Config ──
git config --global init.defaultBranch main git config --global pull.rebase true git config --global core.editor nvim
── Summary ──
echo "" echo "============================================" echo " ✅ Termux Remote Dev Environment Ready!" echo "============================================" echo "" echo " REMOTE ACCESS OPTIONS:" echo " ─────────────────────" echo " SSH: sshstart → connect on port 8022" echo " VS Code: codestart → browser at :8080" echo " VNC Desktop: vncstart → VNC client at :5901" echo " Tunnel: tunnel → public URL via Cloudflare" echo "" echo " QUICK COMMANDS:" echo " ─────────────" echo " tmux → terminal multiplexer" echo " nvim → editor" echo " serve → HTTP file server on :8888" echo " myip → show public IP" echo "" echo " ⚠️ Change code-server password in:" echo " ~/.config/code-server/config.yaml" echo "" echo " Run: source ~/.bashrc" echo "============================================"