Job unipi-monitoring on freebsd-14
README
Skip to buildsUnipi - serve git repository content as HTTPS
Unipi is a MirageOS unikernel that provides the contents of a git repository via HTTP and HTTPS. It embeds (optional) let's encrypt provisioning.
A webhook is provided to update the internal state of the git repository. An example deployment is robur.coop, which serves the robur website (using the pages branch).
Some HTTP headers are added: "content-type", which value is looked up of the file ending using magic-mime. "last-modified" and "etag" are the timestamp of the most recent commit to the git remore, respective the hash of the most recent commit. If the client sends "if-modified-since" or "if-none-match", and either matches the most recent commit, the HTTP status Not modified (304) is returned with an empty body.
Inspiration for this unikernel is taken from Canopy after discussion with the Muen developers.
Configuration
Unipi is only configured via boot parameters, as follows:
--port
configures the TCP port to listen on (defaults to 80)--remote
configures the git remote url (e.g. https://github.com/mirage/ocaml-dns.git#gh-pages)--hook
configures the (secret) url of the webhook, if requested unipi updates its internal git remote (default is "hook")--ipv4
configures the IPv4 address of unipi (e.g. 192.168.2.2/24)--ipv4-gateway
configures the IPv4 gateway
To use git via ssh (only public/private key authentication is supported):
--ssh-key
for the ssh private key - either rsa: or ed25519: (you can use the toolawa_gen_key
to produce a random seed and public key)--ssh-authenticator
to authenticate the ssh remote (format is SHA256:b64-encoded-public-key hash, the output ofssh-keygen -lf <(ssh-keyscan -t rsa|ed25519 remote-host 2>/dev/null)
)
For HTTPS service with let's encrypt certificate:
--tls=true
enables tls--hostname=my-server.example.com
configuring the server name--production=true
for let's encrypt production environment (default is false, which uses the let's encrypt staging environment)- (optional)
--cert-seed=<my-seed>
seed for the private key of the certificate (dd if=/dev/random bs=32 count=1 | b64encode -m -
) - (optional)
--account-seed=<my-seed>
seed for the let's encrypt account (see above how to generate this) - (optional)
--email=<account email>
email address used for let's encrypt account registration
For a complete list of boot parameters, execute the binary with --help
as
argument.
Installation from source
To install this unikernel from source, you need to have opam (>= 2.1.0) and ocaml (>= 4.08.0) installed. Also, mirage is required (>= 4.5.0). Please follow the installation instructions.
The following steps will clone this git repository and compile the unikernel:
$ git clone https://github.com/robur-coop/unipi.git
$ cd unipi
$ mirage configure -t <your-favourite-target> #i.e. hvt, spt, xen
$ make depend
$ make build
Installing as binary
Binaries are available at Reproducible OPAM builds, see Deploying binary MirageOS unikernels and Reproducible MirageOS unikernel builds for details.
Questions?
Please open an issue if you have questions, feature requests, or comments.
Builds
Back to readme- ☑ freebsd-14 2025-04-01 02:56:33Z unipi.hvt
SHA256:a26409c1b99849a46b84badcd6b4ffe4f3672185f7427f1de0e72e1b0ecf0fa6
(9.75MB) - ☒ freebsd-14 2025-03-17 02:42:23Z Build failure: exited 1
- ☒ freebsd-14 2025-03-16 02:41:31Z Build failure: exited 1
- ☒ freebsd-14 2025-03-15 02:40:37Z Build failure: exited 1
- ☒ freebsd-14 2025-03-14 02:39:42Z Build failure: exited 1
- ☒ freebsd-14 2025-03-13 02:38:48Z Build failure: exited 1
- ☒ freebsd-14 2025-03-12 02:37:55Z Build failure: exited 1
- ☒ freebsd-14 2025-03-11 02:37:39Z Build failure: exited 1
- ☒ freebsd-14 2025-03-10 05:19:33Z Build failure: exited 1
- ☒ freebsd-14 2025-03-09 02:37:56Z Build failure: exited 1
- ☒ freebsd-14 2025-03-08 04:06:38Z Build failure: exited 1
- ☒ freebsd-14 2025-03-07 04:04:44Z Build failure: exited 1
- ☒ freebsd-14 2025-03-06 02:33:41Z Build failure: exited 1
- ☒ freebsd-14 2025-03-05 02:59:10Z Build failure: exited 1
- ☒ freebsd-14 2025-03-04 04:52:46Z Build failure: exited 1
- ☒ freebsd-14 2025-03-03 05:05:53Z Build failure: exited 1
- ☒ freebsd-14 2025-03-03 02:31:36Z Build failure: stopped 1
- ☒ freebsd-14 2025-03-02 07:06:25Z Build failure: exited 1
- ☒ freebsd-14 2025-03-01 02:59:45Z Build failure: exited 1
- ☒ freebsd-14 2025-02-28 09:54:27Z Build failure: exited 1
- ☒ freebsd-14 2025-02-28 04:16:28Z Build failure: stopped 1
- ☒ freebsd-14 2025-02-27 04:41:12Z Build failure: exited 1
- ☒ freebsd-14 2025-02-26 03:40:45Z Build failure: exited 1
- ☒ freebsd-14 2025-02-25 04:12:18Z Build failure: exited 1
- ☒ freebsd-14 2025-02-25 02:27:00Z Build failure: stopped 1
- ☒ freebsd-14 2025-02-24 04:42:11Z Build failure: exited 1
- ☒ freebsd-14 2025-02-23 06:19:13Z Build failure: exited 1
- ☒ freebsd-14 2025-02-22 03:16:43Z Build failure: exited 1
- ☒ freebsd-14 2025-02-21 03:21:09Z Build failure: exited 1
- ☒ freebsd-14 2025-02-20 08:58:11Z Build failure: exited 1
- ☒ freebsd-14 2025-02-20 03:39:25Z Build failure: stopped 1
- ☒ freebsd-14 2025-02-19 08:30:37Z Build failure: exited 1
- ☒ freebsd-14 2025-02-19 03:51:15Z Build failure: stopped 1
- ☒ freebsd-14 2025-02-18 03:37:53Z Build failure: exited 1
- ☒ freebsd-14 2025-02-17 02:50:08Z Build failure: exited 1
- ☒ freebsd-14 2025-02-16 02:45:40Z Build failure: exited 1
- ☒ freebsd-14 2025-02-15 02:18:16Z Build failure: exited 1
- ☒ freebsd-14 2025-02-14 02:56:48Z Build failure: exited 1
- ☑ freebsd-14 2025-02-13 02:16:43Z unipi.hvt
SHA256:a3098adbb51471080e153c8d6abc77e87de0da04559d503a34753ca3de3d8550
(9.81MB) - ☑ freebsd-14 2025-02-06 02:26:42Z unipi.hvt
SHA256:fa8965a59244fa2376bc00e0fd4ee8881429fffdd7458b3cf394ce209fa2afa8
(9.8MB) - ☒ freebsd-14 2025-02-05 02:30:50Z Build failure: stopped 1
- ☑ freebsd-14 2025-02-04 03:04:01Z unipi.hvt
SHA256:a7afede1069e7a41ce6e458d927dba2c83a889f822c7cd8a3a47aa7595a6e5b1
(9.8MB) - ☑ freebsd-14 2025-02-02 03:28:57Z unipi.hvt
SHA256:d8aff3d9847cb3823ab83fc5d0e0439284cfcbf197cc909a3b82871bf220a105
(9.8MB) - ☑ freebsd-14 2024-12-24 02:03:04Z unipi.hvt
SHA256:b76ac7b3a0a8d4afda813d286d19db24f8236f48a9e7844ee8bf859642129f52
(9.8MB) - ☑ freebsd-14 2024-12-10 03:13:59Z unipi.hvt
SHA256:00583bb21b854e86c76ba0f8ca1c55e2965734bd3970d360bc3b2dae2e9be33d
(9.8MB) - ☒ freebsd-14 2024-12-05 02:25:30Z Build failure: exited 125
- ☒ freebsd-14 2024-12-04 01:13:21Z Build failure: exited 125
- ☒ freebsd-14 2024-12-03 02:02:50Z Build failure: exited 125
- ☒ freebsd-14 2024-12-02 02:28:20Z Build failure: exited 125
- ☒ freebsd-14 2024-12-01 03:20:27Z Build failure: exited 125
- ☒ freebsd-14 2024-11-30 02:09:46Z Build failure: exited 125
- ☑ freebsd-14 2024-11-28 01:10:27Z unipi.hvt
SHA256:a411591604e77ac27faa51b0301f3c75e3a66b4767bbf99540de38ec21514993
(9.8MB) - ☑ freebsd-14 2024-11-15 01:57:54Z unipi.hvt
SHA256:8111cfc89d335995d4699e01984bc526ff62110d9c4d49a4143e2dc772649f8f
(9.8MB) - ☒ freebsd-14 2024-11-08 00:58:22Z Build failure: exited 1
- ☑ freebsd-14 2024-11-07 01:44:20Z unipi.hvt
SHA256:9eef25393e4ede830f7596dfb4b7f42c148fb6c82df4209529fec79076dfad24
(9.8MB) - ☑ freebsd-14 2024-10-24 00:39:47Z unipi.hvt
SHA256:06ea3bc7a6d1c32ce7361dba1592c8c766b5e7b8684b6e422da291d20bad16f0
(9.8MB) - ☑ freebsd-14 2024-10-23 00:38:51Z unipi.hvt
SHA256:cf254b5daaacc452a89862ba7077e2d22cfb85288cbe5d6ffb7d3c903b5e40ba
(9.8MB) - ☑ freebsd-14 2024-10-14 11:31:26Z unipi.hvt
SHA256:d6f059bb9b377530033768eab23953860ada499f00b0fa9f1ec4a0c1902d5ef7
(9.8MB)
Excluding failed builds here.