6.8 KiB
6.8 KiB
Termux Flask Development Setup Guide
SMS Campaign Manager on Android
Prerequisites
- Termux installed on Android
- Termux:API app installed (for Android API access)
- SSH access configured (optional, for remote development)
Initial Setup
1. Update Termux Packages
pkg update && pkg upgrade
2. Install Required System Packages
# Install Python and development tools
pkg install python python-pip
# Install Node.js (if needed for npm packages)
pkg install nodejs
# Install which command (useful for debugging)
pkg install which
# Install Termux API package
pkg install termux-api
Project Setup
1. Create Project Directory Structure
mkdir -p ~/projects/sms-campaign-manager
cd ~/projects/sms-campaign-manager
2. Install Python Dependencies
pip install flask werkzeug requests
3. Create the Flask Application
Create app.py with the following content:
from flask import Flask, jsonify, render_template_string
import subprocess
import json
app = Flask(__name__)
@app.route('/')
def index():
return render_template_string('''
<!DOCTYPE html>
<html>
<head>
<title>SMS Campaign Manager - Termux</title>
<style>
body { font-family: Arial, sans-serif; margin: 40px; background: #f5f5f5; }
.container { background: white; padding: 30px; border-radius: 10px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }
.status { background: #e8f5e8; padding: 20px; border-radius: 8px; margin: 20px 0; }
.api-test { background: #f0f8ff; padding: 15px; border-radius: 5px; margin: 10px 0; }
a { color: #0066cc; text-decoration: none; }
a:hover { text-decoration: underline; }
</style>
</head>
<body>
<div class="container">
<h1>🚀 SMS Campaign Manager</h1>
<h2>Running on Termux!</h2>
<div class="status">
<h3>✅ Flask Server Status: Active</h3>
<p><strong>Server IP:</strong> 10.0.0.193:5000</p>
<p><strong>Environment:</strong> Termux on Android</p>
</div>
<div class="api-test">
<h3>🔋 Termux API Tests</h3>
<p><a href="/battery">📱 Battery Status</a></p>
<p><a href="/notification">🔔 Send Test Notification</a></p>
</div>
</div>
</body>
</html>
''')
@app.route('/battery')
def battery():
try:
result = subprocess.run(['termux-battery-status'], capture_output=True, text=True)
battery_data = json.loads(result.stdout)
return f"""
<h2>🔋 Battery Status</h2>
<pre>{json.dumps(battery_data, indent=2)}</pre>
<p><a href='/'>← Back</a></p>
"""
except Exception as e:
return f"<h2>Error</h2><pre>{str(e)}</pre><p><a href='/'>← Back</a></p>"
@app.route('/notification')
def notification():
try:
subprocess.run(['termux-notification', '--title', 'Flask Test', '--content', 'Hello from SMS Campaign Manager!'], capture_output=True, text=True)
return f"""
<h2>🔔 Notification Sent!</h2>
<p>Check your Android notifications.</p>
<p><a href='/'>← Back</a></p>
"""
except Exception as e:
return f"<h2>Error</h2><pre>{str(e)}</pre><p><a href='/'>← Back</a></p>"
if __name__ == '__main__':
print("🚀 Starting SMS Campaign Manager on Termux...")
print("📱 Device IP: 10.0.0.193")
print("🌐 Access from Ubuntu: http://10.0.0.193:5000")
app.run(host='0.0.0.0', port=5000, debug=True)
Running the Application
1. Start the Flask Server
cd ~/projects/sms-campaign-manager
python app.py
2. Access the Application
- From Android device: http://127.0.0.1:5000
- From Ubuntu/network: http://10.0.0.193:5000 (replace with your device IP)
- From SSH: Access via the device's network IP
Features Implemented
- Web Interface: Clean, responsive HTML interface
- Battery Status API: Uses
termux-battery-statusto display device battery info - Notification API: Sends test notifications using
termux-notification - Network Access: Configured to accept connections from any IP (0.0.0.0)
Useful Commands
Check if server is running
ps aux | grep python
Find your device IP
ifconfig wlan0 | grep inet
# or
ip addr show wlan0
Kill existing Flask processes
pkill -f "python app.py"
Run in background with nohup
nohup python app.py > flask.log 2>&1 &
View logs
tail -f flask.log
SSH Access from Ubuntu
If you want to develop from your Ubuntu machine:
# From Ubuntu, SSH into Termux
ssh android-dev
# Navigate to project
cd ~/projects/sms-campaign-manager
# Edit files with nano or vim
nano app.py
Troubleshooting
Port Already in Use
# Find process using port 5000
lsof -i :5000
# Kill the process
kill -9 <PID>
Permission Issues with Termux API
Make sure you've granted permissions to Termux:API app in Android settings.
Network Access Issues
Ensure your device and Ubuntu machine are on the same network.
Next Steps for SMS Campaign Manager
-
Add SMS functionality:
# Send SMS using Termux API subprocess.run(['termux-sms-send', '-n', phone_number, message]) -
Add contact list management:
# Get contacts subprocess.run(['termux-contact-list']) -
Add database support:
pip install flask-sqlalchemy -
Add authentication:
pip install flask-login
Code-Server Alternative (Failed Attempt)
Note: Installing code-server on Termux proved problematic due to:
- Missing native module
argon2.node - Node version incompatibilities
- Architecture issues (ARM64)
Recommendation: Use SSH with nano/vim for editing, or use a mobile code editor app like Acode or Termux:Widget for quick edits.
Quick Restart Script
Create restart_server.sh:
#!/data/data/com.termux/files/usr/bin/bash
pkill -f "python app.py"
cd ~/projects/sms-campaign-manager
python app.py
Make it executable:
chmod +x restart_server.sh
Backup Your Work
# Create backup
tar -czf sms-campaign-backup.tar.gz ~/projects/sms-campaign-manager
# Copy to Ubuntu via SCP
scp sms-campaign-backup.tar.gz bunker-admin@10.0.0.9:~/backups/
Summary
You successfully:
- ✅ Installed Flask and dependencies on Termux
- ✅ Created a working Flask web application
- ✅ Integrated Termux API for Android features
- ✅ Made it accessible from your Ubuntu machine
- ✅ Tested battery status and notification APIs
The server was running successfully and accepting connections from your Ubuntu machine (10.0.0.9) as shown in the logs.