98 lines
1.9 KiB
Bash
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 |