Skip to content

Latest commit

 

History

History
80 lines (63 loc) · 2.59 KB

README.md

File metadata and controls

80 lines (63 loc) · 2.59 KB

CompanyKit

This project is about delivering a ready-to-use IT infrastructure suitable for bootstrapping a small company, all self-hosted and supported by Open Source.

The first step consists in the generation of the configuration files relevant to the initial set of services:

  • Central authentication with OpenLDAP
  • DNS zone with BIND
  • E-Mail infrastructure:
  • Groupware with Nextcloud (CalDAV calendaring...)
  • Development server with Gitea
  • Video-conferencing with Jitsi Meet
  • Public website
  • Reverse-proxy with Nginx

Target Platform

The initial target platform is for a NetBSD/EdgeBSD NVMM hypervisor, and a collection of guest VMs, with the software deployed with pkgsrc.

Requirements

The goal is to be able to host everything on a single physical server, with a single public IP.

Guest VMs

Hostname Purpose
auth LDAP central authentication server
cloud Nextcloud groupware instance
git Development server
mail Mail server (sending and receiving)
meet Video-conferencing server (all in one)
mx MX and anti-spam service (incoming)
rproxy Reverse proxy for the infrastructure
www Public web server

Roadmap

Ultimately, this project should be able to host multiple companies, with the same set of services, on the same server.

This will be achieved as follows:

  • E-Mail services:
    • Incoming e-mail can be routed by a frontal MX service
  • HTTP services can be routed with virtual hosting through a frontal reverse proxy:
    • Groupware
    • Public website
    • Video-conferencing

Scaling

Some of the services hosted support scaling in different ways, and may be adapted in order to accommodate growing setups.

  • Central authentication:
    • LDAP databases can be mirrored on slave servers.
  • DNS:
    • Slave servers can easily be deployed.
  • Video-conferencing:
    • Jitsi Meet offers a dedicated video relaying service, which can be spread across different hosts in order to serve more rooms in parallel.