Skip to content

Instantly share code, notes, and snippets.

@drazik
Last active January 27, 2018 20:42
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save drazik/64388e0de970b7d7b65e2e0c22a3cf42 to your computer and use it in GitHub Desktop.
Save drazik/64388e0de970b7d7b65e2e0c22a3cf42 to your computer and use it in GitHub Desktop.
Getting started Cozy

Getting started Cozy

D'abord, on va créer un dossier .cozy dans ton dossier user :

mkdir ~/.cozy

Ce dossier accueillera différentes choses propres à Cozy.

Installation de Docker et lancement de CouchDB

En premier lieu, il faut installer Docker, qui servira à lancer la base de données CouchDB. Ça dépend de l'OS utilisé. Il faut donc chercher dans la doc de Docker ta plateforme et suivre les instructions.

Il faut ensuite lancer CouchDB :

docker run -d \
  --name cozy-stack-couch \
  -p 5984:5984 \
  -v $HOME/.cozy/couch:/opt/couchdb/data \
  apache/couchdb:2.1

Il faut ensuite créer les différentes bases :

curl -X PUT http://127.0.0.1:5984/{_users,_replicator,_global_changes}

Installation de cozy-stack

Il faut d'abord installer Go. Si tu ne sais pas si Go est installé sur ton système, essaye de lancer un go --help. Si tu as un résultat, alors tu as Go. Sinon, il faut que tu recherche dans la doc de Go ou de ton système comment l'installer.

Une fois que tu as Go, tu peux récupérer cozy-stack :

go get -u github.com/cozy/cozy-stack

Ça prend un peu de temps. Tu peux en profiter pour ajouter le dossier de binaires de Go à ton PATH. Pour ça, sur Linux, tu peux ajouter la ligne suivante à ton .bashrc, .zshrc ou autre .*rc :

export PATH="$(go env GOPATH)/bin:$PATH"

Une fois que le téléchargement de cozy-stack est terminé, tu peux lancer un cozy-stack --help pour vérifier que tout est bon (il faudra lancer un nouveau terminal pour que celui-ci ait le bon PATH).

Configurer cozy-stack

Ici il faut créer un fichier cozy.yaml dans lequel tu peux copier le contenu du fichier cozy.yaml ci-dessous.

Ensuite, il faut remplacer toutes les occurences de <user> par le nom de ton dossier home.

Il faut ensuite créer le dossier ~/.cozy/storage et le dossier ~/.cozy/scripts :

mkdir ~/.cozy/{storage,scripts}

Enfin, il faut créer un fichier ~/.cozy/scripts/konnector-node-run.sh dans lequel il faudra copier le contenu du fichier konnector-node-run.sh ci-dessous. En remplaçant <path_to_node_bin> par le chemin vers ton binaire Node, et <user> par le nom de ton dossier home.

Ici, si tout est bon, alors lorsque tu lance un cozy-stack config print, tu dois voir un JSON de ta configuration s'afficher.

Créer une instance de cozy-stack

Pour créer une nouvelle instance, il faut d'abord lancer la stack ;

cozy-stack serve

Puis lancer la commande suivante :

cozy-stack instances add --dev --passphrase cozy --apps drive,photos,settings cozy.tools:8080 --email <email>

Cela ajoutera une instance de Cozy avec les applications Drive, Photos et Paramètres.

Lancer l'instance crée

Pour lancer l'instance :

cozy-stack serve

Puis rends-toi sur cozy.tools:8080 dans ton navigateur. Le mot de passe de ton instance est "cozy".

Installer une application

Premièrement, il faut cloner le repository de l'application dans le dossier de ton choix :

cd <somewhere>
git clone <repository_url>
cd <newly_created_directory>

Ensuite, il faut installer les dépendances du projet :

yarn install

Puis compiler les assets. Ici, la commande diffère selon les projets, donc le mieux est d'aller voir dans les scripts du package.json. Disons que le script s'appelle watch :

yarn watch

Un dossier build a du être créé. On va installer l'application dans la stack en utilisant ce dossier. Ici, prenons l'exemple de cozy-bank :

cozy-stack apps install bank file:///home/<user>/<path_to_cozy_bank>/build

Cela aura pour effet de créer un nouveau dossier bank dans ~/.cozy/storage/cozy.tools:8080/.cozy_apps. Dans ce dossier se trouve un autre dossier qui porte un nom du style 0.0.2-AbugPePXRC. Ce dossier contient une copie du dossier build. Pour développer, ça ne va pas être pratique car il faudra le remplacer à chaque modification. C'est pour cette raison qu'on va le remplacer par un lien symbolique vers le dossier build :

rm -rf ./0.0.2-machin
ln -s <path_to_bank>/build 0.0.2-machin

L'application sera maintenant toujours synchro avec tes modifications dans ton dossier de dev.

Voilà !

# cozy-stack configuration file
# server host - flags: --host
host: localhost
# server port - flags: --port -p
port: 8080
# how to structure the subdomains for apps - flags: --subdomains
# values:
# - nested, like https://<app>.<user>.<domain>/ (well suited for self-hosted with Let's Encrypt)
# - flat, like https://<user>-<app>.<domain>/ (easier when using wildcard TLS certificate)
subdomains: nested
# path to the directory with the assets - flags: --assets
# default is to use the assets packed in the binary
assets: ""
admin:
# server host - flags: --admin-host
host: localhost
# server port - flags: --admin-port
port: 6060
fs:
# file system url - flags: --fs-url
# default url is the directory relative to the binary: ./storage
url: file://localhost/home/<user>/.cozy/storage
# url: swift://openstack/?UserName={{ .Env.OS_USERNAME }}&Password={{ .Env.OS_PASSWORD }}&ProjectName={{ .Env.OS_PROJECT_NAME }}&UserDomainName={{ .Env.OS_USER_DOMAIN_NAME }}
couchdb:
# CouchDB URL - flags: --couchdb-url
url: http://localhost:5984/
cache:
# url: redis://localhost:6379/1
lock:
# url: redis://localhost:6379/2
sessions:
# url: redis://localhost:6379/3
downloads:
# url: redis://localhost:6379/4
jobs:
workers: 1
# url: redis://localhost:6379/5
konnectors:
cmd: /home/<user>/.cozy/scripts/konnector-node-run.sh # run connectors with node
# cmd: ./scripts/konnector-rkt-run.sh # run connectors with rkt
# cmd: ./scripts/konnector-nsjail-run.sh # run connectors with nsjail
# oauthstate: redis://localhost:6379/6
realtime:
# url: redis://localhost:6379/7
mail:
# mail noreply address - flags: --mail-noreply-address
noreply_address: noreply@localhost
# mail smtp host - flags: --mail-host
host: localhost
# mail smtp port - flags: --mail-port
port: 1025
# mail smtp username - flags: --mail-username
#username: user
# mail smtp password - flags: --mail-password
#password: pass
# disable mail tls - flags: --mail-disable-tls
disable_tls: true
# skip the certificate validation (may be useful on localhost)
skip_certificate_validation: true
# directory with the hooks scripts - flags: --hooks
hooks: ./scripts/hooks
# Auto updates scheduler
auto_updates: false
# Registries used for applications and konnectors
registries:
- https://registry.cozy.io/
log:
# logger level (debug, info, warning, panic, fatal) - flags: --log-level
level: debug
# send logs to the local syslog - flags: --log-syslog
syslog: false
# It is possible to customize some behaviors of cozy-stack in function of the
# context of an instance (the context field of the settings document of this
# instance). Here, the "beta" context is customized with.
contexts:
beta:
# Redirect to a specific route of cozy-collect after the onboarding
onboarded_redirection: collect/#/discovery/?intro
# Redirect to the photos application after login
default_redirection: drive/#/files
# Allow to customize the cozy-bar link to the help
help_link: https://forum.cozy.io/
# Coming soon applications listed in the Cozy Bar's app panel
# Will be removed when the store will be available.
coming_soon:
store:
editor: 'Cozy'
name: 'Store'
slug: 'store'
category: 'cozy'
bank:
editor: 'Cozy'
name: 'Bank'
slug: 'bank'
category: 'partners'
# claudy actions list
claudy_actions:
- desktop
- mobile
# konnectors slugs to exclude from cozy-collect
exclude_konnectors:
- a_konnector_slug
#!/bin/bash
rundir="${1}"
cd $rundir
<path_to_node_bin> index.js > /home/<user>/.cozy/konnectors.log
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment