Herramientas de usuario

Herramientas del sitio


informatica:software:algernon

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:software:algernon [2025/10/07 16:29] tempwininformatica:software:algernon [2025/10/08 13:43] (actual) tempwin
Línea 1: Línea 1:
 ====== Algernon ====== ====== Algernon ======
  
-Servidor web auto-contenido escrito en [[..:programacion:go|Go]], diseñado para ser ligero, versátil y fácil de desplegar. +**Servidor web** auto-contenido escrito en [[..:programacion:go|Go]], diseñado para ser ligero, versátil y fácil de desplegar. 
  
   * [[https://algernon.roboticoverlords.org/|Sitio web]]   * [[https://algernon.roboticoverlords.org/|Sitio web]]
Línea 22: Línea 22:
  
 Todo esto está empaquetado en un **único ejecutable**, lo que facilita su uso sin necesidad de instalar múltiples dependencias. Todo esto está empaquetado en un **único ejecutable**, lo que facilita su uso sin necesidad de instalar múltiples dependencias.
 +
 +===== Instalación =====
 +
 +Realmente no necesita instalación porque se trata de un único fichero ejecutable.
 +
 +==== Docker ====
 +
 +Si creamos un directorio llamado ''localhost'' creamos un fichero ''index.md'' (con texto con sintaxis Markdown) y luego ejecutamos lo siguiente:
 +
 +<code bash>
 +docker run -it -p4000:4000 -v .:/srv/algernon xyproto/algernon
 +</code>
 +
 +Cuando accedamos a ''%%http://localhost:4000%%'' veremos el contenido de ''index.md'' interpretado como HTML.
 +
 +También podemos crear un Docker Compose:
 +
 +<code yaml>
 +---
 +services:
 +  algernon:
 +    image: xyproto/algernon:latest
 +    container_name: algernon
 +    ports:
 +      - 3000:3000
 +    volumes:
 +      - ./www:/srv/algernon
 +    entrypoint: ["/bin/algernon", "--dev", "--autorefresh", "--dir", "/srv/algernon", "--httponly", "--server"]
 +    restart: unless-stopped
 +</code>
 +
 +Tras ejecutarlo, podremos ir a ''%%http://localhost:3000%%'' y veremos el contenido del directorio ''www''.
  
 ===== Uso ===== ===== Uso =====
  
-Ejemplo más sencillo ejecutando el servidor web sobre el directorio actual:+Ejemplo más sencillo sirviendo el directorio en el que se encuentra el ejecutable de **Algernon**:
  
 <code bash> <code bash>
-algernon -a -e --noheaders .+algernon -x . 
 +</code> 
 + 
 +Ejecutará el servidor web en el puerto 3000 (por defecto). 
 + 
 +Si queremos habilitar la recarga automática cuando hay cambios: 
 + 
 +<code bash> 
 +algernon -a 
 +</code> 
 + 
 +===== Opciones ===== 
 + 
 +A continuación se muestra la sintaxos del ejecutable de **Algernon** y las diferentes opciones que admite como argumentos: 
 + 
 +<code> 
 +Algernon 1.17.4 
 + 
 +Web Server 
 + 
 +Syntax: 
 +  algernon [flags] [file or directory to serve] [host][:port] 
 + 
 +Available flags: 
 +  -a, --autorefresh            Enable event server and auto-refresh feature. 
 +                               Sets cache mode to "images"
 +  -b, --bolt                   Use "/tmp/algernon.db" 
 +                               for the Bolt database. 
 +  -c, --statcache              Speed up responses by caching os.Stat. 
 +                               Only use if served files will not be removed. 
 +  -d, --debug                  Enable debug mode (show errors in the browser). 
 +  -e, --dev                    Development mode: Enables Debug mode, uses 
 +                               regular HTTP, Bolt and sets cache mode "dev"
 +  -h, --help                   This help text 
 +  -l, --lua                    Don't serve anything, just present the Lua REPL. 
 +  -m                           View the given Markdown file in the browser. 
 +                               Quits after the file has been served once. 
 +                               ("-m" is equivalent to "-q -o -z"). 
 +  -n, --nobanner               Don't display a colorful banner at start. 
 +  -o, --open=EXECUTABLE        Open the served URL in a browser with a standard 
 +                               methodor or with the given (optional) executable. 
 +  -p, --prod                   Serve HTTP/2+HTTPS on port 443. Serve regular 
 +                               HTTP on port 80. Uses /srv/algernon for files. 
 +                               Disables debug mode. Disables auto-refresh. 
 +                               Enables server mode. Sets cache to "prod"
 +  -q, --quiet                  Don't output anything to stdout or stderr. 
 +  -r, --redirect               Redirect HTTP traffic to HTTPS, if both are enabled. 
 +  -s, --server                 Server mode (disable debug + interactive mode). 
 +  -t, --httponly               Serve regular HTTP. 
 +  -u                           Serve over QUIC / HTTP3. 
 +  -v, --version                Application name and version 
 +  -V, --verbose                Slightly more verbose logging. 
 +  -z, --quit                   Quit after the first request has been served. 
 +  --accesslog=FILENAME         Access log filename. Logged in Combined Log Format (CLF). 
 +  --addr=[HOST][:PORT]         Server host and port (":3000" is default) 
 +  --boltdb=FILENAME            Use a specific file for the Bolt database 
 +  --cache=MODE                 Sets a cache mode. The default is "on"
 +                               "on"      - Cache everything. 
 +                               "dev"     - Everything, except Amber, 
 +                                           Lua, GCSS, Markdown and JSX. 
 +                               "prod"    - Everything, except Amber and Lua. 
 +                               "small"   - Like "prod", but only files <= 64KB. 
 +                               "images"  - Only images (png, jpg, gif, svg). 
 +                               "off"     - Disable caching. 
 +  --cachesize=N                Set the total cache size, in bytes. 
 +  --cert=FILENAME              TLS certificate, if using HTTPS. 
 +  --conf=FILENAME              Lua script with additional configuration. 
 +  --clear                      Clear the default URI prefixes that are used 
 +                               when handling permissions. 
 +  --cookiesecret=STRING        Secret that will be used for login cookies. 
 +  --ctrld                      Press ctrl-d twice to exit the REPL. 
 +  --dbindex=INDEX              Redis database index (0 is default). 
 +  --dir=DIRECTORY              Set the server directory 
 +  --domain                     Serve files from the subdirectory with the same 
 +                               name as the requested domain. 
 +  --eventrefresh=DURATION      How often the event server should refresh 
 +                               (the default is "350ms"). 
 +  --eventserver=[HOST][:PORT]  SSE server address (for filesystem changes). 
 +  --http2only                  Serve HTTP/2, without HTTPS. 
 +  --internal=FILENAME          Internal log file (can be a bit verbose). 
 +  --key=FILENAME               TLS key, if using HTTPS. 
 +  --largesize=N                Threshold for not reading static files into memory, in bytes. 
 +  --letsencrypt                Use certificates provided by Let's Encrypt for all served 
 +                               domains and serve over regular HTTPS by using CertMagic. 
 +  --limit=N                    Limit clients to N requests per second 
 +                               (the default is 10). 
 +  --log=FILENAME               Log to a file instead of to the console. 
 +  --maria=DSN                  Use the given MariaDB or MySQL host/database. 
 +  --mariadb=NAME               Use the given MariaDB or MySQL database name. 
 +  --ncsa=FILENAME              Alternative access log filename. Logged in Common Log Format (NCSA). 
 +  --nocache                    Another way to disable the caching. 
 +  --nodb                       No database backend. (same as --boltdb=/dev/null). 
 +  --noheaders                  Don't use the security-related HTTP headers. 
 +  --nolimit                    Disable rate limiting. 
 +  --postgres=DSN               Use the given PostgreSQL host/database. 
 +  --postgresdb=NAME            Use the given PostgreSQL database name. 
 +  --sqlite=FILENAME            Use the given SQLite file (ie. "sqlite.db&cache=shared&mode=memory"). 
 +  --redis=[HOST][:PORT]        Use ":6379" for the Redis database. 
 +  --rawcache                   Disable cache compression. 
 +  --servername=STRING          Custom HTTP header value for the Server field. 
 +  --stricter                   Stricter HTTP headers (same origin policy). 
 +  --theme=NAME                 Builtin theme to use for Markdown, error pages, 
 +                               directory listings and HyperApp apps. 
 +                               Possible values are: light, dark, bw, redbox, wing, 
 +                               material, neon, werc or setconf. 
 +  --timeout=N                  Timeout when serving files, in seconds. 
 +  --watchdir=DIRECTORY         Enables auto-refresh for only this directory. 
 +  -x, --simple                 Serve as regular HTTP, enable server mode and 
 +                               disable all features that requires a database. 
 + 
 +Example usage: 
 + 
 +  For auto-refreshing a webpage while developing: 
 +    algernon --dev --httponly --debug --autorefresh --bolt --server . :4000 
 + 
 +  Serve /srv/mydomain.com and /srv/otherweb.com over HTTP and HTTPS + HTTP/2: 
 +    algernon -c --domain --server --cachesize 67108864 --prod /srv 
 + 
 +  Serve the current dir over QUIC, port 7000, no banner: 
 +    algernon -s -u -n . :7000 
 + 
 +  Serve the current directory over HTTP, port 3000. No limits, cache, 
 +  permissions or database connections: 
 +    algernon -x
 </code> </code>
informatica/software/algernon.1759847395.txt.gz · Última modificación: por tempwin