|
1 | 1 | <a href="https://www.flaticon.com/free-icons/docker"><img align="right" src="doc/container.png" width="200px" alt="Docker icons created by pocike - Flaticon"></a>
|
2 | 2 |
|
3 |
| -# curiOS — a slim curated container OS |
| 3 | +# curiOS — Production-Ready Container Images for Embedded Systems |
4 | 4 |
|
5 |
| -curiOS, pronounced curious, is a project by the [same team][8] of developers |
6 |
| -that created and maintain the [Infix operating system][7]. If you like the |
7 |
| -idea of modeling an entire OS with YANG, have a look at Infix. |
| 5 | +**Lightweight • Secure • Purpose-Built** |
8 | 6 |
|
9 |
| -This project provides a set of *defconfigs* for 64-bit ARM and x86 systems |
10 |
| -that can be used with Infix or any other [OCI](https://opencontainers.org/) |
11 |
| -compatible runtime. |
| 7 | +curiOS delivers ultra-slim, curated container images optimized for |
| 8 | +embedded and edge computing. Built on battle-tested [Buildroot][0], |
| 9 | +each image is stripped of unnecessary components while maintaining full |
| 10 | +functionality. |
12 | 11 |
|
13 |
| -> [!NOTE] |
14 |
| -> The system container is very useful for staging/development before deploying |
15 |
| -> any of the slim application containers, because they can be very difficult |
16 |
| -> to debug (none or little tooling in image). |
| 12 | +## Why curiOS? |
17 | 13 |
|
18 |
| -## AppStore |
| 14 | +✨ **Ultra-minimal footprint** - Images as small as 270KB |
| 15 | +🔒 **Security-first** - No unnecessary packages or attack surface |
| 16 | +⚡ **Fast deployment** - Lightning-quick startup times for edge applications |
| 17 | +🎯 **Purpose-built** - Each container does one thing exceptionally well |
| 18 | +🔧 **Developer-friendly** - Easy integration with existing workflows |
19 | 19 |
|
20 |
| -The [KernelKit AppStore][2] on GHCR provides the following pre-built images. |
| 20 | +## Perfect For |
21 | 21 |
|
22 |
| -### [curiOS system][3] |
| 22 | +- **IoT Gateways** - Lightweight network services and protocols |
| 23 | +- **Edge Computing** - Minimal resource consumption at the edge |
| 24 | +- **Container Orchestration** - Kubernetes, Docker Swarm, and more |
| 25 | +- **Development Staging** - Debug and test before production deployment |
| 26 | +- **Embedded Firewalls** - Advanced netfilter configurations in containers |
23 | 27 |
|
24 |
| -An example system container, shows how to run multiple services. Comes with |
25 |
| -the following services and tools: |
| 28 | +> [!TIP] |
| 29 | +> The system container includes full BusyBox tooling, making it perfect |
| 30 | +> for staging and development before deploying the ultra-slim |
| 31 | +> application containers. |
26 | 32 |
|
27 |
| -- BusyBox (full configuration) |
28 |
| -- Dropbear SSH daemon |
29 |
| -- mini-snmpd |
30 |
| -- netopeer-cli |
31 |
| -- nftables |
32 |
| -- ntpd |
| 33 | +--- |
| 34 | + |
| 35 | +*curiOS is brought to you by the [same team][8] that created and |
| 36 | +maintains the [Infix operating system][7]. If you like the idea of |
| 37 | +modeling an entire OS with YANG, check out Infix!* |
| 38 | + |
| 39 | +## Ready-to-Use Images |
| 40 | + |
| 41 | +Get started instantly with our pre-built images available on the |
| 42 | +[KernelKit Container Registry][2]. Each image is continuously built and |
| 43 | +tested for ARM64 and x86-64 architectures. |
| 44 | + |
| 45 | +### [curiOS system][3] 🖥️ |
| 46 | + |
| 47 | +**Full-featured development and staging environment** - Perfect for |
| 48 | +prototyping and debugging before deploying specialized |
| 49 | +containers. Includes everything you need: |
| 50 | + |
| 51 | +- **BusyBox** (complete toolset) - Full UNIX utilities |
| 52 | +- **Dropbear SSH** - Secure remote access |
| 53 | +- **mini-snmpd** - Network monitoring |
| 54 | +- **netopeer-cli** - NETCONF client |
| 55 | +- **nftables** - Advanced firewall |
| 56 | +- **ntpd** - Network time synchronization |
33 | 57 |
|
34 | 58 | See this blog post on how to use this container with Infix:
|
35 | 59 |
|
36 | 60 | - [Infix Advanced Container Networking](https://kernelkit.org/posts/advanced-containers/)
|
37 | 61 |
|
38 |
| -### [curiOS ntpd][4] |
| 62 | +### [curiOS ntpd][4] ⏰ |
| 63 | + |
| 64 | +**Precision time synchronization** (~400KB) - Ultra-lightweight NTP |
| 65 | +daemon for accurate timekeeping across your infrastructure. Features: |
| 66 | + |
| 67 | +- **ISC ntpd** with `-n -g` flags for quick sync |
| 68 | +- **Multicast NTP** support for subnet-wide time distribution |
| 69 | +- **Persistent drift** data via `/var/lib` volume mount |
| 70 | +- **Custom config** support - mount your own `/etc/ntp.conf` |
39 | 71 |
|
40 |
| -This container is only `ntpd`, started by `tini` with `-n -g` flags. The |
41 |
| -default configuration file is `/etc/ntp.conf`, see `doc/` for a sample. To |
42 |
| -override use a mount or volume, and remember to also set up a volume for the |
43 |
| -`/var` or `/var/lib` directory to let the daemon save drift data. |
| 72 | +Perfect for IoT devices and distributed systems requiring precise |
| 73 | +time. See the [official ntpd documentation](https://www.ntp.org/) for |
| 74 | +advanced configuration. |
44 | 75 |
|
45 |
| -ISC ntpd supports [multicasting NTP][10] to a subnet. For more information |
46 |
| -see the [official ntpd site](https://www.ntp.org/). |
| 76 | +### [curiOS nftables][5] 🔥 |
47 | 77 |
|
48 |
| -### [curiOS nftables][5] |
| 78 | +**Advanced containerized firewall** (~670KB) - Production-ready |
| 79 | +netfilter management with zero-downtime rule updates. Features: |
49 | 80 |
|
50 |
| -Useful for advanced netfilter setups when the container runs in host network |
51 |
| -mode. At startup it loads `/etc/nftables.conf` and then waits for a signal. |
52 |
| -At shutdown `nft flush ruleset` is called. |
| 81 | +- **Host network mode** support for transparent firewalling |
| 82 | +- **Graceful startup/shutdown** - Loads rules on start, flushes on stop |
| 83 | +- **Live configuration** - Built-in vi editor for rule modifications |
| 84 | +- **Mount-friendly** - Use host-based config files via volumes |
| 85 | +- **Sample configurations** included for end-devices and routers |
53 | 86 |
|
54 |
| -This container comes with a minimal set of BusyBox tools, including a shell, |
55 |
| -so the `nftables.conf` file can be modified from inside the container (vi). |
56 |
| -Although the most common use-case is to mount a file from the host system. |
57 |
| -See `doc/` for two samples: end-device and home router. |
| 87 | +Ideal for edge devices, containers-as-firewalls, and advanced network policies. |
58 | 88 |
|
59 | 89 | See this blog post on how to use this container with Infix:
|
60 | 90 |
|
61 | 91 | - [Infix w/ WAN+LAN firewall setup](https://kernelkit.org/posts/firewall-container/)
|
62 | 92 |
|
63 |
| -### [curiOS httpd][6] |
| 93 | +### [curiOS httpd][6] 🌐 |
64 | 94 |
|
65 |
| -Tiny web server container based on BusyBox httpd, suitable for embedding in a |
66 |
| -firmware image as an example container. |
| 95 | +**Ultra-lightweight web server** (~270KB) - The smallest possible HTTP |
| 96 | +server for embedded applications and IoT devices. Features: |
67 | 97 |
|
68 |
| -The server looks for `/var/www/index.html`, so use a volume on `/var/www` to |
69 |
| -change the default web page. |
| 98 | +- **Minimal footprint** - Perfect for resource-constrained environments |
| 99 | +- **Volume support** - Mount your content to `/var/www/` |
| 100 | +- **Flexible configuration** - Customizable ports, logging, and behavior |
| 101 | +- **Firmware-ready** - Ideal for embedding in device firmware |
70 | 102 |
|
71 |
| -With a custom command you can also change the default command line, e.g, to |
72 |
| -run in foreground, with verbose mode, on port 8080: |
| 103 | +**Example usage:** |
73 | 104 |
|
74 |
| -- `/usr/sbin/httpd -f -v -p 8080` |
| 105 | +```bash |
| 106 | +# Custom port and verbose logging |
| 107 | +docker run -p 8080:8080 ghcr.io/kernelkit/curios-httpd /usr/sbin/httpd -f -v -p 8080 |
| 108 | +``` |
75 | 109 |
|
76 | 110 | For more help, see the [BusyBox docs](https://busybox.net/downloads/BusyBox.html#httpd)
|
77 | 111 |
|
|
0 commit comments