Files
2026-06-21 03:53:06 +03:00

98 lines
1.9 KiB
Bash

# Allow ssh, http, https
ufw allow http
ufw allow https
ufw allow ssh
ufw allow 3000
# Enable ufw
ufw enable
# Install nginx/bind9
apt install -y nginx
apt install -y bind9
echo 'worker_rlimit_nofile 4096;
events {
worker_connections 4096;
}
http {
upstream rr {
server 127.0.0.1:3001;
server 127.0.0.1:3002;
# server 127.0.0.1:3003;
}
upstream 1 {
server 127.0.0.1:3001;
}
upstream 2 {
server 127.0.0.1:3002;
}
upstream 3 {
server 127.0.0.1:3003;
}
map $arg_shard $pool {
default "rr";
1 "1";
2 "2";
# 3 "3";
}
server {
listen 80;
location / {
proxy_pass http://$pool;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
# enable WebSockets
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
}' > /etc/nginx/nginx.conf
/etc/init.d/nginx reload
# Install git
apt update
apt install -y git
# Clone application code
git clone https://github.com/howardchung/watchparty
# Install docker
curl -sSL https://get.docker.com/ | sh
# Start Redis
sudo docker run --log-opt max-size=1g -d --name redis --restart=always --net=host redis
# Start Postgres
sudo docker run --log-opt max-size=1g -d --name postgres --restart=always -e POSTGRES_PASSWORD=password --net=host -v $PWD/sql/:/docker-entrypoint-initdb.d/ postgres
# Install NodeJS
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs
# Set up certbot or Cloudflare HTTPS
# Build watchparty
npm run build
# Set .env config
echo '
DATABASE_URL=postgresql://postgres@localhost:5432/postgres?sslmode=disable
REDIS_URL=localhost:6379
' > .env
# Install PM2 globally
npm install -g pm2
# PM2 start
npm run pm2
# Run on startup
./node_modules/pm2/bin/pm2 startup
./node_modules/pm2/bin/pm2 save