cozy-stack

command module
v0.0.0-...-3f4c8ed Latest Latest
Warning

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

Go to latest
Published: Apr 15, 2024 License: AGPL-3.0 Imports: 3 Imported by: 0

README

Cozy Cloud

go.dev reference Build Status Go Report Card

What is Cozy?

Cozy Logo

Cozy is a platform that brings all your web services in the same private space. With it, your web apps and your devices can share data easily, providing you with a new experience. You can install Cozy on your own hardware where no one profiles you.

What is the Cozy-Stack

It is the core server of the Cozy platform. It consists of a single process, the Cozy stack.

Full Cozy-Stack documentation here.

The Cozy-Stack is in charge of serving the Web applications users have installed from the application store.

It provides its services through a REST API that allows to:

  • create, update, delete documents inside the database;
  • authenticate users and client applications;
  • send emails;
  • launch jobs on the server. Connectors that import data from remote websites are some sort of jobs. Jobs can be one time tasks (sending a message) or periodic tasks. Some jobs, like the connectors, that require executing third party code on the server side, are sandboxed (we use nsjail for now).

The Cozy-Stack also allows to access the database replication API, allowing to sync documents between the server and local databases, for example in mobile clients.

Two authentication methods are available:

  • Web applications running on the server get a session token when the user log in;
  • OAuth2 for other applications.

Feel free to open an issue for questions and suggestions.

Installing a cozy-stack

You can follow the Install guide and the configuration documentation.

How to contribute?

We are eager for contributions and very happy when we receive them! It can be code, of course, but it can also take other forms. The workflow is explained in the contributing guide.

Community

You can reach the Cozy Community by:

License

Cozy is developed by Cozy Cloud and distributed under the AGPL v3 license.

Documentation

Overview

Cozy Cloud is a personal platform as a service with a focus on data. Cozy Cloud can be seen as 4 layers, from inside to outside:

1. A place to keep your personal data

2. A core API to handle the data

3. Your web apps, and also the mobile & desktop clients

4. A coherent User Experience

It's also a set of values: Simple, Versatile, Yours. These values mean a lot for Cozy Cloud in all aspects. From an architectural point, it declines to:

- Simple to deploy and understand, not built as a galaxy of optimized microservices managed by kubernetes that only experts can debug.

- Versatile, can be hosted on a Raspberry Pi for geeks to massive scale on multiple servers by specialized hosting. Users can install apps.

- Yours, you own your data and you control it. If you want to take back your data to go elsewhere, you can.

Directories

Path Synopsis
cmd
Package cmd is where the CLI commands and options are defined.
Package cmd is where the CLI commands and options are defined.
browser
Package browser provides utilities for interacting with users' browsers.
Package browser provides utilities for interacting with users' browsers.
model
app
bi
bitwarden
Package bitwarden is used for managing the ciphers, encrypted on the client side.
Package bitwarden is used for managing the ciphers, encrypted on the client side.
contact
Package contact is for managing the io.cozy.contacts documents and their groups.
Package contact is for managing the io.cozy.contacts documents and their groups.
instance
Package instance is for the instance model, with domain, locale, settings, etc.
Package instance is for the instance model, with domain, locale, settings, etc.
job
Package job is for the scheduling and execution of asynchronous jobs via the workers.
Package job is for the scheduling and execution of asynchronous jobs via the workers.
note
Package note is the glue between the prosemirror models, the VFS, redis, the hub for realtime, etc.
Package note is the glue between the prosemirror models, the VFS, redis, the hub for realtime, etc.
notification/huawei
Package huawei can be used to send notifications via the Huawei Push Kit APIs.
Package huawei can be used to send notifications via the Huawei Push Kit APIs.
oauth
Package oauth declares the OAuth client, and things related to them, from the certification of the flagship app to the creation of the access codes in the OAuth2 flow.
Package oauth declares the OAuth client, and things related to them, from the certification of the flagship app to the creation of the access codes in the OAuth2 flow.
office
Package office is for interactions with an OnlyOffice server to allow users to view/edit their office documents online.
Package office is for interactions with an OnlyOffice server to allow users to view/edit their office documents online.
permission
Package permission is used to store the permissions for each webapp, konnector, sharing, etc.
Package permission is used to store the permissions for each webapp, konnector, sharing, etc.
sharing
Package sharing is where all the magic happen when documents/files are shared between several Cozy instances, from managing the recipients to replicating the changes.
Package sharing is where all the magic happen when documents/files are shared between several Cozy instances, from managing the recipients to replicating the changes.
vfs
Package vfs is for storing files on the cozy, including binary ones like photos and movies.
Package vfs is for storing files on the cozy, including binary ones like photos and movies.
vfs/vfsafero
Package vfsafero is the implementation of the Virtual File System by using afero.
Package vfsafero is the implementation of the Virtual File System by using afero.
vfs/vfsswift
Package vfsswift is the implementation of the Virtual File System by using Swift from the OpenStack project.
Package vfsswift is the implementation of the Virtual File System by using Swift from the OpenStack project.
pkg
assets/statik
Package statik contains an HTTP file system that works with zip contents.
Package statik contains an HTTP file system that works with zip contents.
config/config
Package config is where the configuration from the configuration files, the command line parameters, and the environment variables is used to fill some structs, and initializes connections (to Swift for example).
Package config is where the configuration from the configuration files, the command line parameters, and the environment variables is used to fill some structs, and initializes connections (to Swift for example).
consts
Package consts is only for declaring some constants used by the stack, like some slugs, IDs, doctypes, etc.
Package consts is only for declaring some constants used by the stack, like some slugs, IDs, doctypes, etc.
couchdb/stream
The stream package can be used for streaming CouchDB responses in JSON format from the CouchDB cluster to a client, with the stack doing stuff like filtering some fields.
The stream package can be used for streaming CouchDB responses in JSON format from the CouchDB cluster to a client, with the stack doing stuff like filtering some fields.
jsonapi
Package jsonapi is for using the JSON-API format: parsing, serialization, checking the content-type, etc.
Package jsonapi is for using the JSON-API format: parsing, serialization, checking the content-type, etc.
manager
Package manager is used for interacting with the cloudery.
Package manager is used for interacting with the cloudery.
metadata
Package metadata is used for manipulating the cozyMetadata field of the documents.
Package metadata is used for manipulating the cozyMetadata field of the documents.
safehttp
Package safehttp can be used for making http requests when the hostname is not trusted (user inputs).
Package safehttp can be used for making http requests when the hostname is not trusted (user inputs).
shortcut
Package shortcut can be used to manipulate files in the .url format (from windows).
Package shortcut can be used to manipulate files in the .url format (from windows).
statik
Package contains a program that generates code to register a directory and its contents as zip data for statik file system.
Package contains a program that generates code to register a directory and its contents as zip data for statik file system.
scripts
tests
web
Package web Cozy Stack API.
Package web Cozy Stack API.
apps
Package apps is the HTTP frontend of the application package.
Package apps is the HTTP frontend of the application package.
auth
Package auth provides register and login handlers
Package auth provides register and login handlers
bitwarden
Package bitwarden exposes an API compatible with the Bitwarden Open-Soure apps.
Package bitwarden exposes an API compatible with the Bitwarden Open-Soure apps.
conncheck
Package conncheck returns HTTP 204 No Content for connectivity check
Package conncheck returns HTTP 204 No Content for connectivity check
contacts
Package contacts exposes a route for the myself document.
Package contacts exposes a route for the myself document.
data
Package data provide simple CRUD operation on couchdb doc
Package data provide simple CRUD operation on couchdb doc
files
Package files is the HTTP frontend of the vfs package.
Package files is the HTTP frontend of the vfs package.
instances
Package instances is used for the admin endpoint to manage instances.
Package instances is used for the admin endpoint to manage instances.
middlewares
Package middlewares is used for the HTTP middlewares, ie functions that takes an echo context to do stuff like checking permissions or caching requests.
Package middlewares is used for the HTTP middlewares, ie functions that takes an echo context to do stuff like checking permissions or caching requests.
notes
Package notes is about the documents of cozy-notes.
Package notes is about the documents of cozy-notes.
permissions
Package permissions is the HTTP handlers for managing the permissions on a Cozy (creating a share by link for example).
Package permissions is the HTTP handlers for managing the permissions on a Cozy (creating a share by link for example).
public
Package public adds some public routes that can be used to give information to anonymous users, or to the not yet authentified cozy owner on its login page.
Package public adds some public routes that can be used to give information to anonymous users, or to the not yet authentified cozy owner on its login page.
settings
Package settings regroups some API methods to facilitate the usage of the io.cozy settings documents.
Package settings regroups some API methods to facilitate the usage of the io.cozy settings documents.
sharings
Package sharings is the HTTP routes for the sharing.
Package sharings is the HTTP routes for the sharing.
shortcuts
Package shortcuts is about the .url shortcuts.
Package shortcuts is about the .url shortcuts.
status
Package status is here just to say that the API is up and that it can access the CouchDB databases, for debugging and monitoring purposes.
Package status is here just to say that the API is up and that it can access the CouchDB databases, for debugging and monitoring purposes.
version
Package version gives informations about the version of the cozy-stack
Package version gives informations about the version of the cozy-stack
worker
exec
Package exec is for the exec worker, which covers both konnector and service execution.
Package exec is for the exec worker, which covers both konnector and service execution.
log
share
Package share is where the workers for Cozy to Cozy sharings are defined.
Package share is where the workers for Cozy to Cozy sharings are defined.
sms

Jump to

Keyboard shortcuts

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