SlapOS is a general purpose overlay operating system for distributed POSIX infrastructures (Linux, xBSD, etc.) with a strong focus on service management. It is a published as Free Software under fairly permissive licensing.

SlapOS can be used to build:

- public or private cloud computing infrastructure (IaaS, PaaS, SaaS, DraaS) ;
- hyperconverged infrastructure (virtualisation of compute, storage and network) ;
- edge computing infrastructure (CDN, IoT gateway, AI offloading, cache, buffering) ;
- 4G/5G network management system (eNodeB, locale core network) ;
- resilient low latency network as a service (IPv4, IPv6, RINA) ;
- tactical cloud bubble.

SlapOS provides a compact and unified solution to automate provisioning, orchestration, monitoring, accounting, disaster recovery, invoicing, issue tracking and preventive maintenance of software services that can be deployed in data centers, edge nodes, user terminals or embedded systems, either on bare metal, container or virtual machine.

SlapOS was inspired by the ideas of convergence by Prof. Mark Burgess and of grid coordination by Prof. Christophe Cérin. Its simple recursive architecture consists of only two components:

- SlapOS Master which is installed on at least one node of the infrastructure and defines the common state shared by all nodes.
- SlapOS Node which is installed on each node of the infrastructure and ensures that node's state autonomously converges towards shared state defined in SlapOS Master.

SlapOS is part of Nexedi's software stack.

# Latest News

- 2019-02-13 - Edge und cloud im clinch (Automation & Digitalisierung)
- 2018-02-25 - Nexedi Demonstrates Open Source Network Management System based on SlapOS at MWC 2018
- 2016-06-03 - SlapOS powers "TeraLab", Institut Mines Télécom's Big Data Platform
- 2016-05-12 - SlapOS hyperconvergent OS powers "TeraLab", Institut Mines Télécom's Big Data Platform
- 2015-06-11 - Government Selects SlapOS Decentralized Cloud to Serve 30.000 users
- 2013-01-22 - Nexedi propose à Cloudwatt de déployer avec SlapOS son Cloud souverain sous 8 jours
- 2011-07-05 - SlapOS Success in Aerospace, Banking, Transportation, IT and Education
- 2010-06-14 - ViFiB Wants You to Host Cloud Computing At Home

# Getting Started

Before you try to learn SlapOS, we advice you first to read some documents that introduce the key concepts of SlapOS. This will help you a lot to learn how to use SlapOS before creating your own SlapOS service provider based on SlapOS master or slapproxy.

# Learning Track

There are several tutorials showing you how to get started and achieving specific objectives with SlapOS. All tutorials are already part of a SlapOS lecture that is given every year at Telecom Paris school of engineering. More than 200 students have already been trained with this lecture, the follow-up lecture based on Web Runner and the cloud and after cloud lecture.

This learning track (also available here) contains a sequence of lectures teaching how to setup and use of a SlapOS based system. It covers the perspectives of a system administrator, user and software developer. After finishing this learning track, you should have a ready-to-use SlapOS system and be familiar with providing both existing and custom software to users, monitoring network health as well as software service consumption.

# Lecture 1: SlapOS Introduction

This lecture will introduce SlapOS and underlying concepts. It provides both a quick overview of a SlapOS system as well as in-depth look at the architecture and minimal system requirements.

## Introduction: Theory

- SlapOS General Introduction (Presentation)
- SlapOS Technical Architecture (Presentation)
- SlapOS System Requirements (Presentation)

The SlapOS Introduction will give an technical overview over a SlapOS system explaining the philosophy and principles behind SlapOS. It also demonstrates the SlapOS Dashboard, command line utilities and the Buildout Software Profiles responsible for supplying and instantiating software on SlapOS.

The SlapOS Architecture DesignDocument will introduce the Master (COMP-Root/COMP-0) and slave (COMP-123) design along with the SlapProtocol. It will explain why software instances are created inside computer partitions and describe the means of communication between system components as well as users.

The SlapOS System Requirements includes profiles and information of required hard- and software for each type of node for setting up a minimal SlapOS network.

## Introduction Additional Readings

- SlapOS Economic Rationale (Presentation)

The SlapOS Rationale includes an analysis of on-premise and cloud-based providers of both open-source and proprietary software solutions. This is used to derive an economic baseline and operating principles for creating a cloud provider of free and open-source software. Such as ViFiB, Nexedi's cloud provider working on a SlapOS based system.

# Lecture 2: SlapOS Admin

This lecture covers setting up and configuring a minimal SlapOS network consisting of a SlapOS Master (COMP-Root) and the first network node (COMP-0). It is meant for network administrators interested in learning how to create their own SlapOS-based system for managing servers and software deployments.

## SlapOS Admin: Tutorials

- Installing SlapOS Master (COMP-Root) (Presentation)
- Installing SlapOS Node (COMP-0) (Presentation)

The Install SlapOS Master tutorial will guide through the steps of setting up the main component of a SlapOS system: The Master (COMP-Root), which is a SlapOS node itself configured by SlapProxy and running an instance of ERP5 Cloud Engine (providing the Dashboard among other things) as well as a Frontend (Apache).

The Install SlapOS Node tutorial continues the system setup by installing the first network node (COMP-0) with the Re6st Registry handling IPv6 and routing network traffic as well as another Frontend (Apache) enabling network access for users.

Completing both tutorials means setting up a minimal SlapOS system.

## SlapOS Admin: Additional Readings

- HowTo Add Software Release to SlapOS (Presentation)
- HowTo Request SSL Wildcard Certificate (Presentation)
- HowTo Access SlapOS Node over SSH (Presentation)

The additional readings cover adding software to the SlapOS Master catalog. It shows how to add a software product and release in the ERP5 Cloud Engine and make it available on SlapOS.

The HowTos on requesting a wildcard certificate and accessing a node via SSH are somewhat trivial but are included for completeness of the lecture.

# Lecture 3: SlapOS User

This lecture teaches how to use SlapOS including installation of new nodes on an existing system, manage servers, supply software and monitor system performance.

## SlapOS User :Tutorials

- Installing SlapOS Node (COMP-123) (Presentation)
- Manage a SlapOS System (Presentation)
- Monitoring a SlapOS Node (Presentation)
- Invoice SlapOS Network Usage (Planned)

The tutorial on installing a SlapOS Node (COMP-123) will guide through installing SlapOS on a regular network node from setting up IPv6 and Re6st to registering the server with a SlapOS Master. This is the standard tutorial for adding a new machine to a network.

Managing a SlapOS system shows how the Dashboard can be used to handle support requests and tickets which are generated automatically (or by users) whenever an instance or machine runs into issues causing a Promise to fail.

Monitoring a SlapOS node follows the previous tutorial and shows how to use the Monitoring app which provides a micro view into what is happening on a node partitions. It will show how to analyse a node's status, search for failing Promises and show the location of all relevant logs so issues can be adressed.

## SlapOS User: Additonal Reading

- HowTo Register on SlapOS (Presentation)
- HowTo Register on ViFiB (Presentation)
- HowTo Request ViFiB Freefib Token (Presentation)
- Classify Nodes on a Network (Presentation)
- HowTo Use SlapOS Client (Presentation)
- HowTo Format SlapOS Node (Presentation)
- HowTo Debug SlapOS Node (Presentation)

Additional readings cover topics related to setting up a node, such as registering on SlapOS (or ViFiB's commerical service), requesting a Re6st (ViFiB: FreeFib) token required during node installation and classifying nodes on a system.

Once the node is setup, HowTo use the SlapOS Client shows alternative ways of accessing and working with a node via the terminal, which is also the place to manually format a SlapOS node, for example when adding additional SSD storage. Finally, the HowTo debug a SlapOS node gives tips and tricks on where to look for logs and common issues when a node is not behaving as expected.

## SlapOS User: Software Instantiation

- HowTo Instantiate Re6st Token (Presentation
- HowTo Instantiate Re6st Registry (Presentation)
- HowTo Instantiate Frontend (Apache) (Presentation)
- HowTo Instantiate Frontend Slave (Presentation)
- HowTo Instantiate KVM (Presentation)
- HowTo Instantiate ERP5 (Presentation)
- HowTo Instantiate Webrunner (Presentation)

The instantiation section list the relevant configuration parameters of the software releases available on SlapOS by default and is more of a lookup reference to ensure, parameters are set correctly when requiring an instance and that follow-up steps are also being made aware.

# Lecture 4: SlapOS Developer

This lecture teaches how to work on software releases itself creating the software to be distributed over a SlapOS network.

## SlapOS Developer: Theory

- Understanding SlapOS Buildout (Presentation)
- Understanding SlapOS Promises (Presentation)

Developing software for SlapOS requires being familiar with Buildout and the concept of Promises. Buildout will be introduced in detail in the DesignDocument Understanding SlapOS Buildout showing how it is used to install and instantiate software from software and instance profiles. Understanding SlapOS Promises will introduce Promises, show how they are used to continuously monitor the status of a software and integrate them into a software's instance profile.

## SlapOS Developer: Tutorials

- Extending a SlapOS Software Release (Presentation)
- Creating a SlapOS Software Release (Presentation)
- Porting a Software to SlapOS (Planned)
- Upgrading a Software Release on SlapOS (Presentation)

The developer tutorials cover several angles of working with software on SlapOS starting with showing how to extend an existing release by adding parameters, components and proimses using a Webrunner.

Creating a software release and porting an existing software to SlapOS outline the required steps to create the software and instance profile required by SlapOS to deploy a software.

Lastly, Upgrading a Software Release covers the steps of adding a new release to the SlapOS catalog and triggering the propagation through the SlapOS system.

## SlapOS Developer: Additonal Readings

- Deploy Software on SlapOS Webrunner (Presentation)

Additonal readings cover basic aspects related to software development for SlapOS, such as HowTo deploy a software release on a Webrunner.

# OSTV Tutorials - NMS Learning Track

This tutorials will teach the setup and use of a Network Management System (NMS) based on SlapOS for ADMINS and Users.

- User Learning Track - understanding of how to use NMS to manage a network.
- Admin Learning Track - how to setup and use of NMS.

# Documentation

Aside from the above tutorials, a number of additional documentation provides insights into certain topics.

- Forum - is where you can ask questions.
- Design Documents - explaining concepts behind SlapOS
- Guidelines - rules for developing with and contributing to SlapOS
- Tutorials - lectures explaining how to use SlapOS (coming soon)
- HowTos - step by step explanation of certain topics (coming soon)
- Technical Notes - important informaton on certain aspects (coming soon)
- Faq - common questions about SlapOS

You may also refer to documention of certain components which SlapOS depends on:

- buildout is the community-driven, open source build technology which is used by SlapOS to specifiy software stacks which are then deployed on the Cloud. More informations at the Why Buildout page.
- supervisord is the community-drive, open source process control technology which slapgrid relies on.
- ERP5 is the open source Zope-based ERP which powers SlapOS Master to provide accounting, provisionning and billing.
- NEO is a distributed transactional NoSQL object database which provides scalability to SlapOS master.
- IPv6, while not a "open source" technology, is in the core of SlapOS. [french] Here (mirror link) is a state of the art of IPv6
- re6st is the IPv6 overlay network used by SlapOS to ensure that the graph of SlapOS nodes is alway connected.

# Source Code

SlapOS source code is split into multiple repositories:

- slapos.core written in python language provides all libraries, buildout recipes and tools (slapgrid, slapproxy) to run a SlapOS Node as well as additional buildout recipes:
  - slapos.recipe.template which provides jinja2 templating
  - slapos.libnetworkcache which provides source code and binary code caching
  - slapos.reboostrap which provides reflexive build in buildout
  - slapos.buidout which extends the default buildout language
- slapos.toolbox written in python language provides additional services to SlapOS Node (monitoring, web runner, etc.) that are not required in the core
- software profiles written in buildout language describes how to build and run vairous services (qemu, mariadb, ERP5, apache, etc.) on a SlapOS Node
- slapos.package written in shell script, python and various languages that defines how to build automatically SlapOS packages for various GNU/Linux distributions
- slapos.core/bt5 contains all additional python code and XML configuration files to create a SlapOS Master based on ERP5 source code

# Requirements

SlapOS should only only require a POSIX compatible operating system (Linux, xBSD) with a recent C/C++ compiler and python 2.7 interpreter.

Currently, SlapOS has been deployed and tested on the following operating systems:

Production | Experimental | Not tested
--- | --- | ---
Debian Ubuntu CentOS Red Hat SuSE | Android (Termux) Windows (Cygwin) ArchLinux Gentoo ChromiumOS NayuOS | OpenBSD FreeBSD NetBSD AIX Solaris

The Windows with Cygwin port will not be pursued because of inherent instabilities in how Cygwin maps shared libraries to DLL.

The Android port will be pursued.

Other ports will be considered based on market needs.

# Tests

All SlapOS tests are published on SlapOS Project Tests page.

# FAQ

- SlapOS Frequently Asked Questions
- Buildout Frequently Asked Questions
- How to Upgrade SlapOS
- How to contribute to Buildout
- How to release new Software Release
- Nexedi's recommendation for bootstrap an ERP5 Project on Webrunner

# History

We provide here a list of legacy documents that may no longer apply yet are useful to understand the history of SlapOS.

Research papers:

- SlapOS: a Multi-purpose Distributed Cloud Operating System Based on an ERP Billing Model - Jean-Paul Smets-Solanes, Christophe Cerin and Romain Courteaud - preprint submitted to IEEE 2011 International Workshop on Performance Aspects of Cloud and Service Virtualization
- [French] Integration des intergiciels de grilles de PC dans le nuage SlapOS : le cas de BOINC

Videos:

- SlapOS, A Python Powered Open Source Cloud Computing System by Yusei Tahara at PyCon Japan 2011.
- SlapOS - Reduce your sysadmin work by 80% and fly across 36 clouds by Cédric de Saint Martin at Open World Forum for Open Source Developer Conference (OSDC), France 2012.
- Mioga on SlapOS - A collaborative Extranet rises into the Clouds by Viktor Horvath at Open World Forum for Open Source Developer Conference (OSDC), France 2012.
- SlapOS, an efficient all-in-one cloud presented at FOSDEM 2013

Presentations:

- SlapOS, Distributed Cloud Computing by Rafael Monnerat at Python Brasil 2011. (Presentation Mode)
- Get started with SlapOS, the Distributed Cloud System by Rafael Monnerat and Christophe Cerin at SBAC-PAD'2011 . (Presentation Mode)

# Licence

SlapOS is Free Software, licensed under GNU GPL v3 (or later). For details, please refer to the Nexedi licensing.