/0-core

Multi Node OS which requires no install.

Primary LanguageGoApache License 2.0Apache-2.0

Build Status codecov

0-core

The core of Zero-OS is 0-core, which is the Zero-OS replacement for systemd.

Branches

Releases

See the release schedule in the Zero-OS home repository.

Development setup

To run Zero-OS in a Docker container, just run the following command, which will pull the needed image as well:

docker run --privileged -d --name core -p 6379:6379 g8os/g8os-dev:1.0

To follow the container logs do:

docker logs -f core

Creating a JWT token from itsyou.online.

Login to your profile at https://itsyou.online and from the settings ( gear icon ) create an API key and copy the values.

  • Make sure you are granted acccess to greenitglobe.development.orchestrators organization at IYO.

From command line

export CLIENT_ID='<your client id>'
export CLIENT_SECRET='<your secret>'
export ORG=greenitglobe.development.orchestrators
export VALIDITY_IN_SECONDS=3600
export JWT=`curl -s -X POST "https://itsyou.online/v1/oauth/access_token?grant_type=client_credentials&client_id=${CLIENT_ID}&client_secret=${CLIENT_SECRET}&response_type=id_token&scope=user:memberof:${ORG}&validity=${VALIDITY_IN_SECONDS}"`
echo $JWT

Simply replace the CLIENT_ID and CLIENT_SECRET values with your own.

Using the Python client

Before using the client make sure the ./client/py-client is in your PYTHONPATH.

from client import Client

cl = Client(host='<IP address of Docker container running Zero-OS>', password='<JWT>')

#validate that core0 is reachable
print(cl.ping())

#then u can do stuff like
print(
    cl.system('ps -eF').get()
)

print(
    cl.system('ip a').get()
)

#client exposes more tools for disk, bridges, and container mgmt
print(
    cl.disk.list()
)

Features

v0.9

  • Boot the 0-core as init process
  • Manage disks
  • Create containers
    • Full Namespace isolation
    • Host the root filesystem of the containers via ipfs
    • Network stack dedicated
    • ZeroTier Network integration
    • Use flist file format as root metadata
  • Remotly administrate the process
    • via Python client
    • via redis

v0.10

  • change datastore for fuse filesystem from ipfs to Zero-OS Store.

v0.11

  • include of the monitoring of all processes running on the Zero-OS. It produces aggregated statistics on the processes that can be dump into a time series database and displayed used something like Grafana.

v1.0.0

  • New Flist format, the flist used in the 0-fs is now a distributed as a RocksDB database.
  • Creation of the 0-Hub, see https://github.com/zero-os/0-hub
  • Improvement of the builtin commands of 0-core and coreX

v1.1.0-alpha2

  • Lots and lots of bug fixes
  • Containers plugins
  • Unprivileged containers (still in beta)
  • Libvirt bindings
  • Processes API
  • Support multiple ZeroTier in container networking
  • Support Open vSwitch networking for both containers and KVM domains
  • corectl command line tool to manage Zero-OS from within the node

Next

See the milestones in the Zero-OS home repository: Zero-OS Milestones

Schema

Schema Plan

Documentation

All documentation is in the /docs directory, including a table of contents.

In Getting Started with Core0 you find the recommended path to quickly get up and running.