VPS Deployment
Deploy Friday Dev on a cloud VPS (DigitalOcean, Linode, Vultr, AWS, etc.).
Recommended VPS Specs
| Provider | Plan | Specs | Monthly Cost |
|---|---|---|---|
| DigitalOcean | Basic Droplet | 2 vCPU, 4 GB RAM | $24 |
| Linode | Linode 4GB | 2 vCPU, 4 GB RAM | $24 |
| Vultr | Cloud Compute | 2 vCPU, 4 GB RAM | $24 |
| AWS | t3.medium | 2 vCPU, 4 GB RAM | ~$30 |
| Hetzner | CX21 | 2 vCPU, 4 GB RAM | €5 |
Quick Deploy Script
SSH into your VPS and run:
curl -fsSL https://friday-dev.com/deploy.sh | bash -s -- \
--domain your-domain.com \
--email your@email.com
This script will:
- Update system packages
- Install dependencies (Nginx, Certbot)
- Install Friday Dev
- Configure Nginx with SSL
- Set up systemd service
Manual Deployment
Step 1: Initial Setup
# Update system
sudo apt update && sudo apt upgrade -y
# Install dependencies
sudo apt install -y curl git build-essential pkg-config libssl-dev nginx certbot python3-certbot-nginx
Step 2: Install Rust (Optional, for building from source)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source $HOME/.cargo/env
Step 3: Install Node.js (For frontend build)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
sudo npm install -g pnpm
Step 4: Download Friday Dev
Option A: Download Binary
wget https://github.com/friday-dev-team/friday-dev/releases/latest/download/friday-dev-linux-x64.tar.gz
tar -xzf friday-dev-linux-x64.tar.gz
sudo mv friday-dev /usr/local/bin/
Option B: Build from Source
git clone https://github.com/friday-dev-team/friday-dev.git
cd friday-dev
# Build backend
cargo build --release --package server
# Build frontend
cd frontend && pnpm install && pnpm run build && cd ..
# Install
sudo cp target/release/server /usr/local/bin/friday-dev
sudo mkdir -p /var/www/friday-dev
sudo cp -r frontend/dist/* /var/www/friday-dev/
Step 5: Set Up Directories
# Create data directory
sudo mkdir -p /var/lib/friday-dev
sudo chown $USER:$USER /var/lib/friday-dev
# Create config directory
sudo mkdir -p /etc/friday-dev
Step 6: Configure Environment
Create /etc/friday-dev/.env:
DATABASE_URL=sqlite:/var/lib/friday-dev/db.sqlite?mode=rwc
PORT=3000
RUST_LOG=info
GEMINI_API_KEY=your-gemini-api-key
Step 7: Create Systemd Service
Create /etc/systemd/system/friday-dev.service:
[Unit]
Description=Friday Dev - AI Development Platform
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/var/lib/friday-dev
EnvironmentFile=/etc/friday-dev/.env
ExecStart=/usr/local/bin/friday-dev
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Enable and start:
sudo systemctl daemon-reload
sudo systemctl enable friday-dev
sudo systemctl start friday-dev
Step 8: Configure Nginx
Create /etc/nginx/sites-available/friday-dev:
server {
listen 80;
server_name your-domain.com www.your-domain.com;
# Frontend
root /var/www/friday-dev;
index index.html;
# Gzip
gzip on;
gzip_types text/plain text/css application/json application/javascript;
# API Proxy
location /api {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
proxy_read_timeout 86400;
}
# WebSocket
location /ws {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 86400;
}
# SPA Fallback
location / {
try_files $uri $uri/ /index.html;
}
}
Enable and test:
sudo ln -sf /etc/nginx/sites-available/friday-dev /etc/nginx/sites-enabled/
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx
Step 9: Set Up SSL
sudo certbot --nginx -d your-domain.com -d www.your-domain.com \
--non-interactive --agree-tos -m your@email.com
Step 10: Verify Deployment
# Check service status
sudo systemctl status friday-dev
# Check logs
sudo journalctl -u friday-dev -f
# Test endpoint
curl https://your-domain.com/api/health
DNS Configuration
Point your domain to your VPS IP:
| Type | Name | Value | TTL |
|---|---|---|---|
| A | @ | YOUR_VPS_IP | 300 |
| A | www | YOUR_VPS_IP | 300 |
Firewall
# Allow SSH, HTTP, HTTPS
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Enable firewall
sudo ufw enable
Provider-Specific Guides
DigitalOcean
# Create droplet with doctl
doctl compute droplet create friday-dev \
--image ubuntu-22-04-x64 \
--size s-2vcpu-4gb \
--region nyc1
AWS EC2
- Launch t3.medium with Ubuntu 22.04
- Configure security group (ports 22, 80, 443)
- Assign Elastic IP
- Follow manual deployment steps
Linode
# Create linode with CLI
linode-cli linodes create \
--type g6-standard-2 \
--region us-east \
--image linode/ubuntu22.04 \
--root_pass "secure-password" \
--label friday-dev
Monitoring
Set Up Monitoring
# Install monitoring agent (e.g., Netdata)
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
Health Check Script
Create /usr/local/bin/friday-dev-health.sh:
#!/bin/bash
STATUS=$(curl -s http://localhost:3000/api/health | jq -r '.status')
if [ "$STATUS" != "ok" ]; then
echo "Friday Dev is unhealthy, restarting..."
systemctl restart friday-dev
fi
Add to crontab:
*/5 * * * * /usr/local/bin/friday-dev-health.sh
Backup
Automated Backup Script
Create /usr/local/bin/backup-friday-dev.sh:
#!/bin/bash
BACKUP_DIR="/backups/friday-dev"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
# Backup database
cp /var/lib/friday-dev/db.sqlite "$BACKUP_DIR/db_$DATE.sqlite"
# Upload to S3 (optional)
# aws s3 cp "$BACKUP_DIR/db_$DATE.sqlite" s3://your-bucket/backups/
# Keep last 7 days
find $BACKUP_DIR -mtime +7 -delete
Add to crontab:
0 3 * * * /usr/local/bin/backup-friday-dev.sh
Updating
Update Script
#!/bin/bash
# Stop service
sudo systemctl stop friday-dev
# Backup current version
sudo cp /usr/local/bin/friday-dev /usr/local/bin/friday-dev.bak
# Download new version
wget https://github.com/friday-dev-team/friday-dev/releases/latest/download/friday-dev-linux-x64.tar.gz -O /tmp/friday-dev.tar.gz
tar -xzf /tmp/friday-dev.tar.gz -C /tmp
sudo mv /tmp/friday-dev /usr/local/bin/
# Restart service
sudo systemctl start friday-dev
# Verify
curl https://your-domain.com/api/health
Troubleshooting
Service Won't Start
# Check logs
sudo journalctl -u friday-dev -n 100
# Check permissions
ls -la /var/lib/friday-dev/
# Test binary directly
/usr/local/bin/friday-dev --version
502 Bad Gateway
# Check if backend is running
curl http://localhost:3000/api/health
# Check Nginx config
sudo nginx -t
# Check Nginx error logs
sudo tail -f /var/log/nginx/error.log
SSL Issues
# Renew certificate manually
sudo certbot renew
# Check certificate status
sudo certbot certificates
Next Steps
- Docker Deployment - Container alternative
- Self-Hosted Guide - Detailed configuration
- API Reference - API documentation