Authentication using Spring Boot 3 and Angular 16
- Clone
git clone https://github.com/lelup24/authentication.git- run a postgresql database with docker or your own
docker compose up -d- start backend or run in your IDE
./gradlew bootRun- go to backend folder and run
npm i- go to frontend folder and start frontend
ng serveopenssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:4096openssl rsa -pubout -in private_key.pem -out public_key.pemadduser peter
usermod -aG sudo peterssh-keygen -b 4096Login to Server
mkdir -p ~/.ssh
sudo nano authorized_keys
chown -R peter ~/.ssh
chmod -R 700 ~/.sshsudo nano ~/.ssh/configAdd this to the config-file
Host tutorial
HostName 85.215.114.254
IdentityFile ~/.ssh/tutorial
User peter
sudo nano /etc/ssh/sshd_configChange this
PasswordAuthentication no
sudo systemctl restart sshsudo apt-get update && sudo apt-get upgrade
sudo apt install -y openjdk-17-jdksudo apt install postgresql postgresql-contrib
sudo -u postgres psql
\password postgresssh -L 5555:localhost:5432 tutorialmkdir /var/backend
sudo chown peter /var/backend
sudo chmod 700 /var/backend
scp backend-0.0.1-SNAPSHOT.jar tutorial:/var/backend
sudo nano /etc/systemd/system/tutorial.serviceFüge den folgenden Inhalt hinzu:
[Unit]
Description=Tutorial
After=syslog.target
[Service]
User=peter
ExecStart=/usr/bin/java -Duser.timezone=CET -DDB_URL=jdbc:postgresql://localhost:5432/tutorial -Dspring.profiles.active=prod -jar /var/backend/backend-0.0.1-SNAPSHOT.jar SuccessExitStatus=143
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
sudo systemctl start tutorial.service
curl http://localhost:8080/api/v1/unsecuredsudo apt install nginx
sudo ufw allow 'Nginx Full'
sudo ufw allow 22
systemctl status nginxcd /var/www/html/
sudo mkdir frontend
sudo chown -R peter frontend/
sudo chmod -R 755 frontend/
ng build
scp -r dist/frontend/* tutorial:/var/www/html/frontend
cd /etc/nginx/sites-available
sudo nano tutorialFüge den folgenden Inhalt hinzu:
server {
listen 80;
listen [::]:80;
root /var/www/html/frontend;
index index.html;
server_name talentschmiede.org;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri$args $uri$args/ /index.html;
}
location /api {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~* \.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$ {
expires 1h;
add_header Cache-Control "public, no-transform";
}
}sudo ln -s /etc/nginx/sites-available/tutorial /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginxsudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --nginxsudo apt-get update
sudo apt-get install ca-certificates curl gnupgsudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpgecho \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugincd backend
docker build -t tutorial-backend:latest .cd frontend
docker build -t tutorial-frontend:latest .docker logindocker tag tutorial-backend:latest lelup24/tutorial-backend:latestdocker push lelup24/tutorial-backend:latestdocker tag tutorial-frontend:latest lelup24/tutorial-frontend:latestdocker push lelup24/tutorial-frontend:latestdocker compose -f docker-compose.prod.yml up