Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save midoghranek/59eedbe37be45f18681a6e73075e1e32 to your computer and use it in GitHub Desktop.
Save midoghranek/59eedbe37be45f18681a6e73075e1e32 to your computer and use it in GitHub Desktop.
Setup NextJS app on Digital Ocean Ubuntu server Full Terminal Commands Step by Step
#nginx config file for Nextjs App
#place in /etc/nginx/sites-available/name_of_config_file
server {
listen 80;
server_name domainname.com;
gzip on;
gzip_proxied any;
gzip_types application/javascript application/x-javascript text/css text/javascript;
gzip_comp_level 5;
gzip_buffers 16 8k;
gzip_min_length 256;
location /_next/static/ {
alias /var/www/name_of_app/.next/static/;
expires 365d;
access_log off;
}
location / {
proxy_pass http://127.0.0.1:3000; #change to 3001 for second app, but make sure second nextjs app starts on new port in packages.json "start": "next start -p 3001",
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
#Setup NextJS on Digital Ocean Ubuntu server Terminal Commands
#based on my YouTube video
#login to server
ssh root@ip_address
#Upgrade Server
sudo apt update && sudo apt upgrade
#Install NGINX and Certbot
sudo apt install nginx certbot python3-certbot-nginx
#Allow Firewall Access
sudo ufw allow "Nginx Full"
ufw allow OpenSSH
ufw enable
#Install NPM
apt install npm
#Install pm2
npm install -g pm2
#Check pm2 is working
pm2 status
#go to www root
cd /var/www
#install nvm and nodejs
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
exec $SHELL
nvm install --lts
#Create NextJS App or clone here
npx create-next-app@latest name_of_app
#Go inside new app directory
cd name_of_app
#(if you cloned the repo from somewhere else, make sure to npm install first
npm install)
#Build it
npm run build
#Create NGINX config file and edit it
cd /etc/nginx/sites-available
touch name_of_app
nano name_of_app
[SEE OTHER GIST FOR CONFIG FILE CONTENTS]
#https://gist.github.com/oelbaga/5019647715e68815c602ff05cff2416e#file-ubuntu-nextjs-nginx-config-file
#Option1 Syslink the file in sites-enabled
sudo ln -s /etc/nginx/sites-available/name_of_app /etc/nginx/sites-enabled/name_of_app
#Option 2 No need to use sites-enabled
nano /etc/nginx/nginx.conf
change include /etc/nginx/sites-enabled/*; to include /etc/nginx/sites-available/*;
#make Sure NGINX file is good
nginx -t
#remove the default config files
cd /etc/nginx/sites-available
rm default
cd /etc/nginx/sites-enabled
rm default
#restart NGINX to reload config files
systemctl restart nginx
#Go to site directory and launch it with pm2
cd /var/www/name_of_app
#launch app with pm2
pm2 start npm --name name_of_app -- start
#Create SSL with letsencryot
sudo certbot --nginx -d domainname.com
————— helpful commands ————
pm2 start npm --name name_of_app -- start (make sure you're inside the site's directory first)
systemctl restart nginx (restart NGINX)
sudo certbot --nginx -d domainname.com (Add SSL)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment