Welcome to our collection of Embedded Web Server tutorials! Here, you'll find everything you need to know about using embedded web servers in a variety of contexts, from tiny event-driven microcontrollers to larger embedded systems like VxWorks, QNX, and Embedded Linux.
Whether you're working with a memory-constrained microcontroller, an RTOS-powered device, or a high level operating system, we've got you covered. From tips on when not to use an embedded web server to advice on how to access a WebSocket server behind a firewall, our tutorials cover a wide range of topics to help you get up and running with ease.
For projects using memory constrained microcontrollers with internal RAM less than 1 MB and with no external RAM, the three first articles below are for you. If not, see any of the other articles to help you design your next project.
Before embedding a web server in a microcontroller powered product, think about what you are trying to achieve. Embedding a web server may not be the best solution when using a small microcontroller. To understand why, see the following tutorial:
When Not to Use an Embedded Web Server in a Device
Looking for a way to add an embedded web server to your small microcontroller project? The tutorial on Embedding a Web Server in a Microcontroller is a great place to start. But if you're looking for an even easier solution, consider offloading all your IoT, web, and networking needs to an ESP32 running the Barracuda App Server. This low-cost option can easily be added to your existing microcontroller setup, and it supports both wired and wireless Internet communication. Plus, the two processors can easily communicate using methods like SPI or UART.
Maximize the benefits and minimize the drawbacks of IoT and embedded web server technology with the help of our article on accessing a WebSocket server behind a firewall. By following the tips and guidance provided, you'll be able to seamlessly integrate these solutions and get the best of both worlds.
Don't let complicated networking and security issues stand in the way of your success. Learn how to overcome these challenges and harness the full potential of IoT and embedded web servers with the help of our expert guidance. Check out the article now and start reaping the benefits!
Ready to dive into the world of embedded system programming? Look no further! Our "noobs" tutorial designed for our free embedded RTOS IDE will get you up to speed in no time.
Whether you're a beginner to embedded programming, an expert, or just new to the complexities of setting up secure IoT devices, our "Noobs" tutorial is here to help. In just 30 minutes, you'll be up and running with the skills and knowledge you need to succeed.
Read our IoT Noobs Tutorial, download our free IoT IDE, and get started on your journey towards becoming an embedded IoT system architect pro!
If you have ever Googled "embedded web server" or "embedded web server tutorials", you have likely come across many tutorials on how to create a lightweight web server on, for example, Linux to serve static HTML files. Being able to serve static web pages is one of the most fundamental parts of any embedded web server; however, for device management to be practical, we need to look beyond just serving static web pages. In particular, embedded web servers generally must be able to let the web functionality affect the device operation -- the remote browser has to be able to "talk" to the embedded system.
An embeddable application server is a more formalized way of saying an embedded web server that lets you easily build HTML based interactive device management applications. To get a better understanding of the differences between an embedded web server and an embedded application server, see the What is an Embedded Application Server, a primer for embedded developers tutorial for details.
For an embedded developer, the first thing that may be considered is that the server side part of the embedded web application must be designed in C code. Although this is very common, it may not be the best solution for many embedded systems. Web applications are very text heavy, and it is time consuming and error prone to develop server side web applications in C code. A better solution may be to use an application server that supports a fast and compact scripting language suitable for embedded systems. For efficient scripting in an embedded environment, there’s a scripting language called Lua and it is especially designed to operate on small (embedded) platforms. It is specifically defined as an extensible language and is implemented as a C library that gets compiled and linked with your application/firmware. For more information, check out the Using Lua for Web Application Development article.
Do you have any team members that are not hard core C/C++ developer? If so, check out the Barracuda App Server article Embedded programming using Lua and C code, which focuses on using Lua for designing an IoT client. You can download and run the same tutorials on your own FreeRTOS/lwIP powered ESP32.
Get a quick introduction to Lua by following our Online Interactive Lua Tutorials
Modern Approach to Embedded Web Server Design
Look no further if you are you planning on using the latest in web development. The following article explains this in detail:
Using ReactJS, Angular, and Vue.js with any web server
You may be looking for a CGI enabled server if you are old school. In addition to being passé, CGI has several drawbacks such as several security issues, being slow, and time consuming development in embedded devices. Older websites were originally implemented using the Common Gateway Interface (CGI). In truth, CGI is only an interface. It is generally cumbersome to manage and requires a full-up OS like Linux that can load external programs, meaning that deep embedded monolithic systems cannot use CGI. Basic embedded web servers typically specify only function hooks; you must write the functions. With CGI on standard web servers, Perl scripting is very common, but most embedded environments do not support Perl, meaning you have to revert to C to get things done. All of this makes CGI an unattractive option. See the following tutorial for more information on why we do not recommend CGI for new design.
Barracuda App Server vs CGI, including CGI security issues
With easy to use hacking tools available on Github, anyone can hack your embedded web server enabled product. Follow along the hack any embedded web server tutorial to learn how shockingly easy it is to hack your devices.
The following is a list of hands-on tutorials for the Mako Server, which is a Barracuda Application Server (BAS) derivative product designed for high level operating systems. Mako Server and BAS provide the same programmer API, thus the following Mako Server tutorials also apply to the Barracuda App Server. Clicking any of the links below takes you to the Mako Server web site.
IoT and embedded web technologies are merging. Learn how to take advantage of both by using a common code base. Our IoT Tutorials explain this in detail.
No matter what your background or project goals, we're here to help you find the perfect solution! Are you a maker looking for the right tools? A startup trying to get off the ground? A large business seeking new software solutions? We've got you covered.
If you have any questions or just aren't sure which product is right for you, don't hesitate to reach out. Our team is dedicated to helping you overcome your hardware/software challenges and find the best solution for your needs. Let us know how we can help - we'd love to lend a hand!
Expedite your IoT and edge computing development with the "Barracuda App Server Network Library", a compact client/server multi-protocol stack and toolkit with an efficient integrated scripting engine. Includes Industrial Protocols, MQTT client, SMQ broker, WebSocket client & server, REST, AJAX, XML, and more. The Barracuda App Server is a programmable, secure, and intelligent IoT toolkit that fits a wide range of hardware options.
SharkSSL is the smallest, fastest, and best performing embedded TLS stack with optimized ciphers made by Real Time Logic. SharkSSL includes many secure IoT protocols.
SMQ lets developers quickly and inexpensively deliver world-class management functionality for their products. SMQ is an enterprise ready IoT protocol that enables easier control and management of products on a massive scale.
SharkMQTT is a super small secure MQTT client with integrated TLS stack. SharkMQTT easily fits in tiny microcontrollers.
An easy to use OPC UA stack that enables bridging of OPC-UA enabled industrial products with cloud services, IT, and HTML5 user interfaces.
Use our user programmable Edge-Controller as a tool to accelerate development of the next generation industrial edge products and to facilitate rapid IoT and IIoT development.
Learn how to use the Barracuda App Server as your On-Premises IoT Foundation.
The compact Web Server C library is included in the Barracuda App Server protocol suite but can also be used standalone.
The tiny Minnow Server enables modern web server user interfaces to be used as the graphical front end for tiny microcontrollers. Make sure to check out the reference design and the Minnow Server design guide.
Why use FTP when you can use your device as a secure network drive.
PikeHTTP is a compact and secure HTTP client C library that greatly simplifies the design of HTTP/REST style apps in C or C++.
The embedded WebSocket C library lets developers design tiny and secure IoT applications based on the WebSocket protocol.
Send alarms and other notifications from any microcontroller powered product.
The RayCrypto engine is an extremely small and fast embedded crypto library designed specifically for embedded resource-constrained devices.
Real Time Logic's SharkTrust™ service is an automatic Public Key Infrastructure (PKI) solution for products containing an Embedded Web Server.
The Modbus client enables bridging of Modbus enabled industrial products with modern IoT devices and HTML5 powered HMIs.