Tiny web servers

From Wikipedia, the free encyclopedia

Tiny Web servers are Web servers which have been designed to run with very small resource overhead because of hardware, environment, or simply for the challenge of it.

Many of these systems have been created as a mental exercise to determine if a modern webserver could be written to run on limited resources such as those provided in a graphing calculator, an ancient Commodore 64 machine, or in 64kb total of memory. Others have been written as commercial endeavors to create webservers with low overhead for embedded systems (network router configuration pages) or low memory environments.

Contents

[edit] Embedded servers and vintage hardware servers

  • uIP by Adam Dunkels; uIP is an implementation of the TCP/IP protocol stack intended for small 8-bit and 16-bit microcontrollers. It provides the necessary protocols for Internet communication, with a very small code footprint and RAM requirements - the uIP code size is on the order of a few kilobytes and RAM usage is on the order of a few hundred bytes. uIP has been ported to the Commodore 64 as well as creating Web-enabled Lego smart bricks. [1]
  • Barracuda Embedded Web server. A multithreaded HTTP engine based on a plugin architecture. Supported plugins include, CSP (C/C++ Server Pages), LSP (Lua Server Pages), EventHandler an asynchronous persistent bi-directional protocol using HTTP(S), SharkSSL SSL/TLS server, WebDAV, XML-RPC, SOAP, WNMP (Web Network Management Protocol), etc.
  • SWILL; an HTTP 1.0 engine with support for SSL and an LGPL license. It can be compiled on many flavors of Unix and on Win32 using Microsoft Visual C++.
  • foXServe Apache Embedded Web serveris a full featured Apache 1.3.37 Embedded WebServer with PHP 5.0.5, SQLite, WebDAV and SSL running on ACME SYSTEMS srl Fox Board 832. With foXServe is possible to control I/O a LCD Display Hitachi HD44780 or I2C connected devices directly from your PHP script. A set of PHP extensions let you control logic hardware connected directly to the Fox Board with a web PHP script.

[edit] Low-overhead PC servers

[edit] Servers that are advertised as supporting multiple script languages

[edit] Windows version included

Abyss [2]
~455 KB
Abyss Web Server X1 is a free and compact web server. It supports CGI, FastCGI, ISAPI, SSI, ASP.NET (on Windows), password protection, IP address control, bandwidth throttling, anti-leeching, anti-hacking, URL-rewriting, and features an intuitive multilingual remote web management interface.
PHP support is enabled if PHP itself is installed as a separated package (available on the program's site).
AppWeb [3]
~3.8 MB
AppWeb HTTP Server is an open source with commercial licenses if required. It is fast (over 10,000 HTTP requests per second) and compact (from 110 KB). It supports SSL with MatrixSSL, Basic and Digest Authentication, Logging, Virtual hosts, PHP, CGI and Apache style configuration. AppWeb has Embedded Server Pages (ESP) for server side Javascripting and also supports standard page creation environments like PHP.
It requires an installation.
BadBlue [4]
~703 KB
Multitasking, Windows only, core server supports CGI, ISAPI filters, and ISAPI extensions. Used extensively in small-footprint Perl, PHP, and Python installations. Provides a user-interface that exposes search functionality, folders (virtual directories), and similar 'high level' functionality. No adware or spyware.
PHP usage relies on php_cgi.exe from the official PHP's Windows package.
It requires an installation.
Cherokee [5]
~686 KB
Including: virtual servers, file sending, directory listing, PHP execution, CGI execution, URL redirections, Htdigest validation, and logging.
The server runs in DOS mode.
PHP usage relies on php_cgi.exe from the official PHP's Windows package.
It requires an installation.
Seminole [6]
Seminole is a Web server toolkit mainly designed for embedded systems. It supports many operating systems (including eCos and VxWorks). The design is modular and highly object oriented. Seminole started out life as a GPLed project and later versions are commercial only.
Only the demo can be downloaded and installed in the program's site.

[edit] Linux only

Scrinchy [7]
~26 KB
Scrinchy is a Linux only multitasking web server supporting HTTP and serving common file types like HTML and media files. It also provides an internal object-oriented stack-based scripting language called Lapis (currently 50kB extra), and permits external invocations of Perl, PHP, and Python.

[edit] Servers that are advertised as supporting CGI

GoAhead WebServer [8]
~800 KB
Fully featured embedded Web server providing rich support for dynamic content. GoAhead WebServer leverages Active Server Pages, embedded JavaScript, and in-process CGI forms processing to deliver highly efficient and effective dynamic Web page creation. WebServer also includes support for SSL, Digest Access Authentication, User Management, and standard CGI.

[edit] Features

Dynamic Content

   * Active Server Pages
   * In-Process CGI
   * Traditional CGI support
   * Embedded JavaScript
   * Open scripting architecture

Protocols and Standards

   * HTTP 1.0
   * Persistent connections (consistent with HTTP 1.1)
   * Security via HTTP 1.0 basic encoding
   * 65 connections per second

Security

   * Secure Socket Layer (SSL) v30
   * Digest Access Authentication (DAA)
   * User management

Memory Requirements

   * 60K memory footprint

Operating System Support

   * Wind River VxWorks
   * Windows CE
   * Window 95/98/NT/2000
   * Lynx
   * Linux
   * QNX
   * eCOS
   * Easily adapted to processors by licensees

[edit] Windows version included

TinyWeb [9]
~53 KB
For Win32, written in Delphi. It supports CGI.
Requires no installation.

[edit] Windows version included, but only as a source code

Anti-Web httpd [10]
Anti-Web is a light-weight, single-process, non-threaded webserver that emphasizes simplicity, efficiency, and security. It supports CGI.
It's meant for Linux, but an unofficial Win32 source code package (without CGI support) is available in the program's site.

[edit] Linux only

CoreHTTP [11]
25 KB
Corehttp is a Linux only single-process webserver using select(). Corehttp supports static and dynamic cgi content.

[edit] Unix

Boa [12]
120 KB
Boa is a Unix only single-tasking webserver. It supports CGI.
Hiawatha [13]
180 KB
Unix Webserver with security as its main goal. It has security features that no other webserver has, like preventing SQL-injection and Cross-site scripting, an easy-to-use CGI-wrapper and banning of hackers, which are automaticly detected. Hiawatha is also very fast. It's twice as fast as Apache for static content and it supports load-balanced FastCGI.
thttpd [14]
129 KB
A Unix only small server with some interesting features such as throttling and multi-homing. It supports CGI.

[edit] Java

Devwex [15] (site is in German only)
~106 KB
Devwex is a widely configurable Java based Web server for the command line (command shell). The ca. 30k sized Java binary supports virtual hosts, IP/Port Sharing, Remote Access/Control, Directory Index, Multithreading, Filtering, Modules, DCGI/CGI1.1, SSL/TLS and more.

[edit] Others

[edit] Windows version included

BarracudaDrive [16]
713 KB
BarracudaDrive is a free multithreaded Web server based on the Barracuda Embedded Web Server. The server includes a Web File Manager, Orthodox file manager, WebDAV, HTTPS tunnel, real time DHTML chat client, a WYSIWYG HTML editor, and SharkSSL. The ZIP file contains the HTML and DHTML user interface and includes a number of Ajax applications. It uses a unique scripting engine to automate tasks.
It requires no installation, but is used as a service.
HFS - Http File Server [17]
500 KB
The open source and freeware HFS differs from classic web servers because it's very easy to use and runs "right out-of-the box".
The program itself is only one EXE file that needs no installation. The settings can be saved either in the registry or in a INI file.
Also, the program's site offers an active support forum.

[edit] Windows only

Purplenova PC Web Server [18]
2.3 MB
This is per file server - the user selects the exact files they want to host (either through the program or by right clicking the needed files).
It is a freeware that installs on any Windows PC. No configuration is required.
The program can work from behind most NAT/Router/Proxy/Dynamic-IP configurations.
Allows hosting of any type of file, with no limit to number of files, but a size limit of 10MB per file.
It also installs on any standard USB Flash Drive and creates a seamlessly portable web server.
It requires an installation (Microsoft Installer).

[edit] Windows version included, but only as a source code

Null httpd [19]
52 KB
Small, simple, multithreaded, web server. Available as source code for Linux and Windows. Included in Puppy Linux.

[edit] Linux only

KLone [20]
464 KB
Linux only embedded HTTP/S server and SDK to write dynamic HTML pages using C/C++.
libwebserver [21]
231 KB
Linux only embedded HTTP/S server that was designed to be simple and powerful.

[edit] Unix

HTTPi [22]
~58KB (variable based on configured options)
A small 100% Perl webserver that requires no additional support other than a bare Perl interpreter (no modules needed). Supports executables, parsed HTML, virtual hosting, access control, a user filesystem and throttling. Can run as a daemon or from an inetd-like environment.
IBM's nweb [23]
36 KB
Only 200 lines of C code, worked example of how to implement a simple webserver for UNIX, with error checking, only handles static pages so it is safe. The Web link above is an article on how it all works.
Simple HTTPD [24]
12 KB
A small, simple web server for UNIX. The single source code file is under 200 lines of code, ignoring comments. After the program starts and binds to a listening port, it runs inside a chroot jail as user "nobody." The simple design helps prevent coding bugs, and the chroot jail helps limit the consequences any that do occur; a very secure arrangement. Simple httpd is a threaded program.
Tntnet [25]
940 KB
A Unix fast server for webapplications written in C++. Tntnet has a template-language called ecpp, which let the developer embed C++-code in html-pages. These pages are compiled at compiletime, which results in webapplications, which run native and are therefore very fast and compact.
It uses its own unique scripting language called ecpp, that is multithreaded and has quite some features like ssl, session-management, file-upload or scoped variables.

[edit] Java

SimpleW [26]
50 KB
Simple and small Web server and JSP engine implemented in Java. SimpleW only supports PUT and GET methods, cookies and no virtual hosting (no host header interpretation). It's a free and open source software.

[edit] AIX

Lite Netquestion HTTP Web Server
28 KB
A little Web server included in AIX to serve HTML documents to local users.

[edit] Microcontroller servers

  • webAce may be the world's smallest Web server. It is based on the ACE1101MT8, the world's smallest microcontroller. In less than 1 KB of code, of which fewer than 400 bytes are used for TCP/IP.

[edit] Low Power Web Server

  • Spud, the Potato-Powered Web Server, may be the world's lowest power web server. The CPU is a Microchip PIC16F876 running with a 76.8 kHz clock and a nominal 1.5V supply voltage.

[edit] See also