work on postgress / will prob remove and work on ib exchanges and symbols
This commit is contained in:
parent
cce5126cb7
commit
a20a11c1aa
16 changed files with 1441 additions and 95 deletions
325
scripts/setup-host-dependencies.sh
Executable file
325
scripts/setup-host-dependencies.sh
Executable file
|
|
@ -0,0 +1,325 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Stock Bot - Host Machine Dependencies Setup Script
|
||||
# This script installs all necessary system dependencies for running the stock bot
|
||||
# with browser automation capabilities
|
||||
|
||||
set -e # Exit on any error
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Helper functions
|
||||
log_info() {
|
||||
echo -e "${BLUE}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_success() {
|
||||
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
||||
}
|
||||
|
||||
log_warning() {
|
||||
echo -e "${YELLOW}[WARNING]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
# Check if running as root
|
||||
check_not_root() {
|
||||
if [ "$EUID" -eq 0 ]; then
|
||||
log_error "Please do not run this script as root. It will use sudo when necessary."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Detect OS
|
||||
detect_os() {
|
||||
if [[ -f /etc/os-release ]]; then
|
||||
. /etc/os-release
|
||||
OS=$ID
|
||||
VERSION=$VERSION_ID
|
||||
log_info "Detected OS: $OS $VERSION"
|
||||
else
|
||||
log_error "Cannot detect OS. This script supports Ubuntu/Debian systems."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Update package lists
|
||||
update_packages() {
|
||||
log_info "Updating package lists..."
|
||||
sudo apt update
|
||||
log_success "Package lists updated"
|
||||
}
|
||||
|
||||
# Install system dependencies for Playwright
|
||||
install_playwright_deps() {
|
||||
log_info "Installing Playwright system dependencies..."
|
||||
|
||||
# Install basic dependencies
|
||||
sudo apt install -y \
|
||||
wget \
|
||||
curl \
|
||||
gnupg \
|
||||
ca-certificates \
|
||||
software-properties-common \
|
||||
apt-transport-https
|
||||
|
||||
# Install browser dependencies
|
||||
sudo apt install -y \
|
||||
libnss3 \
|
||||
libnspr4 \
|
||||
libatk-bridge2.0-0 \
|
||||
libdrm2 \
|
||||
libxkbcommon0 \
|
||||
libxcomposite1 \
|
||||
libxdamage1 \
|
||||
libxrandr2 \
|
||||
libgbm1 \
|
||||
libxss1 \
|
||||
libasound2 \
|
||||
libatspi2.0-0 \
|
||||
libgtk-3-0
|
||||
|
||||
# Install additional media and graphics libraries
|
||||
sudo apt install -y \
|
||||
libgconf-2-4 \
|
||||
libxfixes3 \
|
||||
libxinerama1 \
|
||||
libxi6 \
|
||||
libxrandr2 \
|
||||
libasound2-dev \
|
||||
libpangocairo-1.0-0 \
|
||||
libcairo-gobject2 \
|
||||
libcairo2 \
|
||||
libgdk-pixbuf2.0-0 \
|
||||
libgtk-3-0 \
|
||||
libglib2.0-0 \
|
||||
libpango-1.0-0 \
|
||||
libharfbuzz0b \
|
||||
libfreetype6 \
|
||||
libfontconfig1
|
||||
|
||||
# Install fonts
|
||||
sudo apt install -y \
|
||||
fonts-liberation \
|
||||
fonts-noto-color-emoji \
|
||||
fonts-noto-cjk
|
||||
|
||||
log_success "Playwright system dependencies installed"
|
||||
}
|
||||
|
||||
# Install development tools
|
||||
install_dev_tools() {
|
||||
log_info "Installing development tools..."
|
||||
|
||||
sudo apt install -y \
|
||||
build-essential \
|
||||
git \
|
||||
curl \
|
||||
wget \
|
||||
unzip \
|
||||
vim \
|
||||
htop \
|
||||
jq \
|
||||
tree
|
||||
|
||||
log_success "Development tools installed"
|
||||
}
|
||||
|
||||
# Install Docker (if not already installed)
|
||||
install_docker() {
|
||||
if command -v docker &> /dev/null; then
|
||||
log_info "Docker is already installed"
|
||||
return
|
||||
fi
|
||||
|
||||
log_info "Installing Docker..."
|
||||
|
||||
# Add Docker's official GPG key
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
|
||||
|
||||
# Add Docker repository
|
||||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||
|
||||
# Update package lists and install Docker
|
||||
sudo apt update
|
||||
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
||||
|
||||
# Add user to docker group
|
||||
sudo usermod -aG docker $USER
|
||||
|
||||
log_success "Docker installed. Please log out and back in for group changes to take effect."
|
||||
}
|
||||
|
||||
# Install Node.js and Bun (if not already installed)
|
||||
install_runtime() {
|
||||
# Check if Bun is installed
|
||||
if command -v bun &> /dev/null; then
|
||||
log_info "Bun is already installed: $(bun --version)"
|
||||
else
|
||||
log_info "Installing Bun..."
|
||||
curl -fsSL https://bun.sh/install | bash
|
||||
export PATH="$HOME/.bun/bin:$PATH"
|
||||
log_success "Bun installed"
|
||||
fi
|
||||
|
||||
# Check if Node.js is installed
|
||||
if command -v node &> /dev/null; then
|
||||
log_info "Node.js is already installed: $(node --version)"
|
||||
else
|
||||
log_info "Installing Node.js..."
|
||||
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
|
||||
sudo apt install -y nodejs
|
||||
log_success "Node.js installed"
|
||||
fi
|
||||
}
|
||||
|
||||
# Install additional system dependencies for proxy and networking
|
||||
install_network_deps() {
|
||||
log_info "Installing networking and proxy dependencies..."
|
||||
|
||||
sudo apt install -y \
|
||||
net-tools \
|
||||
iputils-ping \
|
||||
telnet \
|
||||
netcat \
|
||||
socat \
|
||||
proxychains4 \
|
||||
tor \
|
||||
privoxy
|
||||
|
||||
log_success "Networking dependencies installed"
|
||||
}
|
||||
|
||||
# Install system monitoring tools
|
||||
install_monitoring_tools() {
|
||||
log_info "Installing system monitoring tools..."
|
||||
|
||||
sudo apt install -y \
|
||||
htop \
|
||||
iotop \
|
||||
nethogs \
|
||||
iftop \
|
||||
dstat \
|
||||
sysstat \
|
||||
lsof
|
||||
|
||||
log_success "Monitoring tools installed"
|
||||
}
|
||||
|
||||
# Configure system limits for better performance
|
||||
configure_system_limits() {
|
||||
log_info "Configuring system limits..."
|
||||
|
||||
# Increase file descriptor limits
|
||||
echo "fs.file-max = 2097152" | sudo tee -a /etc/sysctl.conf
|
||||
echo "* soft nofile 65536" | sudo tee -a /etc/security/limits.conf
|
||||
echo "* hard nofile 65536" | sudo tee -a /etc/security/limits.conf
|
||||
|
||||
# Apply sysctl changes
|
||||
sudo sysctl -p
|
||||
|
||||
log_success "System limits configured"
|
||||
}
|
||||
|
||||
# Install Playwright browsers
|
||||
install_playwright_browsers() {
|
||||
log_info "Installing Playwright browsers..."
|
||||
|
||||
# Navigate to project directory
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
# Install Playwright browsers
|
||||
bunx playwright install chromium
|
||||
bunx playwright install firefox
|
||||
bunx playwright install webkit
|
||||
|
||||
log_success "Playwright browsers installed"
|
||||
}
|
||||
|
||||
# Main installation function
|
||||
main() {
|
||||
log_info "Starting Stock Bot host dependencies setup..."
|
||||
|
||||
check_not_root
|
||||
detect_os
|
||||
|
||||
# Only proceed if Ubuntu/Debian
|
||||
if [[ "$OS" != "ubuntu" && "$OS" != "debian" ]]; then
|
||||
log_error "This script only supports Ubuntu and Debian systems"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Run installation steps
|
||||
update_packages
|
||||
install_dev_tools
|
||||
install_playwright_deps
|
||||
install_runtime
|
||||
install_docker
|
||||
install_network_deps
|
||||
install_monitoring_tools
|
||||
configure_system_limits
|
||||
install_playwright_browsers
|
||||
|
||||
log_success "Host dependencies setup completed!"
|
||||
log_info "Next steps:"
|
||||
echo " 1. Log out and back in (or run 'newgrp docker') to activate Docker group membership"
|
||||
echo " 2. Run 'source ~/.bashrc' to update PATH for Bun"
|
||||
echo " 3. Navigate to your project directory and run 'bun install'"
|
||||
echo " 4. Test the setup with 'bun run dev'"
|
||||
}
|
||||
|
||||
# Show help
|
||||
show_help() {
|
||||
echo "Stock Bot Host Dependencies Setup Script"
|
||||
echo ""
|
||||
echo "Usage: $0 [OPTIONS]"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " -h, --help Show this help message"
|
||||
echo " --skip-docker Skip Docker installation"
|
||||
echo " --minimal Install only essential dependencies"
|
||||
echo ""
|
||||
echo "This script installs all necessary system dependencies for:"
|
||||
echo " - Playwright browser automation"
|
||||
echo " - Docker containers"
|
||||
echo " - Development tools"
|
||||
echo " - Network utilities"
|
||||
echo " - System monitoring tools"
|
||||
}
|
||||
|
||||
# Parse command line arguments
|
||||
SKIP_DOCKER=false
|
||||
MINIMAL=false
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
-h|--help)
|
||||
show_help
|
||||
exit 0
|
||||
;;
|
||||
--skip-docker)
|
||||
SKIP_DOCKER=true
|
||||
shift
|
||||
;;
|
||||
--minimal)
|
||||
MINIMAL=true
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
log_error "Unknown option: $1"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Run main function
|
||||
main
|
||||
134
scripts/setup-playwright.sh
Executable file
134
scripts/setup-playwright.sh
Executable file
|
|
@ -0,0 +1,134 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Playwright Setup Script for Stock Bot
|
||||
# This script specifically handles Playwright installation and browser setup
|
||||
|
||||
set -e
|
||||
|
||||
# Colors
|
||||
GREEN='\033[0;32m'
|
||||
BLUE='\033[0;34m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m'
|
||||
|
||||
log_info() {
|
||||
echo -e "${BLUE}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_success() {
|
||||
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
# Check if we're in the project directory
|
||||
check_project_directory() {
|
||||
if [[ ! -f "package.json" ]]; then
|
||||
log_error "Please run this script from the project root directory"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Install Playwright dependencies
|
||||
install_playwright_deps() {
|
||||
log_info "Installing Playwright system dependencies..."
|
||||
bunx playwright install-deps chromium
|
||||
log_success "Playwright system dependencies installed"
|
||||
}
|
||||
|
||||
# Install Playwright browsers
|
||||
install_browsers() {
|
||||
log_info "Installing Playwright browsers..."
|
||||
|
||||
# Install all browsers
|
||||
bunx playwright install chromium
|
||||
bunx playwright install firefox
|
||||
bunx playwright install webkit
|
||||
|
||||
log_success "All Playwright browsers installed"
|
||||
}
|
||||
|
||||
# Test Playwright installation
|
||||
test_playwright() {
|
||||
log_info "Testing Playwright installation..."
|
||||
|
||||
# Create a simple test script
|
||||
cat > /tmp/test-playwright.js << 'EOF'
|
||||
const { chromium } = require('playwright');
|
||||
|
||||
(async () => {
|
||||
try {
|
||||
const browser = await chromium.launch({ headless: true });
|
||||
const page = await browser.newPage();
|
||||
await page.goto('https://example.com');
|
||||
const title = await page.title();
|
||||
console.log('✅ Playwright test successful! Page title:', title);
|
||||
await browser.close();
|
||||
} catch (error) {
|
||||
console.error('❌ Playwright test failed:', error.message);
|
||||
process.exit(1);
|
||||
}
|
||||
})();
|
||||
EOF
|
||||
|
||||
# Run the test
|
||||
node /tmp/test-playwright.js
|
||||
|
||||
# Clean up
|
||||
rm /tmp/test-playwright.js
|
||||
|
||||
log_success "Playwright test completed successfully"
|
||||
}
|
||||
|
||||
# Main function
|
||||
main() {
|
||||
log_info "Setting up Playwright for Stock Bot..."
|
||||
|
||||
check_project_directory
|
||||
install_playwright_deps
|
||||
install_browsers
|
||||
test_playwright
|
||||
|
||||
log_success "Playwright setup completed!"
|
||||
log_info "You can now run your browser automation scripts"
|
||||
}
|
||||
|
||||
# Show help
|
||||
show_help() {
|
||||
echo "Playwright Setup Script for Stock Bot"
|
||||
echo ""
|
||||
echo "Usage: $0 [OPTIONS]"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " -h, --help Show this help message"
|
||||
echo " --test-only Only run the Playwright test"
|
||||
echo " --deps-only Only install system dependencies"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Parse arguments
|
||||
case "${1:-}" in
|
||||
-h|--help)
|
||||
show_help
|
||||
exit 0
|
||||
;;
|
||||
--test-only)
|
||||
check_project_directory
|
||||
test_playwright
|
||||
exit 0
|
||||
;;
|
||||
--deps-only)
|
||||
install_playwright_deps
|
||||
exit 0
|
||||
;;
|
||||
"")
|
||||
main
|
||||
;;
|
||||
*)
|
||||
log_error "Unknown option: $1"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Loading…
Add table
Add a link
Reference in a new issue