Fix minor typo errors | Change Nginx for Caddy | Consolidate templates in this repo

This commit is contained in:
2025-01-24 02:57:53 -03:00
parent 21515daef1
commit ddf0301463
15 changed files with 254 additions and 35 deletions

View File

@@ -2,12 +2,12 @@
source ./user/create_user.sh source ./user/create_user.sh
source ./user/ssh_config.sh source ./user/ssh_config.sh
source ./web/install_nginx.sh source ./web/install_caddy.sh
source ./web/setup_ufw.sh source ./web/setup_ufw.sh
source ./docker/install_docker.sh source ./docker/install_docker.sh
source ./utils/install_vim.sh source ./utils/install_vim.sh
source ./utils/install_zsh.sh source ./utils/install_zsh.sh
source ./monitoring/install_prometehus.sh source ./monitoring/install_prometheus.sh
chmod +x ./user/create_user.sh chmod +x ./user/create_user.sh
chmod +x ./user/ssh_config.sh chmod +x ./user/ssh_config.sh
@@ -16,7 +16,7 @@ chmod +x ./web/setup_ufw.sh
chmod +x ./docker/install_docker.sh chmod +x ./docker/install_docker.sh
chmod +x ./utils/install_vim.sh chmod +x ./utils/install_vim.sh
chmod +x ./utils/install_zsh.sh chmod +x ./utils/install_zsh.sh
chmod +x ./monitoring/install_prometehus.sh chmod +x ./monitoring/install_prometheus.sh
if [ -z "$1" ]; then if [ -z "$1" ]; then
echo "Usage: $0 <username>" echo "Usage: $0 <username>"
@@ -27,7 +27,7 @@ fi
install_docker install_docker
# Web # Web
install_nginx install_caddy $1
setup_ufw setup_ufw
# User # User
@@ -39,4 +39,4 @@ install_vim
install_zsh $1 install_zsh $1
# Monitoring # Monitoring
install_prometehus $1 install_prometheus $1

View File

@@ -1,16 +0,0 @@
#!/bin/bash
function install_prometehus() {
REPO_URL="https://raw.githubusercontent.com/elAgala/monitoring-template/master"
username="$1"
monitoring_dir="/home/$username/monitoring"
echo "[ MONITOR ]: Starting Prometehus setup"
mkdir -p "$monitoring_dir"
wget "$REPO_URL/docker-compose.yml" -O "$monitoring_dir/docker-compose.yml"
wget "$REPO_URL/prometheus.yml" -O "$monitoring_dir/prometheus.yml"
cd "$monitoring_dir"
echo "[ MONITOR ]: Prometheus Installed. Starting on docker container"
sudo docker-compose up -d
echo "[ MONITOR ]: Prometehus up & running on port 9090"
}

View File

@@ -0,0 +1,17 @@
#!/bin/bash
function install_prometheus() {
REPO_URL="https://raw.githubusercontent.com/elAgala/server-initializer/master"
TEMPLATE_PATH="/templates/monitoring"
username="$1"
monitoring_dir="/home/$username/monitoring"
echo "[ MONITOR ]: Starting Prometheus setup"
mkdir -p "$monitoring_dir"
wget "$REPO_URL/$TEMPLATE_PATH/docker-compose.yml" -O "$monitoring_dir/docker-compose.yml"
wget "$REPO_URL/$TEMPLATE_PATH/prometheus.yml" -O "$monitoring_dir/prometheus.yml"
cd "$monitoring_dir"
echo "[ MONITOR ]: Prometheus Installed. Starting on docker container"
sudo docker compose up -d
echo "[ MONITOR ]: Prometheus up & running on port 9090"
}

10
templates/caddy/Caddyfile Normal file
View File

@@ -0,0 +1,10 @@
# Static content server
domain.com {
root * /srv/static
file_server
}
# Reverse proxy
ssl.test.benitez.ar {
reverse_proxy * http://localhost:9090
}

View File

@@ -0,0 +1,14 @@
services:
caddy:
image: caddy:latest
container_name: caddy
network_mode: "host" # Allow access to local networks (EX: Backend running on port 3000)
ports:
- "80:80"
- "443:443"
volumes:
- ./settings:/etc/caddy
- ./static:/srv/static
- ./caddy_data:/data
- ./caddy_config:/config
restart: unless-stopped

View File

@@ -0,0 +1,39 @@
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
restart: always
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
networks:
- monitoring_net
grafana:
image: grafana/grafana:latest
container_name: grafana
restart: always
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=YOUR_PASSWORD
- GE_SERVER_ROOT_URL=YOUR_URL
depends_on:
- prometheus
networks:
- monitoring_net
node_exporter:
image: prom/node-exporter:latest
container_name: node-exporter
restart: always
ports:
- "9100:9100"
networks:
- monitoring_net
networks:
monitoring_net:
driver: bridge

View File

@@ -0,0 +1,25 @@
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
restart: always
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
networks:
- monitoring_net
node_exporter:
image: prom/node-exporter:latest
container_name: node-exporter
restart: always
ports:
- "9100:9100"
networks:
- monitoring_net
networks:
monitoring_net:
driver: bridge

View File

@@ -0,0 +1,12 @@
global:
scrape_interval: 5s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node'
static_configs:
- targets: ['node-exporter:9100']

View File

@@ -0,0 +1,22 @@
services:
nginx:
image: nginx:latest
ports:
- "80:80"
- "443:443"
volumes:
- ./static:/var/www/static # For static content delivery
- ./nginx/conf.d:/etc/nginx/conf.d # Your sites conf files
- ./nginx/nginx.conf:/etc/nginx/nginx.conf # Main NginX config file
- ./certbot/www:/var/www/certbot
- ./certbot/conf:/etc/letsencrypt # Stores certificates
restart: unless-stopped
depends_on:
- certbot
certbot:
image: certbot/certbot
volumes:
- ./certbot/www:/var/www/certbot
- ./certbot/conf:/etc/letsencrypt
restart: unless-stopped

View File

@@ -0,0 +1,38 @@
# Reverse proxy
server {
listen 80;
server_name api.domain.com;
server_tokens off;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name api.domain.com;
server_tokens off;
ssl_certificate /etc/letsencrypt/live/api.domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/api.domain.com/privkey.pem;
location / {
proxy_pass http://localhost:{LOCAL_NETWORK_PORT}/;
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-Host $host;
# WebSocket support
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
# Change upload max size
client_max_body_size 50M;
}
}

View File

@@ -0,0 +1,29 @@
# Static delivery
server {
listen 80;
server_name test.domain.com;
server_tokens off;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name test.domain.com;
server_tokens off;
ssl_certificate /etc/letsencrypt/live/test.domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/test.domain.com/privkey.pem;
location / {
root /var/www/static;
index index.html;
}
}

View File

@@ -0,0 +1,24 @@
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf; # Include all childs in ./conf.d
}

View File

@@ -15,5 +15,8 @@ function create_user() {
sudo usermod -aG docker $username sudo usermod -aG docker $username
echo "[ USER ]: User added to the following groupps (sudo, www-data, docker)" echo "[ USER ]: User added to the following groupps (sudo, www-data, docker)"
echo "[ USER ]: Setting ownership of /home/$username folder"
sudo chown -R $username:$username /home/$username
echo "[ USER ]: User setup finished" echo "[ USER ]: User setup finished"
} }

16
web/install_caddy.sh Normal file
View File

@@ -0,0 +1,16 @@
#!/bin/bash
function install_caddy() {
REPO_URL="https://raw.githubusercontent.com/elAgala/server-initializer/master"
TEMPLATE_PATH="/templates/caddy"
username="$1"
caddy_dir="/home/$username/caddy"
echo "[ WEB ]: Starting Caddy setup"
mkdir -p "$caddy_dir"
mkdir -p "$caddy_dir/settings"
wget "$REPO_URL/$TEMPLATE_PATH/docker-compose.yml" -O "$caddy_dir/docker-compose.yml"
wget "$REPO_URL/$TEMPLATE_PATH/Caddyfile" -O "$caddy_dir/settings/Caddyfile"
echo "[ WEB ]: Caddy setup succesfully. You can find the Caddyfile under /home/$username/caddy/settings"
}

View File

@@ -1,14 +0,0 @@
#!/bin/bash
function install_nginx() {
echo "[ WEB ]: Starting NginX setup"
if ! dpkg -l | grep -q nginx; then
sudo apt update
sudo apt install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx
echo "[ WEB ]: Installed NginX succesfully"
else
echo "[ WEB ]: NginX already installed, skipping..."
fi
}