El servidor web Caddy es un servidor web de código abierto escrito en Go. Utiliza la biblioteca estándar Go para su funcionalidad HTTP y es compatible con HTTPS de forma nativa, lo que significa que se encarga de la gestión de su certificado SSL. En este artículo, vamos a implementar un sitio web estático en un servidor web caddy en un VPS. estaremos usando ubuntu
requisitos previos
- Experiencia básica en Linux
- Un VP de Ubuntu (nuevo/existente)
- Conocimientos básicos de HTML y CSS
- Nombre de dominio
Paso 1: inicie sesión en su VPS nuevo/existente y asegúrese de que sus paquetes estén actualizados.
ssh user@<vps-ip/hostname> sudo apt update && sudo apt upgrade
Paso 2: Instale la última versión del lenguaje de programación Go. El siguiente comando instalará la última versión de Go Snap (independientemente de la versión que instale, asegúrese de que sea superior a 1.14.2)
sudo snap install go --classic
Paso 3: Descargue e instale la última versión de xcaddy, xcaddy nos ayuda a instalar caddy fácilmente
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl -1sLf 'https://dl.cloudsmith.io/public/caddy/xcaddy/gpg.key' | sudo apt-key add - curl -1sLf 'https://dl.cloudsmith.io/public/caddy/xcaddy/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-xcaddy.list sudo apt update sudo apt install xcaddy
Paso 4: Después de instalar xcaddy ahora necesitamos instalar el servidor web Caddy. Para eso sigue los siguientes comandos
mkdir ~/caddyserver cd ~/caddyserver // for only caddy build xcaddy build // for building caddy with some plugins xcaddy build --with=github.com/caddy-dns/cloudflare sudo mv caddy /usr/bin
Para verificar si caddy se instaló correctamente o no, puede usar el siguiente comando, si imprime la versión de caddy, entonces está instalado
caddy version //output v2.4.2 h1:chB106RlsIaY4mVEyq9OQM5g/9lHYVputo/LAX2ndFg=
Paso 5: configure un servicio systemd para que Caddy pueda iniciarse automáticamente al iniciar el sistema
sudo groupadd --system caddy sudo useradd --system --gid caddy --create-home --home-dir /var/lib/caddy --shell /usr/sbin/nologin --comment "Caddy web server | learned from GFG" caddy
Como caddy requiere su propio grupo y usuario para ejecutar el proceso systemd, el primer comando crea un nuevo caddy de grupo (puede dar su propio nombre, pero será útil para identificarlo en caso de solución de problemas) y el segundo comando crea un usuario nuevamente llamado caddy y lo asigna al grupo de caddy. El comando nologin dice que no puede iniciar sesión en Shell como usuario caddy.
Paso 6: Cree un archivo de servicio de caddy y agréguele los permisos necesarios.
sudo nano /etc/systemd/system/caddy.service
Copie y pegue el siguiente archivo de servicio del sistema precompilado del repositorio de Caddy
# caddy.service # # For using Caddy with a config file. # # Make sure the ExecStart and ExecReload commands are correct # for your installation. # # See https://caddyserver.com/docs/install for instructions. # # WARNING: This service does not use the --resume flag, so if you # use the API to make changes, they will be overwritten by the # Caddyfile next time the service is restarted. If you intend to # use Caddy's API to configure it, add the --resume flag to the # `caddy run` command or use the caddy-api.service file instead. [Unit] Description=Caddy Documentation=https://caddyserver.com/docs/ After=network.target network-online.target Requires=network-online.target [Service] Type=notify User=caddy Group=caddy ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile TimeoutStopSec=5s LimitNOFILE=1048576 LimitNPROC=512 PrivateTmp=true ProtectSystem=full AmbientCapabilities=CAP_NET_BIND_SERVICE [Install] WantedBy=multi-user.target
Asignar permiso para que solo el usuario root pueda modificarlo
sudo chmod 644 /etc/systemd/system/caddy.service
Paso 7: ahora necesitamos establecer permisos de directorio para los directorios de caddy
// 755 permission gives root user rwx but others only rx for caddy binary sudo chmod 755 /usr/bin/caddy // creating caddy configuration folder sudo mkdir /etc/caddy // creating caddy config file sudo touch /etc/caddy/Caddyfile //giving ownership of caddy config folder to both root user and caddy group sudo chown -R root:caddy /etc/caddy // creating ssl folder for caddy to store the fetched ssl certificates sudo mkdir /etc/ssl/caddy //giving ownership of caddy config folder to both root user and caddy group sudo chown -R root:caddy /etc/ssl/caddy // 770 ensures that caddy can write to the folder and it can't be executed sudo chmod 0770 /etc/ssl/caddy // create and assign ownership of website contents to caddy uper and group sudo mkdir /var/www/public_html sudo chown caddy:caddy /var/www/public_html
Paso 8: cree un archivo index.html simple en la carpeta public_html que creamos en el paso anterior
sudo nano /var/www/public_html/index.html
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="viewport"content="width=device-width,initial-scale=1.0"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css"rel="stylesheet"integrity="sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl"crossorigin="anonymous"> <title>Host Static website using Caddy web server</title> </head> <body class="text-center"> <div class="jumbotron text-center"> <h1>Welcome to GeeksForGeeks</h1> <h2 class="h2 card-title">This article explains how to host static websites using caddy webserver</h2> <h6 class="h6 card-text">Thank You for Reading</h6> </div> </body> </html>
Paso 9: Configurando Caddy para esto necesitas editar el archivo de configuración que creamos en el paso 7.
sudo nano /etc/caddy/Caddyfile
A continuación se muestra un archivo de configuración de caddy de muestra .
example.com { tls { email hostmaster@example.com } root * /var/www/public_html encode gzip file_server header / { Content-Security-Policy = "upgrade-insecure-requests; default-src 'self'; style-src 'self'; script-src 'self'; img-src 'self'; object-src 'self'; worker-src 'self'; manifest-src 'self';" Strict-Transport-Security = "max-age=63072000; includeSubDomains; preload" X-Xss-Protection = "1; mode=block" X-Frame-Options = "DENY" X-Content-Type-Options = "nosniff" Referrer-Policy = "strict-origin-when-cross-origin" Permissions-Policy = "fullscreen=(self)" cache-control = "max-age=0,no-cache,no-store,must-revalidate" } }
- La primera línea le dice al caddie el nombre de dominio (example.com) al que pertenece el bloque de configuración. También se utiliza para obtener certificados SSL.
- El bloque TLS nos ayuda a configurar SSL para el dominio, para esta configuración de archivo específica, envíe un correo electrónico al nombre de host para cualquier emisión y errores en la obtención y configuración de SSL.
- Root le dice al directorio raíz de los contenidos del sitio web
- Codificación del contenido
- File_server ayuda a caddy a servir archivos estáticos
- El bloque de encabezado le dice a caddy que envíe estos encabezados junto con la respuesta, la configuración específica le dice a caddy que sirva CSP, XSS, HSTS y encabezados de control de caché junto con la respuesta
Paso 10: ahora ejecute caddy usando los siguientes comandos
// reloading daemon to apply caddy system service file sudo systemctl daemon-reload // starting caddy sudo systemctl start caddy //activating caddy system file sudo systemctl enable caddy sudo systemctl restart caddy
Ahora visite su sitio web desde su navegador favorito:
Publicación traducida automáticamente
Artículo escrito por kushwanthreddy y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA