Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
FILESERV(8)			  User Commands 		     FILESERV(8)

NAME
     fileserv - simple http server for static files

SYNOPSIS
     fileserv	[-fhsv]   [-a  [IP][:PORT]]  [-c  FILE]  [-g  GROUP]  [-u  USER]
     [HOST:]URL:DIR ...

DESCRIPTION
     A simple and lightweight HTTP server. It serves static files  from  one  or
     more  directories	on  the  file system. The directories to be used and the
     corresponding URLs are defined in the form of mappings, either in the  com-
     mand line or in the configuration file. The mapping

       PATH:DIR

     instructs	the  server to map all URLs that begin with the path prefix PATH
     to the directory DIR on the file system. The mapping

       HOST:PATH:DIR

     has the same effect, but only if the Host: header of the incoming HTTP  re-
     quest has the value HOST.

     Depending	on  the  configuration	settings, directory listings can be pro-
     duced.

OPTIONS
     -a [IP][:PORT]
	    Listen on the given IP address and port. Either IP or PORT (but  not
	    both) can be omitted. If IP is omitted, the colon must be retained.

	    This option overrides the listenv configuration setting.

     -c FILE
	    Read configuration from FILE, instead of /etc/fileserv.conf.

     -f     Run in foreground.

     -g GROUP
	    Run  with the privileges of this primary group. GROUP must be either
	    the name of a group listed in the user database, or  a  numeric  GID
	    prefixed with a plus sign.

	    This option overrides the group configuration setting.

     -h     Display a terse command line summary and exit.

     -s     Run  in single-process mode. In this mode, fileserv does not start a
	    sentinel process.

     -u USER
	    Run with the privileges of this user. USER must be either  the  name
	    of	a user listed in the system user database, or a numeric UID pre-
	    fixed with a plus sign.

	    This option overrides the user configuration setting.

     -v     Increase verbosity level. Multiple options accumulate.

     -V     Show program version, license and copyright information.

CONFIGURATION FILE
     The  server  reads  most  of  its	settings  from	the  configuration  file
     /etc/fileserv.conf  (the  default	location  can be overridden using the -c
     command line option). The file has a traditional  UNIX  configuration  file
     syntax. Each statement occupies a single line and consists of configuration
     keyword followed by one or more values, separated by whitespace characters.
     Values  containing whitespace characters should be quoted (with either sin-
     gle or double quote characters). Backslash character serves to  escape  the
     following	character.  Usual  C escapes are understood. Empty lines are ig-
     nored. Comments are introduced by # symbol.

     user NAME
	    Run as the user NAME. Argument must be either login name of  a  user
	    listed  in	the user database, or a numeric UID prefixed with a plus
	    sign.

	    Notice, that in single-process mode (see the -s option) switching to
	    user privileges is performed before writing the PID  file,	so  make
	    sure  that	the directory it is located in is writable for this user
	    (see the pidfile statement).

     group NAME
	    Run with primary group NAME. Argument must be either the name  of  a
	    group  listed in the user database, or a numeric GID prefixed with a
	    plus sign. By default, the primary group of the user  supplied  with
	    the user statement will be used.

	    Note, that supplementary groups are always honored.

     pidfile FILE
	    Save  PID of the running process to FILE. See the notice to the user
	    statement, above.

	    For compatibility with earlier versions, the  keyword  can	also  be
	    spelled as pid-file.

     mime-types-file FILE
	    Name  of  the  MIME  magic	file. This file is used to determine the
	    types of the files being served or listed. The file  syntax  is  the
	    same  as for cups. See mime.types(5), for a detailed discussion. The
	    apache's mime types file, which is a simplification of this  format,
	    can also be used.

     listen IPADDR:PORT
	    Listen  on the given IP address and port. Either IPADDR or PORT (but
	    not both) can be omitted. If IPADDR is omitted, the  colon	must  be
	    retained.

	    Notice, that multiple listen addresses are not supported.

	    Default address is 0.0.0.0:8080.

     access-file-name NAME
	    Name  of the per-directory access file. The file has the same syntax
	    as the main configuration  file,  except  that  only  the  following
	    statements	are  allowed: directory-index, follow, listing, list-un-
	    readable, and hidden-files.

	    Default access file name is .fileserv.

     forwarded-header NAME
	    Treat the value of the HTTP header NAME as a comma-delimited list of
	    intermediate useragent IP addresses. To determine the actual  usera-
	    gent  IP,  the  list is traversed from right to left, until an IP is
	    found that is not listed as trusted-proxy address (see below).

	    Default header name is X-Forwarded-For.

     trusted-proxy IP [IP...]
	    List of IP addresses of trusted proxies. One or  more  IP  addresses
	    can  be  given.  Multiple statements accumulate. The initial list is
	    empty.

     temp-dir DIR
	    Store temporary files in DIR. Default is /tmp.

     syslog NAME
	    Syslog facility name to use for reporting.	Valid  values  for  NAME
	    are:  auth,  authpriv, cron, daemon (default), ftp, kern, lpr, mail,
	    news, security, syslog, user, uucp, and local0 through local7.

   Access control settings
     The statements discussed below configure access control settings. These re-
     main in effect for all subdirectories of the selected mapping, until  over-
     ridden  by  the  corresponding statements in the per-directory access files
     (see access-file-name, above).

     Some of these statements take a boolean value (denoted as	BOOL)  as  their
     arguments.  Valid	boolean  values are (case-insensitive): 1, yes, true, or
     on, indicating true value, and 0,	no,  false,  or  off,  indicating  false
     value.

     directory-index FILE [FILE...]
	    Directory  index  file names. One or more filename arguments are ex-
	    pected. If the first argument is + (a plus sign), all subsequent ar-
	    guments are appended to the current list, instead of overwriting it.
	    This is for use in per-directory access files.

     follow BOOL
	    Follow symbolic links. If set to yes, symbolic  links  appearing  in
	    the request will be resolved. Notice, that the resulting file or di-
	    rectory  will  be served only if it is located in one of the config-
	    ured mappings.

	    Default is no.

     listing BOOL
	    Enable directory listing mode. Directory listing will be returned in
	    response to a request whose URL maps to a directory  with  no  valid
	    index  file. The format of the listing file is configurable. See the
	    section LISTING TEMPLATE, for a detailed discussion.

	    Default is no.

     list-unreadable BOOL
	    Whether to include in the listing the names of files that cannot  be
	    read.

	    Default is no.

     hidden-files REGEX [REGEX...]
	    When producing a directory listing, omit any files whose names match
	    one of the POSIX extended regular expressions from this list.

   Mapping
     Mappings  declare	correspondence between URLs of incoming requests and di-
     rectories on the local filesystem. At least one mapping must be defined.

     mapping [HOST:]URL:DIR
	    HTTP requests with path beginning with URL will be mapped  to  local
	    file paths beginning with DIR. Optional HOST part limits the mapping
	    to requests that have this value in the HTTP "Host:" header. This is
	    similar to Apache's Alias directive.

   Error documents
     error-dir DIR
	    Look  for  customized  versions of error pages in the directory DIR.
	    specified by the error-dir statement.

     When reporting a HTTP error, fileserv will search in that directory for the
     first existing file from  the  following  list:  CODE.html,  CODE.html.var,
     ERR.html,,  ERR.html.var, where CODE is the HTTP error code, and ERR is its
     internal name.  Allowed CODEs and the  corresponding  ERR	names  are:  403
     (HTTP_FORBIDDEN),	404 (HTTP_NOT_FOUND), 405 (HTTP_METHOD_NOT_ALLOWED), 500
     (HTTP_INTERNAL_SERVER_ERROR),   501   (HTTP_NOT_IMPLEMENTED),    and    503
     (HTTP_SERVICE_UNAVAILABLE).

     If  the  file  with .html suffix is found, it will be served as the body of
     the error response. If the file with .html.var suffix is found, it will  be
     treated as a type map in Apache's mod_negotiation.  A type map has a format
     similar  to  RFC822  mail	headers. It contains error document descriptions
     separated by blank lines. Lines beginning with hash character are comments.
     A document description consists of several header records; records  may  be
     continued	on  multiple  lines if the continuation lines start with spaces.
     The leading space will be deleted and  the  lines	concatenated.  A  header
     record  consists  of a keyword name, which always ends in a colon, followed
     by a value. Whitespace is allowed between the header name	and  value,  and
     between the tokens of value.  The headers allowed are:

     Content-Language:
	    The language(s) of the variant, as an Internet standard language tag
	    (RFC  1766),  e.g. en, meaning English. If the variant contains more
	    than one language, they are separated by a comma.

	    This header is a look-up key.

     Content-Type:
	    The MIME media type of the document, with optional parameters.

     Body:  The actual content of the error document is included in the type-map
	    file using the Body header. This header must contain a  string  that
	    designates	a  delimiter  for  the	body content. Then all following
	    lines in the type map file will be considered part of  the	document
	    body until the delimiter string is found.

     The  server will select the error description whose Content-language header
     matches language definitions from the Accept-Language request header.

   Listing template
     The following statements control generation  of  directory  index	listings
     (see the listing statement, above).

     index-template FILE
	    By	default, fileserv uses a built-in template (see the file src/de-
	    fidx.html). This statement instructs it to use FILE instead. See the
	    section LISTING TEMPLATE FILE, for a discussion of its syntax.  FILE
	    must be an absolute file name.

     index-css FILE
	    Name of the CSS file to use in listings. It will be available in the
	    $INDEXCSS template variable. FILE must be an absolute file name.

     mime-icon URL [alt=TEXT] TYPE [TYPE...]
	    Defines  the icon to use for files of given MIME types. Each TYPE is
	    treated as globbing pattern (see glob(7)). URL is the URL of the im-
	    age file to be displayed for matching files, and TEXT is the  alter-
	    native text.

     name-icon URL [alt=TEXT] SUFFIX [SUFFIX...]
	    Defines  the  icon for to use file names that end in one of the SUF-
	    FIXes. See mime-icon, for the description of URL and TYPE.

     type-icon URL [alt=TEXT] TYPE [TYPE...]
	    Defines the icon to use for file of the given type. Available  TYPEs
	    are:  DIRECTORY,  for  a  directory,  FILE,  for a regular file, and
	    BLANK, for a blank line.

LISTING TEMPLATE
     Listing template file is used to produce directory listings. It is a normal
     HTML file, except for the following special constructs:

     {% STRING %}
	    Replaced with the expansion of STRSING

     {% if STRING %}
	    Starts conditional construct. The syntax is:
	    {% if STRING %}
	      TEXT-IF-TRUE
	    {% else %}
	      TEXT-IF-FALSE
	    {% endif %}
	    If the expansion if STRING is not empty, the construct  is	replaced
	    with  TEXT-IF-TRUE, otherwise it is replaced with TEXT-IF-FALSE. The
	    else branch is optional.

     {% loop %}
	    Starts main loop. The syntax is:

	    {% loop %}
	      TEXT
	    {% endloop %}

	    For each file found in the directory being	listed,  the  loop  con-
	    struct produces expansion of TEXT.

     The expansions performed on strings in template constructs are:

   Variable expansion
     Variable  expansion  replaces  each occurrence of $NAME or ${NAME} with the
     value of the templave variable NAME.

     The forms below test for a variable that is unset or  null.   Omitting  the
     colon results in a test only for a variable that is unset.

     ${variable:-word}
	    Use  Default Values.  If variable is unset or null, the expansion of
	    word is substituted.  Otherwise, the value of  variable  is  substi-
	    tuted.

     ${variable:=word}
	    Assign  Default Values.  If variable is unset or null, the expansion
	    of word is assigned to variable.  The value of variable is then sub-
	    stituted.

     ${variable:?word}
	    Display Error if Null or Unset.  If variable is null or  unset,  the
	    expansion  of  word  (or  a  message  to  that effect if word is not
	    present) is sent to the program error output stream. Otherwise,  the
	    value of variable is substituted.

     ${variable:+word}
	    Use  Alternate Value.  If variable is null or unset, nothing is sub-
	    stituted, otherwise the expansion of word is substituted.

     ${variable:|word1|word2}
	    Ternary operator.  Unless variable is null or unset, substitutes the
	    expansion of word1, otherwise the expansion of word2.  If the |word2
	    part is omitted, the construct is equivalent to ${variable:+word1}.

     The above notation is consistent with  the  POSIX	shell,	except	for  the
     ${variable:|word1|word2} form, which is an extension.

     The  following  constructs  expand  to the modified value of the referenced
     variable:

     ${variable#word}
	    Remove Shortest Prefix Pattern.  The word is expanded to  produce  a
	    pattern.   If  that  pattern  matches  the beginning of the expanded
	    value of variable, then this construct expands to the expanded value
	    of variable with the shortest matching pattern removed.

     ${variable##word}
	    Remove Longest Prefix Pattern.  The word is expanded  to  produce  a
	    pattern.   If  that  pattern  matches  the beginning of the expanded
	    value of variable, then the result of the expansion is the	expanded
	    value of variable with the longest matching pattern removed.

     ${variable%word}
	    Remove  Shortest  Suffix Pattern.  The word is expanded to produce a
	    pattern.  If that pattern matches a trailing portion of the expanded
	    value of variable, then the result of the expansion is the	expanded
	    value of variable with the shortest matching pattern removed.

     ${variable%%word}
	    Remove  Longest  Suffix  Pattern.  The word is expanded to produce a
	    pattern.  If that pattern matches a trailing portion of the expanded
	    value of variable, then the result of the expansion is the	expanded
	    value of variable with the longest matching pattern removed.

     ${variable/pattern/subst}
	    Pattern  Substitution.   Both  pattern  and subst are expanded.  The
	    variable is expanded and the longest match of  pattern  against  its
	    value  is replaced with the expansion of subst.  By default only the
	    first match is replaced.  If pattern begins with /.fR,  all  matches
	    of	pattern are replaced with subst.  If it begins with #, the match
	    is replaced only if it occurs at the beginning of the expanded value
	    of variable.  Conversely, if it begins with %, the match is replaced
	    only if it occurs at the end of the expanded value of variable.   To
	    match  the	special  characters (/, #, or %) literally, precede them
	    with a backslash.

     If the pattern does not match the expanded variable,  the	five  constructs
     above result in the expanded value of the variable unchanged.

     In  all  expansion forms above, the word, pattern, and subst parts can con-
     tain variable expansions, command substitutions, single  and  double-quoted
     parts.

     The following template variables are defined:

     URI    URL of the object being listed.

     INDEXCSS
	    The value of index-css configuration statement.

     The following variables are available only within the loop construct:

     ROWCLASS
	    Expands to the string odd or even, depending on the number of itera-
	    tion within loop.

     FILENAME
	    Current file name.

     FILESIZE
	    Current file size.

     FILETIME
	    Last  modification	time  of  the  current file, in format "%Y-%m-%d
	    %H:%M".

     FILETYPE
	    Type of the current file: either DIRECTORY or FILE.

     MIMETYPE
	    MIME  type	of  the  current   file,   as	determined   using   the
	    mime-types-file.

   Command substitution
     During  command substitution, each word is scanned for commands.  Each com-
     mand found is executed and replaced with the output it creates.

     The syntax is:

	 $(command)

     Command substitutions may be nested.

     Available template commands are:

     iconlookup NAME MIME TYPE
	    Look up the icon to use for file NAME, using the list  of  name-icon
	    statements.  If  no  icon  is found and the MIME type MIME is given,
	    look up the icon for that MIME type, using the mime-icon statements.
	    If the icon file is not found after that step,  and  the  file  type
	    TYPE  is  given,  then  look  up  the  icon for that type, using the
	    type-icon configuration statements. On success, return  the  URL  of
	    the icon. If no matching icon was found, return an empty string.

     iconsrc
	    If	the previous call to $(iconlookup) succeeded, returns the URL of
	    the icon.

     iconalt
	    If the previous call to $(iconlookup) succeeded, returns the  alter-
	    native  text  for the icon, i.e. the TEXT part of the alt= parameter
	    to the matching name-icon, mime-icon, or type-icon statement.

     updir URL
	    Returns the URL obtained by removing the  last  firectory  component
	    from the URL argument, or empty string if the latter is /.

     sortorder COL
	    Reverts  the current sort order for the sorting column COL. Possible
	    values for the argument are:

		    N		File name
		    M		File modification date
		    S		File size
		    D		Description

	    Return value is A for ascending, and D for descending order.

	    This function is useful to create listing ordering menu, e.g.:

		 <th>
		   <a href="?C=N&amp;O={% $(sortorder N) %}">Name</a>
		 </th>
		 <th>
		   <a href="?C=M&amp;O={% $(sortorder M) %}">Last modified</a>
		 </th>
		 <th>
		   <a href="?C=S&amp;O={% $(sortorder S) %}">Size</a>
		 </th>

COPYRIGHT
     Copyright (C) 2017-2026 Sergey Poznyakoff
     License GPLv3+: GNU GPL version 3 or later <http://gnu.org/li-
     censes/gpl.html>
     This is free software: you are free to change and redistribute  it.   There
     is NO WARRANTY, to the extent permitted by law.

FILESERV			 April 14, 2026 		     FILESERV(8)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=fileserv&sektion=8&manpath=FreeBSD+Ports+15.1.quarterly>

home | help