teapot

module
v0.0.29 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 21, 2026 License: AGPL-3.0

README

Welcome to the Teapot monorepo. This repository contains all software written
for teapot.ovh, listed below:

- `ccmd`: a Kubernetes Cloud Controller Manager (CCM) to properly set the
  InternalIP and ExternalIP fields on our cluster nodes. The InternalIP is
  computed deterministically from the node's hostname, while the ExternalIP
  is resolved via DDNS. Our clusters are IPv4-only and support IPv6 services
  via taiga (TBD).

- `netd`: a minimal Kubernetes CNI that sets up a Wireguard mesh across all
  nodes (depends on ccmd for the ExternalIP) and configures the host's CNI
  to properly assign IPs to pods with the expected routes.

- `loadbalancerd`: a minimal Kubernetes load balancer that sends ARP packets
  for all ExternalIPs on any service of type LoadBalancer. Yes, it's actually
  not doing any load balancing at all between nodes. That's because we expect
  DNS to do the heavy lifting for our setup. Each node is in a different NAT
  LAN and will expose all services. The clients will pick a random DNS WAN IP
  to connect to.

- `bottind`: A LDAP server with storage backed by PostgreSQL. This is used as
  the authentication backend. It's a stripped down, mostly rewritten fork of
  Deuxfleurs's bottin which you can find at:
    https://git.deuxfleurs.fr/Deuxfleurs/bottin
  We removed support many features we don't need, including: TLS, insecure
  password hashes, Consul backend (swapped with psql). A lot of the business
  logic has been rewritten/improved. Configuration has been adapted to our style.

- `logd`: a log storage with rotation and compression. Can receive logs from
  fluent-bit.

- `kontakted` (WIP, needs adapatation to the monorepo): a self-service/admin
  panel to manage user's credentials/details stored in LDAP.

- `filesd` (WIP): file storage service that supports multiple backends (S3,
  custom gRPC planned) to access and store a variety of files. Accessible via
  WebDAV, Web (WIP), rsync (TBD), SFTP (TBD).

- `docsearchd` (TBD): indexing and search service built on top of filesd to
  quickly search through pdf documents.

-------------------------------------------------------------------------------

Bazel usage:

To generate basically all build files with gazelle:

$ bazel run //:gazelle

When you want to add a Python dependency, add it to requirements.txt.raw, then:

$ bazel run //:gazelle_python_manifest.update

Then just re-run gazelle as normal and all imports should be recognized and
added as dependencies.

Directories

Path Synopsis
cmd
alertd command
bottind command
calendard command
ccmd command
desecd command
filesd command
kontakted command
loadbalancerd command
logd command
netd command
lib
cmd
ldapsrv/goldap
this file contains a lot of generated code for LDAP structures, inherited from the go-ldap library.
this file contains a lot of generated code for LDAP structures, inherited from the go-ldap library.
log
run
ui
webdav
Package webdav provides a client and server WebDAV filesystem implementation.
Package webdav provides a client and server WebDAV filesystem implementation.
webdav/caldav
Package caldav provides a client and server CalDAV implementation.
Package caldav provides a client and server CalDAV implementation.
webdav/internal
Package internal provides low-level helpers for WebDAV clients and servers.
Package internal provides low-level helpers for WebDAV clients and servers.
service
ccm
log
net

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL